Ha Pengantar Computer Graphics Algoritma Dasar Vincent Suhartono Bacaan Teknologi Informasi
Pengantar Computer Graphics Algoritma Dasar Penulis: Vincent Suhartono Bacaan Teknologi Informasi
Pengantar Computer Graphics: Bacaan Teknologi Informasi Penulis : Vincent Suhartono ISBN : 978-62-7273-3-3 Editor : Claudia Clarentia Ciptohartono Penunting : Totok Sutoo Desain Sampul dan Tata Letak : Claudia Clarentia Ciptohartono Penerbit : CV Mulia Jaa Redaksi : Jalan Anggajaa II No. 29-A, Condong Catur Kabupaten Sleman, Yogakarta Telp : 82-4994-973 Email : cv.muliajaa29@ahoo.com Cetakan Pertama April 26 Hak Cipta dilindungi undang-undang Dilarang memperbanak kara tulis ini dalam bentuk dan dengan cara apapun tanpa ijin tertulis dari penerbit. 2
KATA PENGANTAR Puji sukur, penulis panjatkan kehadirat Allah YME ang telah memberikan segala karunia ang tak terhingga sehingga penulis dapat menelesaikan buku ini. Buku ini ditulis dengan maksud untuk membantu pelajar dan mahasiswa sehingga dapat mengerti dan memahami seluk beluk Computer Graphics meskipun hana dalam bentuk teori ang masih sangat mendasar. Terima kasih sebesar-besarna kepada semua pihak ang telah membantu dalam pembuatan buku ini, aitu:. Universitas Dian Nuswantoro 2. Koordinator Matakuliah Computer Graphics 3. Teman-teman ang tidak dapat disebutkan satu per satu namana Kami menadari bahwa dalam buku ini masih memiliki sejumlah kekurangan. Oleh karena itu, saran dan komentar sangat dinantikan untuk perbaikan selanjutna. Meskipun demikian, kami tetap berharap semoga buku ini dapat membantu dan bermanfaat. Semarang, 2 Januari 26 Penulis iii 3
DAFTAR ISI KATA PENGANTAR... iii DAFTAR ISI... iv DAFTAR GAMBAR... vii DAFTAR TABEL... i Bab... 2 Pendahuluan... 2. Aplikasi Computer Graphics... 4.2 Graphics Languages... 2.3 Sistem Pemrograman Grafis... 22.4 Komponen Graphics Librar... 22 Ringkasan Bab... 24 Soal-Soal Latihan... 25 Bab 2... 26 Spesifikasi Graphics Primitif... 26 2. Piel (Picture Element)... 27 2.2 Warna... 3 2.3 Garis... 33 Bab 3... 37 Algoritma, Analisa, dan Tampilan Graphics Dua Dimensi (2D)... 37 3. Algoritma Brute Force... 38 3.2 Algoritma DDA (Digital Diferential Analzer)... 48 3.3 Algoritma Bressenham... 53 3.4 Lingkaran... 72 3.4. Simetris Delapan Titik... 74 3.4.2 Algoritma Midpoint... 75 3.5 Polgon... 82 iv 4
3.6 Filling Polgon... 84 3.6. Scan Line Polgon Fill Algorithms... 84 3.6.2 Boundar-Fill Algorithm... 2 3.6.3 Flood-Fill Algorithm... 8 Ringkasan Bab 3... Soal-Soal Latihan... Bab 4... 3 Atribut Output Primitif... 3 4. Atribut Titik... 4 4.2 Atribut Garis... 4 4.3 Tipe Garis... 4 4.3. Ukuran Garis... 5 4.3.2 Pen dan Brush... 6 4.4 Warna Garis... 7 Ringkasan Bab 4... 8 Soal-Soal Latihan... 9 Bab 5... 2 Transformasi Geometri... 2 5. Translasi (Pergeseran)... 22 5.2 Scalling (Penskalaan)... 23 5.3 Rotasi (Perputaran)... 25 5.4 Sistem Koordinat Homogen 2D... 26 5.5 Komposisi Matrik Transformasi 2D... 29 5.8 Transformasi Geometri 3D... 34 Ringkasan Bab 5... 38 Soal-Soal Latihan... 4 Daftar Istilah... 42 5 v
Daftar Pustaka... 44 Biografi Penulis... 45 vi 6
DAFTAR GAMBAR Gambar. Aplikasi grafika komputer pada bidang hiburan berupa film-film animasi 3D... 4 Gambar. 2 (a) Visualisasi Scientific (b) Visualisasi aliran turbulen dari angin topan... 5 Gambar. 3 Pembelajaran transformasi Fourier untuk peningkatan kualitas citra... 7 Gambar. 4 Gambar kartun, digambar menggunakan Paint under window... 8 Gambar. 5 Hasil perbaikan citra ang terkena noise domain frekuensi menggunakan transformasi Fourier... 9 Gambar. 6 GUI dari aplikasi-aplikasi pada sistem operasi Windows XP... 2 Gambar. 7 Sistem Pemrograman Grafis... 22 Gambar 2. Laar berisi M baris piksel dan N kolom piksel. Sebuah piksel (titik hitam) terletak pd (3,2).... 27 Gambar 2. 2 Garis lurus ang melalui titik P (, ) dan P 2( 2, 2). 34 Gambar 3. Pembulatan nilai dilakukan karena posisi piel adalah bulat (integer)... 39 Gambar 3. 2 Titik-titik pembentuk garis hasil perhitungan menggunakan algoritma Brute Force digambar pada raster graphics.... 43 Gambar 3. 3 (a) Garis dengan kemiringan m >, tampak bahwa garis tidak kontinu (b) setelah dilakukan interpolasi garis menjadi kontinu.... 43 Gambar 3. 4 Titik-titik pembentuk garis hasil perhitungan menggunakan algoritma DDA digambar pada raster graphics... 52 vii 7
Gambar 3. 5 Garis mempunai kemiringan < m <, pada titik = p+, garis berada diantara dua titik E dan NE ang mempunai titik tengah di M.... 54 Gambar 3. 6 Titik-titik pembentuk garis dengan kemiringan < m <, hasil perhitungan menggunakan algoritma Bressenham ang digambar pada raster graphics.... 6 Gambar 3. 7 Titik-titik pembentuk garis dengan kemiringan < m <, hasil perhitungan menggunakan algoritma Bressenham ang digambar pada raster graphics.... 64 Gambar 3. 8 Terjadina gaps ang disebabkan adana perubahan gradient menghasilkan posisi koordinat piksel ang tidak merata... 73 Gambar 3. 9 Delapan titik simetris pada lingkaran... 74 Gambar 3. Garis lingkaran berada diantara titik ( k+, k) dan ( k+, k )... 75 Gambar 3. Posisi piksel pada pembentukan lingkaran dengan titik pusat (,) dan jari-jari 8... 82 Gambar 3. 2 Polgon sederhana dan polgon tidak sederhana 83 Gambar 3. 3 : Permukaan bola, torus dan teko ang terbentuk dari banak polgon.... 84 Gambar 3. 4 Metode scan-line... 85 Gambar 3. 5 Aturan paritas ganjil-genap untuk mengisi warna 86 Gambar 3. 6 Perhitungan paritas pada verteks a, b, c, dan d... 87 Gambar 3. 7 Polgon dengan sisi-sisi horisontal... 88 Gambar 3. 8... 92 Gambar 3. 9... 93 Gambar 3. 2... 94 Gambar 3. 2... 95 Gambar 3. 22... 95 Gambar 3. 23... 96 viii 8
Gambar 3. 24... 96 Gambar 3. 25... 97 Gambar 3. 26... 97 Gambar 3. 27... 98 Gambar 3. 28... 98 Gambar 3. 29... 99 Gambar 3. 3... 99 Gambar 3. 3... Gambar 3. 32... Gambar 3. 33... Gambar 3. 34... Gambar 3. 35... 2 Gambar 3. 36 Metode Boundar-Fill... 3 Gambar 3. 37... 4 Gambar 3. 38... 4 Gambar 3. 39... 5 Gambar 3. 4... 5 Gambar 3. 4... 6 Gambar 3. 42... 7 Gambar 3. 43... 8 Gambar 3. 44 penggantian warna obek menggunakan Flood-Fill Algorithm. (a) lingkaran berwarna merah, segitiga berwarna hijau dan persegi berwarna biru. Obek tersebut warnana diubah menjadi (b) lingkaran berwarna abu-abu, segitiga berwarna kuning dan persegi berwarna coklat... 8 Gambar 4. Tpe garis : solid line, dashed line, dotted line dan dashed-dotted line... 5 i 9
Gambar 4. 2 Ukuran garis dari ¼ pt sampai dengan 6 pt pada software aplikasi Microsoft Word.... 6 Gambar 4. 3 Beberapa bentuk pen atau brush pada paket program aplikasi Paint... 6 Gambar 5.... 3 Gambar 5. 2... 3 Gambar 5. 3... 3 Gambar 5. 4... 32 Gambar 5. 5... 33
DAFTAR TABEL Tabel 2.... 28 Tabel 2. 2... 29 Tabel 2. 3... 3 Tabel 2. 4... 32 Tabel 2. 5... 33 i
Bab Pendahuluan TUJUAN PEMBELAJARAN Agar pembaca mempunai wawasan mengenai aplikasi grafika komputer di berbagai bidang. OUTCOME PEMBELAJARAN Pembaca mampu menjelaskan pengertian grafika komputer dan bisa memberikan beberapa contoh aplikasi grafika komputer di berbagai bidang. Pendahuluan Berbagai informasi ang divisualisasikan dalam bentuk gambar sudah ada jauh sebelum komputer ditemukan. Sebagai contoh, gambar-gambar zaman purba ang masih terdapat pada guagua, juga tulisan Hieroglph pada zaman mesir kuno juga dalam bentuk gambar. Pepatah mengatakan bahwa: Satu gambar dapat menerangkan kata dan tentu lebih bisa menerangkan bilangan. Suatu laporan (informasi) ang disajikan dalam bentuk angkaangka sangat menulitkan pembaca untuk bisa memahami secara cepat, bahkan konsentrasi akan menurun dalam waktu ang tidak begitu lama. Untuk menghindari hal ini maka informasi tersebut 2
perlu diubah hingga menjadi suatu gambaran grafis, sehingga jauh lebih mudah untuk dicerna. Masalah ini menjadi sangat penting jika laporan tadi akan dipergunakan sebagai acuan pengambilan keputusan, seperti misalna untuk pembelian. Presentasi ang baik biasana disertai dengan visualisasi terutama untuk tabel dengan bilangan ang sangat banak. Juga arah pengembangan komputer sendiri tidak lepas dari visualisasi grafis. Sebagai contoh adalah GUI (Graphical User Interface), ang kita pakai setiap hari dalam penggunaan komputer. Lebih jauh lagi komputer sebagai bagian dari multimedia dan broadcasting dituntut untuk dapat mengolah gambar ang bergerak (video). Pengetahuan tentang grafik programming sangat diperlukan bahkan sebagai sarat untuk pengolahan gambar. Sehingga perlu adana pengantar atau penggalian kembali topik akan grafika komputer. Grafika komputer (Computer graphics) adalah bagian dari ilmu komputer ang mempelajari cara-cara pembuatan dan manipulasi gambar secara digital, sehingga dapat memudahkan komunikasi antara manusia dan komputer, atau manusia dengan manusia melalui gambar-gambar, bagan-bagan, tabel dan lain-lain. Teknikteknik ang dipelajari dalam grafika komputer adalah teknik-teknik bagaimana membuat atau menciptakan gambar dengan menggunakan komputer. Bentuk sederhana dari grafika komputer adalah grafika komputer 2D, dengan teknik-teknik tertentu kemudian berkembang menjadi grafika komputer 3D. 3
. Aplikasi Computer Graphics Peran grafika komputer dalam menghasilkan gambar sangat penting sekali untuk perkembangan berbagai software aplikasi. Banak sekali aplikasi-aplikasi tertentu ang memanfaatkan grafika komputer, diantarana adalah:. Hiburan (Entertainment) Saat ini grafika komputer banak digunakan untuk menunjang pembuatan film, video musik, taangan televisi, motion picture, animasi, dan game (permainan). Gambar. Aplikasi grafika komputer pada bidang hiburan berupa film-film animasi 3D Sumber:http://www.google.com/imgres?imgurl=http://hamdi.files.wordpress. com/28/2/ upinipinbajubaru.jpg 4
2. Visualisasi Visualisasi (visualization) adalah teknik-teknik dalam pembuatan gambar, diagram atau animasi untuk mengkomunikasikan suatu informasi. Pada saat ini visualisasi telah menjadi cara ang efektif dalam mengkomunikasikan data atau ide abstrak maupun nata sehingga cepat berkembang dan banak dipakai untuk keperluan ilmu pengetahuan, rekaasa, visualisasi disain produk, pendidikan, multimedia interaktif, kedokteran, dan lain-lain. Gambar. 2 (a) Visualisasi Scientific (b) Visualisasi aliran turbulen dari angin topan Sumber : http://id.wikipedia.org/wiki/visualisasi 5
3. Computer-Aided Design (CAD) Grafika komputer digunakan dalam proses analisis dan desain, khususna untuk sistem arsitektural dan engineering dalam bentuk aplikasi CAD (Computer-Aided Design). CAD banak digunakan untuk mendesain bangunan, mobil, kapal, pesawat terbang, gedung, komputer, alat-alat elektronik, peralatan rumah tangga, dan berbagai produk lainna. Contoh perangkat lunak : AutoCAD, 3D Studio Ma dan lain-lain. 4. Computer-Aided Sofware Engineering (CASE) CASE digunakan dalam bidang sofware engineering. CASE biasana digunakan untuk memodelkan user requirement, pemodelan basisdata, workflow dalam proses bisnis, struktur program, dan sebagaina. Contoh perangkat lunak: Rational Rose, SBase Power Designer dan lain-lain. 5. Virtual Realit Virtual Realit adalah lingkungan virtual ang seakan-akan sama seperti lingkungan nata. Pada lingkungan ini user dapat berinteraksi dengan objek-objek dalam lingkungan 3-D. Dibutuhkan perangkat keras khusus untuk memberikan efek pemandangan 3-D dan membuat user mampu beriteraksi dengan objek-objek ang berada di lingkungan tersebut. Contoh: aplikasi Virtual Realit pilot trainer ang digunakan untuk latihan mengendarai pesawat terbang. Aplikasi ini dapat memberikan keutungan berupa mengurangi resiko cedera selama latihan, mengurangi biaa penerbangan, melatih pilot- 6
pilot pemula sebelum melakukan penerbangan ang sesungguhna. 6. Pendidikan dan Pelatihan Komputer digunakan sebagai alat bantu pendidikan dan pelatihan, misalna untuk membuat model-model proses fisika dan kimia, fungsi-fungsi psikologi, simulasi, dan sebagaina sehingga memudahkan sesorang untuk memahami bagaimana operasi atau proses ang terjadi dalam suatu sistem. Contoh: pembelajaran transformasi Fourier untuk peningkatan kualitas citra. Gambar. 3 Pembelajaran transformasi Fourier untuk peningkatan kualitas citra 7. Computer Art Computer art adalah penggunaan komputer grafis untuk menghasilkan kara-kara seni. Sebagai contoh grafika komputer digunakan untuk desktop publishing (cover buku), advertising (logo perusahaan), desain tekstil dan lain 7
sebagaina menggunakan perangkat lunak CorelDraw, Macromedia Freehand atau Adobe Ilustrator. Grafika komputer digunakan untuk pembuatan bermacam-macam gambar kartun sesuai dengan gagasan atau imajinasi seorang seniman menggunakan perangkat lunak ang berbasis paint contoh Paint, Corel Paint Shop Pro dan Adobe Photoshop. Gambar. 4 Gambar kartun, digambar menggunakan Paint under window 8. Pengolahan Citra Digital Pengolahan citra digital adalah teknik-teknik untuk mengolah citra digital. Pengolahan ang dilakukan meliputi, peningkatan kualitas citra, perbaikan citra, segmentasi citra, pengenalan pola menggunakan fitur-fitur ang ada dalam suatu citra. Contoh: perbaikan citra sehingga menjadi lebih jelas. 8
Gambar. 5 Hasil perbaikan citra ang terkena noise domain frekuensi menggunakan transformasi Fourier 9. Graphical User Interface (GUI) Graphical User Inteface adalah antarmuka grafis ang berguna untuk mempermudah interaksi antara manusia dengan komputer dan alat-alat ang dikendalikan oleh komputer. Gambar.6 menunjukkan GUI berupa window-window ang digunakan pada sistem operasi Windows XP. 9
Gambar. 6 GUI dari aplikasi-aplikasi pada sistem operasi Windows XP.2 Graphics Languages ) IGL (Interactive Graphics Librar) Salah satu paket grafis ang mengandung pustaka fungsi grafis ang lengkap. 2) GKS (Graphical Kernel Sstem) Rutin-rutin perangkat independen ang umum digunakan. Menggunakan pustaka UIS (User Interface Sstem) untuk pelaksanaan ditingkat low level. 3) HPGL (Hewlett Packard Graphics Librar) 2
Kumpulan Instruksi untuk berbagai fungsi output grafis untuk Plotter. 4) ReGIS (Remote Graphics Instruction Set) Khusus dikembangkan untuk pemrograman di terminal seri TV. 5) PHIGS (Programmer s Hierarchical Interactive Graphics Standard) Sebuah perangkat untuk keperluan umum dan merupakan paket grafis ang handal untuk mendukung sebagian besar bahasa pemrograman ang umum digunakan. 6) SG-GL (Silicon Graphics - Graphics Librar) Berisi rutin-rutin ang cepat dan efisien ang dikembangkan oleh Silicon Graphics (misalna OpenGL) 7) Computer-Aided Design (CAD) Alat grafis untuk menggambar, desain berbantukan komputer dan Manufaktur 8) PC-Graphics Untuk pemrograman grafis pada lingkungan DOS dan Windows. Contohna adalah: MVisual Basic, Visual C + + dengan GUI. 2
.3 Sistem Pemrograman Grafis Pada sstem pemrograman grafis, user menginput data (berupa program) melalui piranti input dan menggunakan software tertentu, kemudian software memanggil graphics librar untuk mendapatkan instruksi-instruksi ang cepat, selanjutna hasil dari program ditampilkan dilaar berupa gambar sesuai dengan apa ang diprogram. Gambar. 7 Sistem Pemrograman Grafis.4 Komponen Graphics Librar ) Fungsi Output - Fungsi untuk menggambar primitif grafik, misalna titik, garis, kurva lengkung, poligon, teks dan lainlain. 2) Atribut Output - Fungsi untuk men-set atribut, misalna tebal garis, isi warna, tinggi tkes dan lain-lain. 22
3) Fungsi Kontrol Fungsi untuk menangani event handling, error processing, I/O control dan lain-lain. 4) Operasi File Fungsi untuk menimpan dan mengambil output grafik. 5) Fungsi Matematika and Graphics - Transformasi, hidden line removal, rendering, clipping, window to viewport mapping, segments dan lain-lain. 6) Inquir functions - Fungsi untuk memberitahukan tentang status dan setting dari alat-alat output ang bekerja saat ini. 23
Ringkasan Bab Grafika komputer (Computer graphics) adalah bagian dari ilmu komputer ang mempelajari cara-cara pembuatan dan manipulasi gambar secara digital, sehingga dapat memudahkan komunikasi antara manusia dan komputer, atau manusia dengan manusia melalui gambar-gambar, baganbagan, tabel dan lain-lain. Grafika computer telah banak di aplikasikan di berbagai bidang diantarana adalah bidang hiburan, visualisasi, CAD (Computer- Aided Design), Virtual Realit, Pendidikan dan Pelatihan, Computer Art, Pengolahan Citra Digital, Graphical User Interface (GUI), dan sebagaina. 24
Soal-Soal Latihan. Jelaskan dan berikan contohna peran grafika komputer dibidang : a. Hiburan b. Visualisasi c. CAD (Computer-Aided Design) d. Virtual Realit e. Pendidikan dan Pelatihan f. Computer Art g. Pengolahan Citra Digital h. Graphical User Interface (GUI). 2. Jelaskan peran grafika komputer untuk visualisasi pada teknologi informasi khususna komputer! 3. Sebutkan beberapa bahasa pemrograman ang bisa digunakan untuk mengimplementasikan teori-teori grafika komputer! 25
Bab 2 Spesifikasi Graphics Primitif TUJUAN PEMBELAJARAN Agar pembaca mengetahui definisi graphics primitif. Agar pembaca memahami primitif geometri titik dan garis. Agar pembaca memahami algoritma Area Filling scan line dan Boundar Fill OUTCOME PEMBELAJARAN Pembaca dapat menjelaskan dan memberikan contoh tentang definisi graphics primitif. Pembaca dapat menjelaskan primitif geometri titik dan garis. Pembaca dapat menjelaskan perbedaan algoritma Area Filling scan line dan Boundar Fill. Pendahuluan Graphics primitif adalah struktur dasar geometri ang paling sederhana dari gambar grafika komputer. Titik dan garis adalah contoh dari output primitif ang dapat digunakan untuk membentuk gambar, misalna lingkaran, kerucut, permukaan berbentuk persegi, kurva dan permukaan berbentuk lengkung, warna area dan karakter, dan lain-lain. Gambar-gambar seperti 26
rumah, tembok, gedung dan lain-lain merupakan obek ang lengkap ang ditempatkan pada koordinat tertentu pada laar, dimana obek-obek tadi sebenarna tersusun dari kumpulan titik dan garis sebagai penusunna. 2. Piel (Picture Element) Piel adalah elemen gambar terkecil berupa sebuah titik ang ditempatkan dilaar. Jumlah kolom piksel = N (,) Sistem Koordinat Piksel berada di posisi (3,2) Gambar 2. Laar berisi M baris piksel dan N kolom piksel. Sebuah piksel (titik hitam) terletak pd (3,2). Gambar 2. menunjukkan sebuah piksel mempunai koordinat (3,2) pada laar. Jumlah Piksel untuk setiap gambar tergantung dari kemampuan Graphics card. Terdapat beberapa tampilan format gambar: 27
Standart -maksimal -maksimal Jumlah keseluruhan Piel VGA 64 48 37 2 SVGA 8 6 48 XGA 24 768 786 432 SXGA 28 24 228 8 Tabel 2. Sebagai pembanding adalah taangan televisi standart dengan jumlah titik gambar sebesar 4. Piksel. Bandingkan dengan WebCam standar VGA dan juga dengan HP ang memiliki fasilitas perekam 2 Mega Piksel. Resolusi Piksel adalah jumlah N piksel persatuan lebar () kali panjang () ( : width, height ) Jika laar mempunai dimensi p inchi sepanjang dan q inchi sepanjang, maka : resolusi- = N p piel/inchi (ppi) Persamaan 2 - resolusi- = M piel/inchi (ppi) q Persamaan 2-2 28
Aspek rasio = resolusi resolusi ( Height : Width ) Persamaan 2-3 Frame buffer adalah area memor tempat informasi gambar disimpan. Jika sstem mempunai n bit memori untuk tiap-tiap piksel, maka ukuran frame buffer adalah = H W n / 8 bte. Jumlah warna ang bisa ditampilkan secara bersama-sama dilaar adalah 2 n. Sistem dikatakan mempunai n bit planes. Screen Mode Piels Screen Bit Colors Memor Ratio planes CGA(med res) 322 4:3 2 4 6K CGA(high res) 642 4:3 28K EGA 6435 4:3 4 6 2K VGA 6448 4:3 8 256 37K Super VGA- 86 4:3 24 6.7M.44M Super VGA-2 24768 4:3 6 65K.57M Tabel 2. 2 29
Atribut dari piksel adalah warnana (indeks warna) i, dimana i 2 n. Biasana indeks warna ang bernilai melambangkan warna hitam. Monitor monokrom ang mempunai satu bit plane hana bisa menampilkan dua warna, aitu warna hitam () sebagai background dan warna putih () sebagai foreground. Monitor monokrom ang mempunai 8 bit plane bisa menampilkan 256 warna ang berbeda, ang disebut dengan grascale dengan indeks warna dimulai dari (hitam) sampai dengan 255 (putih). Contoh 2. Diketahui sebuah sistem dengan 28 X 24 frame buffer, mempunai 4 bits per piksel. jika sistem tersebut dapat mentransfer data 4 bits per detik, berapa lama waktu ang dibutuhkan untuk loading? Jawab: Jumlah piksel pada frame buffer = 28 24 = 372 piksel Jumlah bit pada frame buffer = 372 piksel 4 bit /piksel = 524288 bit Waktu loadingna = 524288 bit bit / sekon 4 524,28 sekon 3
2.2 Warna Sudah dikatakan diatas bahwa warna merupakan atribut dari piksel. Selain piksel, ang lebih penting diperhitungkan lagi adalah warna dari piksel itu sendiri. Setiap piksel mengandung informasi mengenai warna dengan jumlah ang beragam. Pada awalna saat teknik penggambaran belum begitu maju, hana disediakan 6 kemungkinan warna setiap Pikselna. Tetapi Graphics card sekarang ini sudah mampu menampilkan gambar dengan berbagai macam kedalaman seperti pada tabel dibawah ini: Jumlah Bte setiap Piel Jumlah warna ang mampu ditampikan Color Qualit (8 bit) 2 (6 bit) 3 (24 bit) 4 (32 bit) 256 65 536 6 777 26 4 294 967 296 Low Medium High Highest Tabel 2. 3 Untuk menampilkan suatu gambar pada laar monitor sering kali tidak cukup hana dengan 256 tampilan warna. Tetapi jika jumlah tampilan warna diperbesar maka memerlukan ruang (memori) lebih banak lagi. Lihat tabel kebutuhan memori di bawah ini: 3
/- B / 2 B / 3 B / 4 B / Piksel Format Piksel Piksel Piksel 64 48 3 kb 6 kb 9 kb 2 kb 8 6 469 kb 938 kb 46 kb 876 kb 24 768 768 kb 536 kb 234 kb 372 kb 28 24 3 kb 2622 kb 3933 kb 5244 kb Tabel 2. 4 Untuk menampilkan gambar pada laar monitor tabung sehingga tanpa efek kerdipan (flicker-free) diperlukan pengulangan taang sebanak 75 kali dalam satu detik. Bisa dicoba pada laar monitor, turunkan frekuensi monitor anda pada penetelan: displa settings advanced Monitor Screen refresh rate = 6. Terasa kerdipan ang mengganggu dan tidak naman di mata. Pengulangan taangan per detik ang begitu tinggi (lebih besar dari 75) pada resolusi (ketajaman gambar) ang tinggi pula, dapat menebabkan kesulitan dalam memindahkan gambar dari graphic card ke laar monitor (diperlukan transfer-rate ang besar). Berbeda dengan laer LCD (Liquid Crstal Displa). Pada laer LCD tidak dijumpai efek kerdipan (flicker) sehingga tidak memerlukan frekuensi pengulangan gambar ang tinggi. Hana saja, ang masih 32
menjadi masalah pada laar LCD adalah sudut pandang ang terbatas, dela time, dan tinggina harga. Secara teknis warna pada pesawat televisi tidak dipindahkan dalam bentuk Bte untuk setiap elemen gambarna, akan tetapi sudah berupa sinal warna analog. Sebagai pembanding Photo-CD ang dikeluarkan oleh Kodak memiliki resolusi sebesar 25 3 Piksel dengan kedalaman 3 Bte warna. Perbandingan ke tiga format dapat dilihat pada tabel dibawah ini: Televisi standar Gambar komputer (6 8 3 Bte) Photo-CD 8 kilo Bte.5 Mega Bte 2 Mega Bte 2.3 Garis Tabel 2. 5 Software untuk menggambar garis lurus pada setiap paket grafika komputer secara tradisi sebagai fungsi elementarna sudah tersedia, tetapi ada baikna kita simak lebih seksama bagaimana algoritma sebagai dasar penggambaran titik-titik pada raster graphics. Raster graphics diartikan sebagai grafik ang dibangun atas dasar titik-titik pada kolom dan baris ang 33
juga mengandung informasi warna. Gambar 2.2 adalah sebuah garis lurus ang melalui titik (, ) dan ( 2, 2). Gambar 2. 2 Garis lurus ang melalui titik P (, ) dan P 2( 2, 2) Secara umum garis lurus dinatakan dalam persamaan : = m + c Persamaan 2-4 dimana : m adalah gradient dan c adalah konstanta. Bila garis melalui titik (, ) dan titik ( 2, 2) maka gradien m dihitung menggunakan persamaan (2-5) m 2 2 Persamaan 2-5 34
Persamaan garis bergradien m ang melewati titik (, ) adalah: m ( ) Persamaan 2-6 Berdasarkan persamaan (2-4), garis ang melalui titik (, ) dan titik ( 2, 2) dapat ditulis sebagai berikut, c m. m 2. 2 atau 2 m 2 ) ( atau 2 m Persamaan 2-7 bila =, maka persamaan (2-7) menjadi m 2 Persamaan 2-8 Algoritma untuk menggambar garis pada komputer didasarkan pada persamaan (2-6) dan (2-8). Tugas dari algoritma pembentuk garis adalah menentukan titiktitik diantara dua titik ujung (, ) dan ( 2, 2) ang akan digambar sebagai garis. 35
Kriteria algoritma pembentuk garis ang baik: ) Garis antara dua titik ujung tersebut sebisa mungkin harus lurus. 2) Kerapatan titik-titik konstan (tidak ada gap antara dua titik ang bersebelahan). 3) Kerapatan titik-titik tidak tergantung pada kemiringan garis. 4) Waktu proses algoritma harus cepat. 36
Bab 3 Algoritma, Analisa, dan Tampilan Graphics Dua Dimensi (2D) TUJUAN PEMBELAJARAN Agar pembaca memahami algoritma pembentukan garis brute force, DDA (Digital Diferential Analzer ) dan Bressenham. Agar pembaca memahami algoritma pembentukan lingkaran. Agar pembaca memahami algoritma Area Filling scan line dan Boundar Fill. OUTCOME PEMBELAJARAN Pembaca dapat menjelaskan perbedaan algoritma pembentukan garis brute force, DDA dan Bressenham. Pembaca dapat menjelaskan algoritma pembentukan lingkaran. Pembaca dapat menjelaskan perbedaan algoritma Area Filling scan line dan Boundar Fill. 37
Pendahuluan Output primitif adalah struktur dasar geometri ang paling sederhana dari gambar grafika komputer. Titik dan garis adalah contoh dari output primitif ang dapat digunakan untuk membentuk gambar, misalna lingkaran, kerucut, permukaan berbentuk persegi, kurva dan permukaan berbentuk lengkung, warna area dan karakter, dan lain-lain. Gambar-gambar seperti rumah, tembok, gedung dan lain-lain merupakan obek ang lengkap ang ditempatkan pada koordinat tertentu pada laar, dimana obek-obek tadi sebenarna tersusun dari kumpulan titik dan garis sebagai penusunna. 3. Algoritma Brute Force Algoritma brute force untuk membentuk garis didasarkan pada persamaan (2-6), aitu :. Tentukan dua titik ujung (, ) dan ( 2, 2) 2. Jika = 2 (garis vertikal), maka (a) = + dan tetap (b) gambar titik (,) di laar (c) Selesai 3. Jika = 2 (garis horisontal), maka (a) = + dan tetap (b) gambar titik (,) di laar (c) Selesai {anggap 2 >, (jika sebalikna, gantilah 2 dengan )} 38
4. Hitung kemiringan garis m = ( 2 )/( 2 ) 5. N = 2 + 6. = 7. Ulang sebanak N kali: (a) m ( ) (b) lakukan pembulatan a = Round(), (c) gambar titik (, a) di laar (d) = + 8. selesai Perhatikan langkah 7(b), karena posisi piksel adalah integer (bilangan bulat), dan nilai gradien m biasana pecahan, maka nilai adalah bilangan pecahan, sehingga kita perlu melakukan pembulatan terhadap nilai. Perhatikan Gambar 2.3 berikut. Garis ang ( i+,round( i+m)) ( i, i) ( i+, i+m) ( i, Round( i)) Gambar 3. Pembulatan nilai dilakukan karena posisi piel adalah bulat (integer) 39
Contoh 2.2 Diketahui 2 buah titik A(2,) dan titik B(8,5) bila titik A sebagai titik awal dan titik B sebagai titik akhir, maka buatlah garis ang menghubungkan titik tersebut dengan menggunakan algoritma Brute Force. Jawab:. titik ujung (, ) = (2,) dan ( 2, 2) = (8,5) 2. tidak dipenuhi 3. tidak dipenuhi 4. m = (5 )/(8 2) =,67 5. N = 8 2 + = 7 6. untuk = 2 =,67 ( 2) + 7. Ulang sebanak 7 kali iterasi ke-: = 2; =,67. (2 2) + = pembulatan: = gambar titik (2,) di laar = 2 + = 3 =================================================== iterasi ke-2: = 3; =,67. (3 2) + =,67 4
pembulatan: = 2 gambar titik (3,2) di laar. = 3 + = 4 =================================================== iterasi ke-3: = 4; =,67. (4 2) + = 2,34 pembulatan: = 2 gambar titik (4,2) di laar. = 4 + = 5 =================================================== iterasi ke-4: = 5; =,67. (5 2) + = 3, pembulatan: = 3 gambar titik (5,3) di laar. = 5 + = 6 =================================================== iterasi ke-5: = 6; =,67. (3 2) + = 3,68 pembulatan: = 4 gambar titik (6,4) di laar. 4
= 6 + = 7 =================================================== iterasi ke-6: = 7; =,67. (7 2) + =4,35 pembulatan: = 4 gambar titik (7,4) di laar. = 7 + = 8 ================================================ iterasi ke-7: = 8; =,67. (7 2) + =5,2 pembulatan: = 5 gambar titik (8,5) di laar. Maka diperoleh titik-titik pembentuk garis : (2,), (3,2), (4,2), (5,3), (6,4), (7,4), (8,5). 42
7 6 5 4 3 2 2 3 4 5 6 7 8 9 Gambar 3. 2 Titik-titik pembentuk garis hasil perhitungan menggunakan algoritma Brute Force digambar pada raster graphics. Masalah : Untuk kemiringan m >, garis menjadi tidak kontinu (Gambar 2.5(a)) ang mengakibatkan terjadina gap antar piksel, sehingga diperlukan interpolasi (Gambar 2.5(b)). (a) (b) Gambar 3. 3 (a) Garis dengan kemiringan m >, tampak bahwa garis tidak kontinu (b) setelah dilakukan interpolasi garis menjadi kontinu. 43
Selain menggunakan interpolasi, untuk kemiringan garis m >, tukarlah dengan maka sudah tidak terjadi gap antara titik ang satu dengan ang lain. Sehingga algoritma pembentukan garis untuk m > adalah sebagai berikut :. Tentukan dua titik ujung (, ) dan ( 2, 2) 2. Jika = 2 (garis vertikal), maka (a) = + dan tetap (b) gambar titik (,) di laar (c) Selesai 3. Jika = 2 (garis horisontal), maka (a) = + dan tetap (b) gambar titik (,) di laar (c) Selesai {anggap 2 >, (jika sebalikna, gantilah 2 dengan )} 4. Hitung kemiringan garis m = ( 2 ) /( 2 ) 5. N = 2 + 6. = 7. Ulang sebanak N kali: m ( ) (a) (b) lakukan pembulatan a = Round(), (c) gambar titik ( a,) di laar 44
(d) = + 8. selesai Contoh 2.3 Diketahui 2 buah titik A(4,3) dan titik B(7,8) bila titik A sebagai titik awal dan titik B sebagai titik akhir, maka buatlah garis ang menghubungkan titik tersebut dengan menggunakan algoritma Brute Force. Jawab:. titik ujung A(4,3) dan B(7,8) 2. tidak dipenuhi 3. tidak dipenuhi 4. m = (7 4)/(8 3) =,6 5. N = 8 3 + = 6 6. untuk = 3 dan =,6. ( 3) + 4 7. Ulang sebanak 6 kali iterasi ke-: = 3; =,6. (3 3) + 4 =4 pembulatan: = 4 gambar titik (4,3) di laar. = 3 + = 4 45
============================================= iterasi ke-2: = 4; =,6. (4 3) + 4 =4,6 pembulatan: = 5 gambar titik (5,4) di laar. = 4 + = 5 ============================================= iterasi ke-3: = 5; =,6. (5 3) + 4 =5,2 pembulatan: = 5 gambar titik (5,5) di laar. = 5 + = 6 ============================================= iterasi ke-4: = 6; =,6. (6 3) + 4 =5,8 pembulatan: = 6 gambar titik (6,6) di laar. = 6 + = 7 ============================================= iterasi ke-5: 46
= 7; =,6. (7 3) + 4 =6,4 pembulatan: = 6 gambar titik (6,7) di laar. = 7 + = 8 ============================================= iterasi ke-6: = 8; =,6. (8 3) + 4 =7 pembulatan: = 7 gambar titik (7,8) di laar. = 8 + = 9 titik-titik pembentuk garis : (4,3), (5,4), (5,5), (6,6), (6,7), (7,8). Kelemahan algoritma Brute Force : Algoritma ini terlalu lambat karena: pada setiap iterasi terdapat perkalian bilangan pecahan (floating point), penjumlahan bilangan pecahan, dan proses pembulatan angka pecahan menjadi bulat (integer). 47
3.2 Algoritma DDA (Digital Diferential Analzer) DDA adalah algoritma pembentuk garis ang didasarkan pada perasamaan (2-8). Garis dibuat menggunakan titik awal (, ) dan titik akhir ( 2, 2). Setiap koordinat titik ( k, k) ang membentuk garis diperoleh dari perhitungan, kemudian hasil perhitungan dikonversikan menjadi nilai integer. Algoritma ini bisa digunakan untuk menghitung garis dengan semua kemiringan. { < m < ; m> ; < m < ; m < }. Berikut adalah langkah-langkah pembentukan garis berdasarkan algoritma DDA:. Tentukan dua titik ang akan dihubungkan dalam pembentukan garis. 2. Tentukan salah satuna sebagai titik awal (, ) dan ang lain sebagai titik akhir ( 2, 2). 3. Hitung : d = 2 dan d = 2 4. Tentukan step, dengan ketentuan berikut: - bila d > d maka step = d - bila tidak, maka step = d 5. Hitung penambahan koordinat piksel dengan persamaan: _inc = d / step _inc = d / step 6. Koordinat selanjutna : = + _inc = + _inc 48
7. Lakukan pembulatan u = Round(), v = Round(), kemudian plot piksel (u, v) pada laar 8. Ulangi point 6 dan 7 untuk menentukan posisi piksel berikutna sampai = 2 dan = 2. Contoh 2.4 Diketahui 2 buah titik A(2,) dan titik B(8,5) bila titik A sebagai titik awal dan titik B sebagai titik akhir, maka buatlah garis ang menghubungkan titik tersebut dengan menggunakan algoritma DDA. Jawab: Titik awal (, ) = A(2,) dan Titik akhir ( 2, 2) = B(8,5) d = 2 = 8 2 = 6 dan d = 2 = 5 = 4 Karena: d > d, maka step = d = 6 _inc = d / step = 6/6 = _inc = d / step = 4/6 =,67 ================================================= Iterasi ke-: (,) = (2,) +_inc = 2 + = 3 +_inc = +,67 =,67 Koordinat selanjutna : (,) = (3;,67) 49
Pembulatan (3;,67) (3,2). Gambar titik (3,2) dilaar ================================================= Iterasi ke-2: (,) = (3;,67) +_inc = 3 + = 4 +_inc =,67 +,67 = 2,34 Koordinat selanjutna : (,) = (4; 2,34) Pembulatan (4; 2,34) (4,2). Gambar titik (4,2) dilaar ================================================= Iterasi ke-3: (,) = (4; 2,34) A+_inc = 4 + = 5 A+_inc = 2,34 +,67= 3, Koordinat selanjutna : (,) = (5; 3,) Pembulatan (5; 3,) (5,3). Gambar titik (5,3) dilaar ================================================= Iterasi ke-4: (,) = (5; 3,) A+_inc = 5 + = 6 A+_inc = 3, +,67 = 3,68 Koordinat selanjutna : (,) = (6; 3,68) Pembulatan (6; 3,68) (6,4). Gambar titik (6,4) dilaar ================================================= 5
Iterasi ke-5: (,) = (6; 3,68) A+_inc = 6 + = 7 A+_inc = 3,68 +,67 = 4,35 Koordinat selanjutna : (,) = (7; 4,35) Pembulatan (7; 4,35) (7,4). Gambar titik (7,4) dilaar ================================================= Iterasi ke-6: (,) = (7; 4,35) A+_inc = 7 + = 8 A+_inc = 4,35 +,67 = 5,2 Koordinat selanjutna : (,) = (8; 5,2) Pembulatan (8; 5,2) (8,5). Gambar titik (8,5) dilaar Karena = 2 = 8, maka iterasi dihentikan, sehingga diperoleh titik-titik pembentuk garis sebagai berikut: (2,), (3,2), (4,2), (5,3), (6,4), (7,4) dan (8,5). ================================================= Bila digambar pada raster graphics diperoleh gambar 2.6: 5
7 6 5 4 3 2 2 3 4 5 6 7 8 9 Gambar 3. 4 Titik-titik pembentuk garis hasil perhitungan menggunakan algoritma DDA digambar pada raster graphics. Kelebihan Algoritma DDA dibanding Algoritma Brute Force Algoritma DDA lebih cepat dibanding dengan algoritma Brute Force dan baik digunakan untuk kemiringan garis m >. Kelemahan Algoritma DDA Prosedur untuk menggambar garis masih menggunakan fungsi pembulatan maupun, sehingga memerlukan waktu. variabel, maupun m memerlukan kemiringan merupakan nilai pecahan. bilangan real karena 52
3.3 Algoritma Bressenham J.E. Bressenham pada th.965 mengumumkan penemuan algoritma untuk mengoptimalkan gambar garis pada raster. Algoritma garis Bressenham disebut juga Midpoint Line Algorithm. Algoritma temuanna tidak lagi menggunakan floating point arihtmetic, sehingga tidak perlu membulatkan nilai posisi piksel setiap waktu dan dalam pengulangan (looping) hana menggunakan pengoperasian incremental. Algoritma ini hampir dapat dipergunakan dan diimplementasikan pada semua hardware dan software untuk keperluan penggambaran garis. Algoritma Bressenham dapat memperbaiki pengendalian plotter, sehingga dia mendapatkan hak paten. Algoritma ini hana berlaku untuk nilai kemiringan garis : < m <. Perhatikan Gambar 2.7. Misalkan kemiringan garis m, ang besarna adalah < m <, titik awal garis di (, ) dan titik akhir garis di (, ). Anggap posisi titik sekarang ( p, p) dan sekarang kita harus memilih antara titik E (East) atau NE (Northeast). Misalkan Q adalah titik potong garis dengan garis = p+, dan M adalah titik tengah antara E dan NE. Jika titik tengah M terletak diatas garis, E dipilih, tetapi jika titik tengah M terletak dibawah garis, maka NE dipilih. 53
NE Garis aktual E M ( p, p) = p + Gambar 3. 5 Garis mempunai kemiringan < m <, pada titik = p+, garis berada diantara dua titik E dan NE ang mempunai titik tengah di M. Dalam hal ini kita harus menentukan apakah garis berada diatas titik tengah M atau dibawah titik tengah M. Untuk melakukan ini, kita amati bahwa setiap garis bisa dinatakan sebagai berikut; F(, ) = a + b + c = Persamaan 3 - Hitung: d = dan d =, maka garis juga bisa ditulis sebagai: = m + B = (d/d) + B atau (d/d) + B = 54
Kalikan dengan d menjadi (d) (d) + (d)b = Diperoleh a = d, b = d dan c = (d)b. Jika F(, ) =, maka (, ) terletak pada garis Jika F(, ) >, maka (, ) terletak dibawah garis jika F(, ) <, maka (, ) terletak diatas garis Untuk menerapkan kriteria midpoint, kita hitung: F(M) = F( p +, p + ½) = a ( p + ) + b ( p + ½) + c Dan menguji tanda dari d = F(M). Jika d >, M terletak dibawah garis, maka NE dipilih. Jika d =, pilih E ( sebenarna memilih NE juga bisa) Jika d <, M terletak diatas garis, maka E dipilih. Misalkan E dipilih, M bertambah satu langkah dalam arah, dan kita mempunai d baru misalna d baru. d baru = F( p + 2, p + ½) = a ( p + 2) + b ( p + ½) + c d lama = F( p +, p + ½) = a ( p + ) + b ( p + ½) + c jadi d baru d lama = a = d. Jadi setelah E dipilih, pertambahan untuk mendapatkan d ang baru adalah a = d. Misalkan NE dipilih, M adalah pertambahan satu langkah kearah dan sehingga 55
d baru = F( p + 2, p + 3/2) = a ( p + 2) + b ( p +3/2) + c d lama = F( p +, p + ½) = a ( p + ) + b ( p + ½) + c jadi d baru d lama = a + b = d d. Untuk memulai algoritma, titik awal adalah ( p, p ) = (, ). Untuk menghitung nilai d ang pertama untuk memulai algoritma, midpoint pertama adalah ( +, + ½) dan F(M) = F( +, + ½) = a ( + ) + b ( + ½)+ c = a + b + c + a + b/2 = + a + b/2 karena (, ) terletak pada garis. Jadi kita mulai dari d = a + b/2 = d d/2 Untuk menghilangkan pecahan, definisikan F dengan mengalikan 2, diperoleh F(,) = 2 (a + b + c) =. Definisi ini akan menebabkan nilai d menjadi d = 2d d Dengan begini algoritma midpoint Bresenham (untuk kemiringan < m < ) adalah : ) Tentukan dua titik ang akan dihubungkan dalam pembentukan garis. 2) Tentukan salah satu sebagai titik awal (, ) dan titik akhir (, ). 3) Hitung d, d, 2 d dan 2 d 2 d 4) Hitung parameter : po = 2 d d 5) Untuk setiap k sepanjang jalur garis, dimulai dengan k = 56
- bila p k < maka titik selanjutna adalah: ( k+, k) dan p k+ = p k + 2 d - bila tidak, titik selanjutna adalah: ( k+, k+) dan p k+ = p k + 2 d 2 d 6) Ulangi nomor 5 untuk menentukan posisi piksel berikutna, sampai = dan =. Contoh 2.5 Diketahui 2 buah titik A(2,) dan titik B(8,5) bila titik A sebagai titik awal dan titik B sebagai titik akhir, maka buatlah garis ang menghubungkan titik tersebut dengan menggunakan algoritma Bressenham. Jawab: Titik awal (, ) = A(2,) dan Titik akhir (, ) = B(8,5) d = = 8 2 = 6 dan d = = 5 = 4 m = d/ d = 4/6 ; kemiringan garis berada diantara dan : < m < 2 d = 2.6 = 2 ; 2 d = 2.4 = 8 dan 2 d 2 d = 8 2 = 4 p o = 2 d d = 8 6 = 2 57
================================================= Iterasi ke- ( k = ): Titik awal = (2,) Po = 2 >, maka titik selanjutna adalah = 2 + = 3 dan = + = 2, koordinat selanjutna : (3,2) p = p + 2 d 2 d = 2 4 = 2 ================================================= Iterasi ke-2 ( k = ): Titik awal = (3,2) P = 2 <, maka titik selanjutna adalah = 3 + = 4 dan = 2, koordinat selanjutna : (4,2) p 2 = p + 2 d = 2 + 8 = 6 ================================================= Iterasi ke-3 ( k = 2): Titik awal = (4,2) P 2 = 6 >, maka titik selanjutna adalah = 4 + = 5 dan = 2 + = 3, koordinat selanjutna : (5,3) p 3 = p 2 + 2 d 2 d = 6 4 = 2 ================================================= 58
Iterasi ke-4 ( k = 3): Titik awal = (5,3) P 3 = 2 >, maka titik selanjutna adalah = 5 + = 6 dan = 3 + = 4, koordinat selanjutna : (6,4) p 4 = p 3 + 2 d 2 d = 2 4 = 2 ================================================= Iterasi ke-5 ( k = 4): Titik awal = (6,4) P 3 = 2 <, maka titik selanjutna adalah = 6 + = 7 dan = 4, koordinat selanjutna : (7,4) p 5 = p 4 + 2 d = 2 + 8 = 6 ================================================= Iterasi ke-6 ( k = 5): Titik awal = (7,4) P 5 = 6 >, maka titik selanjutna adalah = 7 + = 8 dan = 4 + = 5, koordinat selanjutna : (8,5) ================================================= 59
Karena = 2 = 8, maka iterasi dihentikan, sehingga diperoleh titik-titik penusun garis sebagai berikut: (2,), (3,2), (4,2), (5,3), (6,4), (7,4) dan (8,5). Bila digambar pada raster graphics diperoleh Gambar 2.8: 7 6 5 4 3 2 2 3 4 5 6 7 8 9 Gambar 3. 6 Titik-titik pembentuk garis dengan kemiringan < m <, hasil perhitungan menggunakan algoritma Bressenham ang digambar pada raster graphics. Untuk kemiringan < m <, kita tinggal mengganti komponen berikut: Untuk setiap k sepanjang jalur garis, dimulai dengan k = - bila p k < maka titik selanjutna adalah: ( k+, k) dan p k+ = p k + 2 d - bila tidak, titik selanjutna adalah: ( k+, k ) dan p k+ = p k + 2 d 2 d 6
Contoh 2.6 Diketahui 2 buah titik A(2,9) dan titik B(8,5) bila titik A sebagai titik awal dan titik B sebagai titik akhir, maka buatlah garis ang menghubungkan titik tersebut dengan menggunakan algoritma Bressenham. Jawab: Titik awal (, ) = A(2,9) dan Titik akhir (, ) = B(8,5) d = = 8 2 = 6 dan d = = 5 9 = 4 m = d/ d = 4/6 dan : < m < ; kemiringan garis berada diantara 2 d = 2.6 = 2 ; 2 d = 2. 4 = 8 dan 2 d 2 d = 8 2 = 4 p o = 2 d d = 8 6 = 2 ================================================= Iterasi ke- ( k = ): Titik awal = (2,9) Po = 2 >, maka titik selanjutna adalah = 2 + = 3 dan = 9 = 8, koordinat selanjutna : (3,8) p = p + 2 d 2 d = 2 4 = 2 ================================================= 6
Iterasi ke-2 ( k = ): Titik awal = (3,8) P = 2 <, maka titik selanjutna adalah = 3 + = 4 dan = 8, koordinat selanjutna : (4,8) p 2 = p + 2 d = 2 + 8 = 6 ================================================= Iterasi ke-3 ( k = 2): Titik awal = (4,8) P 2 = 6 >, maka titik selanjutna adalah = 4 + = 5 dan = 8 = 7, koordinat selanjutna : (5,7) p 3 = p 2 + 2 d 2 d = = 6 4 = 2 ================================================= Iterasi ke-4 ( k = 3): Titik awal = (5,7) P 2 = 2 >, maka titik selanjutna adalah = 5 + = 6 dan = 7 = 6, koordinat selanjutna : (6,6) p 4 = p 3 + 2 d 2 d = = 2 4 = 2 ================================================= Iterasi ke-5 ( k = 4): 62
Titik awal = (6,6) P 4 = 2 <, maka titik selanjutna adalah = 6 + = 7 dan = 6, koordinat selanjutna : (7,6) p 5 = p 4 + 2 d = 2 + 8 = 6 ================================================= Iterasi ke-6 ( k = 5): Titik awal = (7,6) P 5 = 6 >, maka titik selanjutna adalah = 7 + = 8 dan = 6 = 5, koordinat selanjutna : (8,5) p 6 = p 5 + 2 d 2 d = 6 4 = 2 ================================================= Karena = 2 = 8, maka iterasi dihentikan, sehingga diperoleh titik-titik penusun garis sebagai berikut: (2,9), (3,8), (4,8), (5,7), (6,6), (7,6) dan (8,5). Bila digambar pada raster graphics diperoleh Gambar 2.9: 63
7 6 5 4 3 2 2 3 4 5 6 7 8 9 Gambar 3. 7 Titik-titik pembentuk garis dengan kemiringan < m <, hasil perhitungan menggunakan algoritma Bressenham ang digambar pada raster graphics. Untuk kemiringan garis m >, tukarlah dengan, sehingga algoritma pembentukan garis untuk m > adalah sebagai berikut:. Tentukan dua titik ang akan dihubungkan dalam pembentukan garis. 2. Tentukan salah satu sebagai titik awal (, ) dan titik akhir (, ). 3. Hitung d, d, 2 d dan 2 d 2 d 4. Hitung parameter : po = 2 d d 64
5. Untuk setiap k sepanjang jalur garis, dimulai dengan k = - bila p k < maka titik selanjutna adalah: ( k, k+) dan p k+ = p k + 2 d - bila tidak, titik selanjutna adalah: ( k+, k+) dan p k+ = p k + 2 d 2 d 6. Ulangi nomor 5 untuk menentukan posisi piksel berikutna, sampai = dan =. Contoh 2.7 Diketahui 2 buah titik A(2,) dan titik B(4,7) bila titik A sebagai titik awal dan titik B sebagai titik akhir, maka buatlah garis ang menghubungkan titik tersebut dengan menggunakan algoritma Bressenham. Jawab: Titik awal (, ) = A(2,) dan Titik akhir (, ) = B(4,7) d = = 4 2 = 2 dan d = = 7 = 6 m = d/ d = 6/2 ; kemiringan garis lebih besar dari : m > 2 d = 4 ; 2 d = 2 dan 2 d 2 d = 4 2 = 8 65
p o = 2 d d = 4 6 = 2 ================================================= Iterasi ke- ( k = ): Titik awal = (2,) p o = 2 <, maka titik selanjutna adalah = 2 dan = + = 2, koordinat selanjutna : (2,2) p = p o + 2 d = 2 + 4 = 2 ================================================= Iterasi ke-2 ( k = ): Titik awal = (2,2) p = 2 >, maka titik selanjutna adalah = 2+ = 3 dan = 2 + = 3, koordinat selanjutna : (3,3) p 2 = p + 2 d 2 d = 2 8 = 6 ================================================= Iterasi ke-3 ( k = 2): Titik awal = (3,3) p 2 = 6 <, maka titik selanjutna adalah = 3 dan = 3 + = 4, koordinat selanjutna : (3,4) p 3 = p 2 + 2 d = 6 + 4 = 2 66
================================================= Iterasi ke-4 ( k = 3): Titik awal = (3,4) p 3 = 2 <, maka titik selanjutna adalah = 3 dan = 4 + = 5, koordinat selanjutna : (3,5) p 4 = p 3 + 2 d = 2 +4 = 2 ================================================= Iterasi ke-5 ( k = 4): Titik awal = (3,5) p 4 = 2 >, maka titik selanjutna adalah = 3+=4 dan = 5 + = 6, koordinat selanjutna : (4,6) p 5 = p 4 + 2 d 2 d = 2 8 = 6 ================================================= Iterasi ke-6 ( k = 5): Titik awal = (4,6) p 5 = 6 <, maka titik selanjutna adalah = 4 dan = 6 + = 7, koordinat selanjutna : (4,7) p 6 = p 5 + 2 d = 6 + 4 = 2 ================================================= 67
Sampai disini iterasi dihentikan. Untuk kemiringan garis m <, kita tinggal mengganti komponen berikut: Untuk setiap k sepanjang jalur garis, dimulai dengan k = - bila p k < maka titik selanjutna adalah: ( k, k ) dan p k+ = p k + 2 d - bila tidak, titik selanjutna adalah: ( k+, k ) dan p k+ = p k + 2 d 2 d Contoh 2.8 Diketahui 2 buah titik A( 6,) dan titik B(,) bila titik A sebagai titik awal dan titik B sebagai titik akhir, maka buatlah garis ang menghubungkan titik tersebut dengan menggunakan algoritma Bressenham. Jawab: Titik awal (, ) = A( 6,) dan Titik akhir (, ) = B(,) d = = ( 6) = 6 dan d = = = m = d/ d = /6 : m < ; kemiringan garis lebih kecil dari 68
2 d = 2 ; 2 d = 2 dan 2 d 2 d = 2 2 = 8 p o = 2 d d = 2 = 2 ================================================= Iterasi ke- ( k = ): Titik awal = ( 6,) p o = 2 >, maka titik selanjutna adalah = 6 + = 5 dan : ( 5,9) = = 9, koordinat selanjutna p = p o + 2 d 2 d = 2 8 = 6 ================================================= Iterasi ke-2 ( k = ): Titik awal = ( 5,9) P = 6<, maka titik selanjutna adalah = 5 dan = 9 = 8, koordinat selanjutna : ( 5,8) p 2 = p + 2 d = 6 + 2 = 6 ================================================= Iterasi ke-3 ( k = 2): Titik awal = ( 5,8) P 2 = 6 >, maka titik selanjutna adalah 69
= 5 + = 4 dan = 8 = 7, koordinat selanjutna : ( 4,7) p 3 = p 2 + 2 d 2 d = 6 8 = 2 ================================================= Iterasi ke-4 ( k = 3): Titik awal = ( 4,7) P 3 = 2 <, maka titik selanjutna adalah = 4 dan = 7 = 6, koordinat selanjutna : ( 4,6) p 4 = p 3 + 2 d = 2 + 2 = ================================================= Iterasi ke-5 ( k = 4): Titik awal = ( 4,6) P 4 = >, maka titik selanjutna adalah = 4 + = 3 dan = 6 = 5, koordinat selanjutna : ( 3,5) p 5 = p 4 + 2 d 2 d = 8 = 2 ================================================= Iterasi ke-6 ( k = 5): Titik awal = ( 3,5) P 5 = 2 >, maka titik selanjutna adalah 7
= 3 + = 2 dan = 5 = 4, koordinat selanjutna : ( 2,4) p 5 = p 4 + 2 d 2 d = 2 8 = 6 ================================================= Iterasi ke-7 ( k = 6): Titik awal = ( 2,4) P 3 = 6 <, maka titik selanjutna adalah = 2 dan = 4 = 3, koordinat selanjutna : ( 2,3) p 4 = p 3 + 2 d = 6 + 2 = 6 ================================================= Iterasi ke-8 ( k = 7): Titik awal = ( 2,3) P 7 = 6 >, maka titik selanjutna adalah = 2 + = dan = 3 = 2, koordinat selanjutna : (,2) p 8 = p 7 + 2 d 2 d = 6 8 = 2 ================================================= Iterasi ke-9 ( k = 8): Titik awal = (,2) P 8 = 2 <, maka titik selanjutna adalah = dan = 2 =, koordinat selanjutna : (,) 7
p 9 = p 8 + 2 d = 2 + 2 = ================================================= Iterasi ke- ( k = 9): Titik awal = (,) P 9 = >, maka titik selanjutna adalah = + = dan = =, koordinat selanjutna : (,) p = p 9 + 2 d 2 d = 8 = 2 ================================================= Sampai disini iterasi dihentikan. 3.4 Lingkaran Persamaan umum lingkaran dengan pusat lingkaran ( p, p) dan jari-jari r adalah: 2 2 2 ( p) ( p) r Persamaan 3-2 Atau [ r ( 2 p p ) 2 ] Persamaan 3-3 Untuk menggambar piksel-piksel dalam kurva lingkaran, dapat digunakan sumbu dari = ( p-r) sampai = ( p+r) sebagai parameter dan sumbu sebagai hasil dari persamaan (2-). 72
Algoritma ini memerlukan waktu operasi ang besar, karena mengandung operasi perkalian dua bilangan integer, membutuhkan fungsi SQRT (untuk menghitung akar suatu bilangan) dan fungsi ROUND (untuk membulatkan bilangan pecahan menjadi bilangan integer), dan menghasilkan posisi koordinat piksel ang tidak merata, karena terjadina gaps ang disebabkan adana perubahan gradient seperti tampak pada Gambar 3.8. Gambar 3. 8 Terjadina gaps ang disebabkan adana perubahan gradient menghasilkan posisi koordinat piksel ang tidak merata Untuk menghindari posisi koordinat piksel ang tidak merata, koordinat piksel (,) dinatakan dengan menggunakan koordinat polar dalam persamaan (3-4) r cos dan rsin p p Persamaan 3-4 73
Akan tetapi penggambaran lingkaran menggunakan persamaan (3-4) memerlukan waktu operasi ang besar karena mengandung operasi perkalian bilangan riel, perhitungan trigonometri, dan membutuhkan banak segmen garis. 3.4. Simetris Delapan Titik Pembuatan kurva lingkaran dapat dilakukan dengan menentukan titik awal (,) ang terletak pada lingkaran, maka tujuh titik ang lain (ang terletak pada lingkaran juga) dapat ditentukan sebagai berikut : (,), (, ), (, ), (,), (,), (, ), (, ) Sehingga terbentuk delapan titik: (, ), (,), (, ), (, ), (,), (,), (, ), (, ) Dengan demikian sebenarna hana diperlukan untuk menghitung segmen 45 dalam menentukan lingkaran selengkapna. (,) Gambar 3. 9 Delapan titik simetris pada lingkaran 74
3.4.2 Algoritma Midpoint Algoritma midpoint juga disebut algoritma lingkaran Bressenham. Pembentukan semua titik berdasarkan titik pusat dengan penambahan semua jalur di sekeliling lingkaran. Komputasi untuk membuat kurva lingkaran dimulai dengan mengidentifikasi bagian-bagian dari lingkaran ang dapat ditentukan dengan menggunakan sifat simetri, hal ini dilakukan dengan cara membagai lingkaran dengan masing-masing mempunai sudut sebesar 45, sehingga dalam sebuah lingkaran dibagi menjadi 8 bagian. Perhatikan Gambar 3.. Gambar 3. Garis lingkaran berada diantara titik ( k+, k) dan ( k+, k ) Anggap bahwa kita mempunai titik ( k, k). Selanjutna adalah memilih titik ( k+, k) atau ( k+, k ) ang paling mendekati lingkaran. Persamaan untuk lingkaran Sehingga,, f (, ),, f 2 2 2 (, ) r jika (, ) didalam lingkaran jika (, ) terletak pada lingkaran jika (, ) terletak diluar lingkaran 75
76 Untuk memilih titik ( k+, k) atau ( k+, k ) ang paling mendekati lingkaran, kriteria ang digunakan adalah titik tengah ( k+, k ½ ) aitu Jika p k< titik tengah berada didalam lingkaran, maka titik ( k+, k) dipilih. Jika p k> titik tengah berada diluar lingkaran, maka titik ( k+, k ) dipilih. hitung Atau Dimana k+ adalah k atau k- tergantung tanda dari p k. Dalam hal ini kriteria pertama ang dihitung adalah Jika jari-jari lingkaran bernilai integer (bilangan bulat), kita bisa membulatkan nilai p menjadi berikut 2 2 2 ) 2 ( ) ( ) 2, ( r f p k k k k k 2 2 2 2 ] ) [( 2, r f p k k k k k ) ( ) ( ) ( 2 2 2 k k k k k k k p p r r r r f p 4 5 ) 2 ( ) 2 (, 2 2 p r
Kemudian jika p k < maka: Jika p k > maka: Dari sini diperoleh langkah-langkah algoritma pembentuk lingkaran. p p Langkah-langkah Algoritma Lingkaran Midpoint adalah:. Tentukan jari-jari r dan pusat lingkaran ( p, p), kemudian setting sedemikian rupa sehingga titik awal berada pada: (, ) = (, r) 2. Hitung nilai parameter : 5 p r 4 p k k 2k p k k 2k 2k Jika jari-jari r pecahan p r Jika jari-jari r bulat 3. Untuk setiap posisi k, dimulai dengan k = berlaku ketentuan: - bila p k < maka titik selanjutna adalah ( k+, k) dan p k+ = p k + 2 k+ + 77
- bila tidak, titik selanjutna adalah ( k+, k ) dan p k+ = p k + 2 k+ + 2 k+ 4. Tentukan titik simetris pada ketujuh oktan ang lain 5. Gerakkan setiap posisi piksel (, ) pada garis lingkaran dengan titik pusat ( p, p) dan plot nilai koordinat : = + p, = + p 6. Ulangi langkah 3 sampai dengan 5 hingga Contoh 2.9 Buatlah gambar kurva lingkaran dengan pusat lingkaran (4,6) dan jari-jari 8, perhitungan berdasarkan dari oktan kuadran pertama dimana = sampai =. Koordinat titik awal dimulai dari (,r) = (,8). Karena jari-jari r bulat, maka gunakan P = r. Iterasi ke-: K = X = Y = r = 8 P = r = 8 = 7 Karena P <, maka : X = X + = + = dan Y = Y = 8, jadi Titik selanjutna : (,8) P = p + 2 + = 7 + 2.() + = 4 Dengan algoritma simetris delapan titik, maka diperoleh titiktitik berikut : 78
(,8), (,8), (, 8), (, 8), (8,), ( 8,), (8, ), ( 8, ) Gerakkan setiap posisi piksel (, ) pada garis lingkaran dengan titik pusat (4,6) diperoleh titik-titik berikut (5, 4), (3, 4), (5, 2), (3, 2), (2, 7), ( 4, 7), (2, 5), ( 4, 5) ================================================= Iterasi ke-2: K = X = Y = 8 P = 4 Karena P <, maka X 2 = X + = + = 2 dan Y 2 = Y = 8, jadi Titik selanjutna : (2,8) P 2 = p + 2 2 + = 4 + 2.(2) + = Dengan algoritma simetris delapan titik, maka diperoleh titiktitik berikut : (2,8), ( 2,8), (2, 8), ( 2, 8), (8,2), ( 8,2), (8, 2), ( 8, 2) Gerakkan setiap posisi piksel (, ) pada garis lingkaran dengan titik pusat (4,6) diperoleh titik-titik berikut (6, 4), (2, 4), (6, 2), (2, 2), (2, 8), ( 4, 8), (2, 4), ( 4, 4) ================================================= Iterasi ke-3: K = 2 X 2 = 2 Y 2 = 8 P 2 = Karena P 2 >, maka 79
X 3 = X 2 + = 2 + = 3 dan Y 3 = Y 2 = 8 = 7, jadi Titik selanjutna : (3,7) P 3 = p 2 + 2 3 + 2 3 = + 2.(3) + 2.(7) = 6 Dengan algoritma simetris delapan titik, maka diperoleh titiktitik berikut : (3,7), ( 3,7), (3, 7), ( 3, 7), (7,3), ( 7,3), (7, 3), ( 7, 3) ================================================= Gerakkan setiap posisi piksel (, ) pada garis lingkaran dengan titik pusat (4,6) diperoleh titik-titik berikut (7, 3), (, 3), (7, ), (, ), (, 9), ( 3, 9), (, 3), ( 3, 3) Iterasi ke-4: K = 3 X 3 = 3 Y 3 = 7 P 3 = 6 Karena P 3 <, maka X 4 = X 3 + = 3 + = 4 dan Y 4 = Y 3 = 7, jadi Titik selanjutna : (4,7) P 4 = p 3 + 2 4 + = 6 + 2.(4) + = 3 Dengan algoritma simetris delapan titik, maka diperoleh titiktitik berikut : (4,7), ( 4,7), (4, 7), ( 4, 7), (7,4), ( 7,4), (7, 4), ( 7, 4) Gerakkan setiap posisi piksel (, ) pada garis lingkaran dengan titik pusat (4,6) diperoleh titik-titik berikut (8, 3), (, 3), (8, ), (, ), (, ), ( 3, ), (, 2), ( 3, 2) 8
================================================= Iterasi ke-5: K = 4 X 4 = 4 Y 4 = 7 P 4 = 3 Karena P 4 >, maka X 5 = X 4 + = 4 + = 5 dan Y 5 = Y 4 = 7 = 6, jadi Titik selanjutna : (5,6) P 5 = p 4 + 2 4 + 2 4 = 3 + 2.(5) + 2.(6) = 2 Dengan algoritma simetris delapan titik, maka diperoleh titiktitik berikut : (5,6), ( 5,6), (5, 6), ( 5, 6), (6,5), ( 6,5), (6, 5), ( 6, 5) Gerakkan setiap posisi piksel (, ) pada garis lingkaran dengan titik pusat (4,6) diperoleh titik-titik berikut (9, 2), (, 2), (9, ), (, ), (, ), ( 2, ), (, ), ( 2, ) ================================================= Iterasi ke-6: K = 5 X 5 = 5 Y 5 = 6 P 5 = 2 Karena P 5 >, maka X 6 = X 5 + = 5 + = 6 dan Y 6 = Y 5 = 6 = 5, jadi Titik selanjutna : (6,5) Iterasi dihentikan karena X > Y. 8
Bila digambar, hasil untuk oktan ke- ditunjukkan oleh gambar (3.). Gambar 3. Posisi piksel pada pembentukan lingkaran dengan titik pusat (,) dan jari-jari 8 3.5 Polgon Polgon adalah kumpulan garis lurus ang saling menambung hingga membentuk suatu luasan. Garis-garis ini disebut edge (sisi polgon). Titik pertemuan tiap dua sisi disebut verteks. Biasana polgon dinatakan dengan koordinat verteks-verteks ini. Ada dua jenis polgon aitu polgon sederhana dan polgon tidak sederhana. Ciri polgon sederhana adalah tidak semua verteks berada pada bidang ang sama, tidak mempunai sisisisi ang berpotongan, dan tidak mempunai lubang. 82
(a) Gambar 3. 2 Polgon sederhana dan polgon tidak sederhana Polgon sederhana dibagi menjadi dua aitu conve polgon dan non conve polgon. Ciri conve polgon adalah semua sudut interiorna < 8 o, atau setiap segmen garis ang dihasilkan dari dua buah verteks sembarang dalam polgon berada didalam polgon. Bentuk polgon ang paling sederhana adalah segitiga, karena semua polgon dapat dipecah-pecah menjadi bagian ang terkecil aitu segitiga seperti pada Gambar 3.2(b). Mengapa polgon? Dengan polgon secara praktek kita bisa melakukan pendekatan untuk membentuk permukaan setiap obek 3-D, jika kita mempunai jumlah polgon ang cukup. Sebagai contoh permukaan bola, torus, dan teko seperti pada Gambar 3.3 dapat dibuat dari beberapa polgon. 83
Gambar 3. 3 : Permukaan bola, torus dan teko ang terbentuk dari banak polgon. 3.6 Filling Polgon Dalam grafis, pemberian warna dibutuhkan untuk mempercantik tampilan polgon. Karena itu diperlukan algoritma khusus untuk mengisi warna pada polgon tersebut. Teknik atau algoritma untuk pengisian warna pada polgon disebut filling polgon atau area filling. Ada dua macam dasar pendekatan filling polgon pada sistem raster aitu scan-line Polgon Fill Algorithm dan Boundar-Fill Algorithm: 3.6. Scan Line Polgon Fill Algorithms Pemberian warna pada polgon dilakukan dengan cara menscan secara horisontal dari kiri ke kanan. Hal ini dilakukan untuk mendapatkan titik potong dengan tepi polgon, kemudian mengurutkan nilai-nilai titik potong dari kiri ke kanan dan memberi warna pada piksel-piksel diantara dua pasangan berurutan ( - 2). Hal ini dilakukan dari garis scan ang paling bawah (nilai terkecil) hingga garis scan ang paling atas seperti pada Gambar 3.4. Metode ini bisa juga digunakan 84
untuk pengisian warna pada obek-obek sederhana lainna, misalna lingkaran, ellip dan lain-lain. Scanline terakhir Titik potong Scanline pertama Titik potong 2 Piksel-piksel diantara titik potong - 2 Gambar 3. 4 Metode scan-line Bagaimana kita tahu bahwa piksel tersebut berada didalam polgon atau diluar polgon? Inside-Outside test Perhatikan Gambar 3.5. Untuk mengidentifikasi bagian dalam dan bagian luar digunakan aturan paritas ganjil-genap ang biasa disebut sebagai odd-even rule atau odd parit rule. Semula kita men-set paritas dengan nilai genap. Setiap ditemukan titik potong nilai paritas dibalik, ang semula genap dibalik menjadi ganjil, sebalikna ang semula ganjil dibalik menjadi genap. Beri warna pada piksel jika paritasna Ganjil. 85
paritas ganjil paritas genap Gambar 3. 5 Aturan paritas ganjil-genap untuk mengisi warna Masalah: Pada Gambar 3.6(a), verteks a, b, c, dan d merupakan pertemuan dari dua buah segmen garis. Mengapa pada verteks a dan d dihitung sekali, sedangkan pada verteks b dan c dihitung dua kali? 86
2 a b c d 2 (a) a c b d (b) Gambar 3. 6 Perhitungan paritas pada verteks a, b, c, dan d. Solusi: Buatlah perputaran tepi polgon searah jarum jam seperti pada Gambar 2.6(b). Check, apabila pada suatu verteks arah anak 87
panahna berubah (pada verteks b dan c aitu: naik-turun atau turun-naik) maka pada verteks tersebut dihitung dua kali. Sebalikna jika arah anak panahna tidak berubah (pada verteks a dan d aitu: naik-naik atau turun-turun) maka pada verteks tersebut dihitung sekali. Masalah: Perhatikan Gambar 3.7(a), Bagaimana perhitungan tepi horisontal AB, CD, GF, dan HI? (a) (b) Gambar 3. 7 Polgon dengan sisi-sisi horisontal Solusi: Abaikan verteks-verteks ang terletak pada tepi horisontal, atau jangan dimasukkan dalam perhitungan paritas ganjil-genap, sehingga tampak seperti pada Gambar 3.7(b). 88
Algoritma scanline menggunakan kaidah paritas ganjil-genap: Tentukan titik potong garis scan dengan semua sisi polgon Urutkan titik potong tadi berdasarkan koordinat sumbu Warnai semua piksel diantara pasangan titik potong ( - 2) ang terletak didalam polgon menggunakan kaidah paritas ganjil-genap. Kelemahan algoritma ini adalah: Memerlukan biaa tinggi (big cost) karena pada setiap sisi polgon selalu dilakukan pengujian terhadap piksel-piksel. Solusi: Menggunakan konsep edge table (ET) Edge Table ( ET ), edge table (ET) adalah tabel ang berisi sisisisi polgon. Kita akan menggunakan dua edge table ang berbeda, aitu: Active Edge Table (AET) dan Global Edge Table (GET). (AET) digunakan untuk menimpan semua sisi polgon ang berpotongan dengan garis scan, sedangkan GET digunakan untuk menimpan semua sisi polgon dan mengupdate AET. Perhitungan titik potong dengan garis scan ( @ma, ma ) ( @min, min ) 89
9 Kita tahu bahwa: Setiap garis scan ang baru berlaku : Kita perlu menghitung untuk setiap garis scan: Sehingga, Dan Maka min @ ma @ min ma, m b m i i m b m b m b i i i i, i i m m m b m b i i i i
Ini adalah cara ang efisien untuk menghitung nilai. Active Edge Table (AET) Tabel berisi satu entr per sisi ang berpotongan dengan garis scan aktif. Pada setiap garis scan ang baru : o Hitung titik potong baru untuk semua sisi menggunakan rumus : o Tambahkan setiap sisi baru ang berpotongan o Hapus setiap sisi ang tidak berpotongan Untuk efisiensi Update AET, kita tetap menjaga GET. Global Edge Table (GET) Tabel ang berisi informasi tentang semua sisi-sisi polgon GET mempunai satu tempat unttuk setiap garis scan o Setiap tempat menimpan daftar sisi ang mempunai nilai min o Setiap sisi ditentukan hana dalam satu tempat Tiap-tiap entr dalam GET berisi o Nilai ma dari sisi o Nilai @min (nilai pada titik min) o Nilai pertambahan (/m) Scan Line Polgon Fill Algorithms menggunakan ET, GET dan AET. Tambahkan sisi-sisi polgon ke GET 2. Set ke koordinat terkecil dalam GET 9
3. Inisialisasi, set AET = kosong 4. Ulang sampai AET dan GET kosong a. Tambahkan sisi-sisi dari GET ke AET ang mana min =. b. Hilangkan sisi-sisi dari AET bila ma =. c. Urutkan AET berdasarkan d. Warnai piksel ang terletak diantara pasangan titik potong dalam AET e. Untuk setiap sisi dalam AET, ganti dengan + /m f. Set = + untuk bergerak ke garis scan berikutna Contoh 2. Diketahui polgon berikut, gunakan konsep edge table untuk mewarnai polgon tersebut. Gambar 3. 8 92
Sisi-sisi pembentuk polgon: Gambar 3. 9 93
Gambar 3. 2 AET ma,,/m 4, 2, 2/3 5, 2, /4 EA AB kiri = 2 kanan = 2 Pewarnaan dilakukan diantara titik potong ( kiri kanan) = (2 2), hasilna adalah; 94
Gambar 3. 2 Gambar 3. 22 AET ma,,/m 4, 4/3, 2/3 EA 5, 9/4, /4 AB i+ = i + /m i+ = i + /m = 2 2/3 = 2 + /4 = 4/3 = 9/4 kiri = 4/3 dan kanan = 9/4 2 Pewarnaan dilakukan diantara titik potong ( kiri kanan) = ( 2), hasilna adalah 95
Gambar 3. 23 Gambar 3. 24 AET ma,,/m 4, 2/3, 2/3 EA i+ = i + /m = 4/3 2/3 = 2/3 5, /4, /4 AB i+ = i + /m = 9/4 + /4 = /4 kiri = 2/3 dan kanan = /4 3 Pewarnaan dilakukan diantara titik potong ( kiri kanan) = ( 3), hasilna adalah; 96
Gambar 3. 25 Gambar 3. 26 AET ma,,/m 8,, 3/4 EA = DE pada EA, ma = 4. EA harus dihapus dari AET. Dalam GET sisi DE tersimpan pada = 4. Jadi sisi EA diganti dengan sisi DE 5, /4, /4 AB i+ = i + /m = /4 + /4 = /4 kiri = dan kanan = /4 3 97
Pewarnaan dilakukan diantara titik potong ( kiri kanan) = ( 3), hasilna adalah Gambar 3. 27 Gambar 3. 28 AET ma,,/m 8, 3/4, 3/4 DE i+ = i + /m = + 3/4 = 3/4 6, 3, 3 AB = BC pada AB, ma = 5. AB harus dihapus dari AET. Dalam GET sisi BC tersimpan pada = 5. Jadi sisi AB diganti dengan sisi BC kiri = 3/4 dan kanan = 3 98
Pewarnaan dilakukan diantara titik potong ( kiri kanan) = ( 3), hasilna adalah; Gambar 3. 29 AET ma,,/m Gambar 3. 3 8, 6/4, 3/4 DE 8, 6, 3/2 BC = CD pada BC, ma = 6. BC harus i+ = i + /m dihapus dari AET. Dalam GET sisi CD tersimpan pada = 6. Jadi sisi = 3/4 + 3/4 BC diganti dengan sisi CD = 6/4 kiri = 6/4 2 dan kanan = 6 99
Pewarnaan dilakukan diantara titik potong ( kiri kanan) = (2 6), hasilna adalah; Gambar 3. 3 Gambar 3. 32 AET ma,,/m 8, 9/4, 3/4 DE i+ = i + /m = 6/4 + 3/4 = 9/4 8, 9/2, 3/2 CD i+ = i + /m = 6 3/2 = 9/2 kiri = 9/4 2 dan kanan = 9/2 5
Pewarnaan dilakukan diantara titik potong ( kiri kanan) = (2 5), hasilna adalah; Gambar 3. 33 Gambar 3. 34 AET ma,,/m 8, 3, 3/4 DE i+ = i + /m = 9/4 + 3/4 = 3 8, 3, 3/2 CD i+ = i + /m = 9/2 3/2 = 3 kiri = 3 dan kanan = 3
Pewarnaan dilakukan diantara titik potong ( kiri kanan) = (3 3), hasilna adalah; Gambar 3. 35 Karena sisi polgon dalam GET ataupun AET sudah habis, maka proses dihentikan. 3.6.2 Boundar-Fill Algorithm Prosedur boundar-fill menerima tiga parameter aitu: koordinat titik (,), warna isi dan warna garis batas. Proses pengisian warna tertentu dimulai dari titik (,), kemudian memeriksa posisi titik tetanggana, apakah titik tetangga tersebut memiliki warna batas: o Jika tidak, warnai titik tersebut dengan warna tertentu. o Selanjutna periksa lagi posisi dan warna titik tetanggana. o Proses diulangi terus hingga seluruh titik pada area pengisian telah diuji. 2
Dengan teknik ini pengisian warna dimulai dari sebuah titik ang berada didalam area (,) polgon dan mewarnai piksel dari titik tetanggana hingga semua piksel ang berada didalam polgon telah diwarnai seperti pada Gambar 2.2. Gambar 3. 36 Metode Boundar-Fill Ada 2 macam cara untuk melihat titik tetangga, aitu : 4 tetangga, melihat titik ang berada diatas, bawah, kanan dan kiri 8 tetangga, melihat titik ang berada diatas, bawah, kanan, kiri, pojok kiri atas, pojok kiri bawah, pojok kanan atas dan pojok kanan bawah. 3
a) 4 - tetangga 4 X 2 3 Gambar 3. 37 b) 8 - tetangga 2 3 8 X 4 7 6 5 Gambar 3. 38 Contoh 2. diketahui : polgon = {(,), (2,,5), (5,4), (8,7), (,4), (,2), (,)}, lakukan Area Filling menggunakan algoritma Boundar Fill Algorithm 4-tetangga. Jawab: titik-titik sebagai pembentuk polgon = {(,), (2,,5), (5,4), (8,7), (,4), (,2), (,)}. Bila poligon tersebut digambar, diperoleh gambar berikut : 4
7 6 5 4 3 2 2 3 4 5 6 7 8 9 Gambar 3. 39 Misalkan titik awal pencarian adalah (3,3). Tandai titik (3,3) dengan warna tertentu, misalna warna merah. Lihat 4- tetanggana, aitu titik (3,2), (3,4), (2,3), (4,3). 7 6 5 4 3 2 2 3 4 5 6 7 8 9 Gambar 3. 4 5
Ke-4 tetangga tersebut bukan garis batas poligon, sehingga 4- titik tersebut diwarnai merah. 7 6 5 4 3 2 2 3 4 5 6 7 8 9 Gambar 3. 4 Titik ang telah diproses: (3,3) Titik ang belum diproses : (3,2), (3,4), (2,3), (4,3) Ambil titik (3,2). Titik ang telah diproses: (3,2), (3,3) Titik ang belum diproses : (3,4), (2,3), (4,3) 4-tetangga titik tersebut adalah (3,3), (3,), (2,2), (4,2). Terlihat bahwa titik (4,2) dan (2,2) bukan garis batas poligon, sehingga diwarnai dengan warna merah. Titik (3,3) sudah diwarnai. Titik (3,) adalah garis batas jadi tidak diwarnai. 6
7 6 5 4 3 2 2 3 4 5 6 7 8 9 Gambar 3. 42 Titik ang telah diproses: (3,3)(3,2) Titik ang belum diproses : (3,4), (2,3), (4,3) (2,2), (4,2) Ambil titik (3,4). 4-tetangga titik tersebut adalah (3,3), (3,5), (2,4), (4,4). Titik (3,3) sudah diwarnai. Titik (3,5), (2,4) dan (4,4) adalah garis batas jadi tidak diwarnai. Proses diulang sehingga seluruh bagian dalam poligon diwarnai dengan warna merah. 7
7 6 5 4 3 2 2 3 4 5 6 7 8 9 Gambar 3. 43 3.6.3 Flood-Fill Algorithm Terkadang kita ingin mewarnai ( atau memberi warna ang baru) pada sebuah area ang mempunai warna lebih dari satu. Perhatikan gambar 2.2 berikut: (a) (b) Gambar 3. 44 penggantian warna obek menggunakan Flood-Fill Algorithm. (a) lingkaran berwarna merah, segitiga berwarna hijau dan persegi berwarna biru. Obek tersebut warnana diubah menjadi (b) lingkaran berwarna abuabu, segitiga berwarna kuning dan persegi berwarna coklat 8
Algoritma ini dimulai dari titik ang berada didalam area (,) dan mengganti semua pikselna dengan warna baru sehingga bagian dalam area mempunai warna ang sama. Pengujian titik tetangga bisa menggunakan 4-tetangga atau 8-tetangga. 9
Ringkasan Bab 3 Output primitif adalah struktur dasar geometri ang paling sederhana dari gambar grafika komputer. Titik dan garis adalah contoh dari output primitif ang dapat digunakan untuk membentuk gambar, misalna lingkaran, kerucut, permukaan berbentuk persegi, kurva dan permukaan berbentuk lengkung, warna area dan karakter, dan lain-lain. Piksel adalah elemen gambar terkecil berupa sebuah titik ang ditempatkan dilaar. warna merupakan atribut dari piksel. Frame buffer adalah area memor tempat informasi gambar disimpan. Ada 3 algoritma untuk membentuk garis, aitu Algoritma brute force, DDA, dan Bressenham. Sedangkan untuk membentuk lingkaran digunakan algoritma lingkaran midpoint. Polgon adalah kumpulan garis lurus ang saling menambung hingga membentuk suatu luasan. Garis-garis ini disebut edge (sisi polgon). Titik pertemuan tiap dua sisi disebut verteks. Untuk mengisi warna pada polgon diperlukan algoritma khusus. Teknik atau algoritma untuk pengisian warna pada polgon disebut filling polgon atau area filling. Ada dua macam dasar pendekatan filling polgon pada sistem raster aitu scan-line Polgon Fill Algorithm dan Boundar-Fill Algorithm.
Soal-Soal Latihan. Apa ang dimaksud dengan output primitif? Sebutkan! 2. Diketahui 2 buah titik A dan titik B. Bila titik A sebagai titik awal dan titik B sebagai titik akhir, tentukan titik-titik antara ang menghubungkan titik A dan titik B sehingga membentuk garis AB dengan menggunakan (a) Algoritma brute force (b) algoritma DDA (c) algoritma Bressenham, jika : i) A(3,2) dan B(, 6) ii) A(3,2) dan B(7, 7) iii) A( 5, ) dan B(, ) iv) A( 5, 4) dan B(,) 3 Berdasarkan soal no.2, bagaimana menurut saudara, mana algoritma ang lebih baik, Algoritma brute force, algoritma DDA atau algoritma Bressenham? Mengapa? 4. (a) Buatlah gambar kurva lingkaran dengan pusat lingkaran (,) dan jari-jari 6, perhitungan berdasarkan dari oktan kuadran pertama dimana = sampai = r. Koordinat titik awal dimulai dari (,r) = (,6). Untuk mempermudah perhitungan gunakan P = r ( sekali lagi, ini hana untuk mempermudah perhitungan dalam contoh). (b) sama seperti soal (a), tetapi pusat lingkarang di P(2,5).
5. Diketahui : polgon = {(2,), (3,6), (5,4), (8,8), (,4), (2,2), (2,)}, lakukan Area Filling menggunakan (a) algoritma Scan Line Polgon (b) algoritma Boundar Fill. 2
Bab 4 Atribut Output Primitif TUJUAN PEMBELAJARAN Agar pembaca memahami pengertian atribut output primitive Agar pembaca memahami atribut titik Agar pembaca memahami atribut garis OUTCOME PEMBELAJARAN Pembaca bisa mendefinisikan pengertian output primitive Pembaca bisa menjelaskan atribut titik Pembaca bisa menjelaskan atribut garis Pendahuluan Setelah berhasil membangun output primitif, langkah selanjutna adalah melakukan pengaturan terhadap atribut output primitif. Atribut adalah semua parameter ang mempengaruhi bagaimana primitive grafis ditampilkan. Atribut dari output primitif dapat berupa: Ukuran garis batas Tipe garis batas 3
Warna garis batas Warna objek (Fill color / Area Filling) 4. Atribut Titik Atribut dasar untuk titik adalah ukuran dan warna. Ukuran titik direpresentasikan sebagai beberapa piksel. Sedangkan warna titik bisa berupa monokrom (hitam/putih), grascale (abu-abu), ataupun berwarna (RGB). titik ukuran 2 point, dengan warna biru titik ukuran 26 point, dengan warna abu-abu 4.2 Atribut Garis Atribut dasar untuk garis adalah tipe (tpe), tebal (width) dan warna (color). Dalam beberapa paket program aplikasi grafika seperti paint, photo shop, corel draw dan lain-lain, garis dapat ditampilkan dengan menggunakan pilihan pen atau brush. 4.3 Tipe Garis Garis memiliki beberapa tipe, seperti garis tanpa terputus (solid line), garis putus-putus (dashed line), garis titik-titik (dotted line) dan kombinasi garis dan titik (dash-dotted line). Garis putusputus dibuat dengan memberikan jarak dengan bagian solid ang sama. Garis titik-titik dapat dibuat dengan cara memberikan jarak ang lebih besar dari bagian solid line. Garis putus-putus dapat juga dihasilkan dari sstem raster 4
menggunakan piel mask, contohna akan menampilkan garis putus-putus dengan panjang dash 3 dan jarak antar dash 5. Gambar 4. memperlihatkan tipe-tipe garis: Solid line Dashed line Dotted line Gambar 4. Tpe garis : solid line, dashed line, dotted line dan dasheddotted line 4.3. Ukuran Garis Implementasi ukuran garis tergantung pada kemampuan device output ang digunakan. Pada video monitor garis tebal ditampilkan sebagai kumpulan garis sejajar ang berdekatan, sedangkan pada plotter akan menggunakan ukuran pen ang berbeda-beda. Pada raster, tebal garis standar diperoleh dengan cara menempatkan satu piel pada tiap posisi, seperti pada algortima Bressenham. Garis dengan ketebalan ang lain diperoleh dengan perkalian integer positif dan garis standar. Gambar 3-2 menunjukkan berbagai ukuran garis mulai ¼ pt sampai dengan 6 pt ang terdapat pada software aplikasi Microsoft Word. 5
Gambar 4. 2 Ukuran garis dari ¼ pt sampai dengan 6 pt pada software aplikasi Microsoft Word. 4.3.2 Pen dan Brush Penggunaan pen dan brush pada aplikasi tertentu terkadang sangat dibutuhkan. Pen dan Brush merupakan atribut lain dari garis ang mempunai beberapa kategori aitu, bentuk, ukuran dan pola. Beberapa bentuk pen atau brush dapat dilihat pada Gambar 4.3 (diambil dari aplikasi Paint) : Gambar 4. 3 Beberapa bentuk pen atau brush pada paket program aplikasi Paint 6
4.4 Warna Garis Pada sstem raster, piel merupakan komponen dasar penusun garis. Sehingga atribut warna garis ditentukan oleh atribut warna dari piel penusunna. Jumlah warna setiap piel bergantung pada jumlah bit ang tersedia per piel pada frame buffer. Bila satu piel mempunai jumlah bit, maka piel tersebut berwarna hitam atau putih. Artina piel tersebut mempunai 2 kemungkinan warna aitu hitam atau putih. Bila satu piel mempunai jumlah 8 bit, maka piel tersebut mempunai 256 kemungkinan warna atau biasa disebut sebagai grascale. Bila satu piel mempunai jumlah 24 bit, maka piel tersebut mempunai sekitar 6 juta kemungkinan warna atau biasa disebut sebagai true color atau RGB. 7
Ringkasan Bab 4 Atribut adalah semua parameter ang mempengaruhi bagaimana primitive grafis ditampilkan. Atribut dari output primitif dapat berupa: Ukuran garis batas Tipe garis batas Warna garis batas Warna objek (Fill color / Area Filling) Atribut dasar untuk titik adalah ukuran dan warna. Atribut dasar untuk garis adalah tipe (tpe), tebal (width) dan warna (color). 8
Soal-Soal Latihan. Buatlah algoritma untuk membuat garis dengan ketebalan tertentu. 2. Buatlah algoritma untuk membuat garis dengan ketebalan tertentu dan warna tertentu. 3. Buatlah algoritma untuk membuat garis dengan ketebalan tertentu, warna biru dan warna tepi garis adalah merah. 9
4. Ubahlah algoritma pembentukan garis DDA dan Bressenham untuk membuat garis putus-putus (dashed), garis titik-titik (dotted) dan garis putus-titik-titik. 2
Bab 5 Transformasi Geometri TUJUAN PEMBELAJARAN Pembaca bisa memahami konsep transformasi geometri 2-D dan 3-D: translasi, rotasi, Refleksi, Shear dan scalling. OUTCOME PEMBELAJARAN Pembaca bisa menghitung transformasi geometri 2-D secara manual Pendahuluan Transformasi geometri digunakan untuk memberikan metodemetode perubahan bentuk dan posisi dari sebuah obek. Sehingga transformasi merupakan alat ang paling mendasar ang digunakan untuk grafika komputer. Transformasi membantu menederhanakan tugas-tugas dari pemodelan geometri (geometric modeling), animasi, dan rendering. Transformasi ang paling banak digunakan di dalam grafika komputer adalah transformasi affin (affine tranformation), ang mempunai bentuk sangat sederhana. Sejumlah transformasi dasar dari transformasi affin antara lain adalah : penggeseran (translation), penskalaan (scaling), dan pemutaran (rotation). 2
5. Translasi (Pergeseran) Sebuah titik A(,) digeser searah sumbu X sejauh t dan searah sumbu Y sejauh t (perhatikan Gambar 5.), maka titik hasil pergeseran tersebut dapat ditulis sebagai berikut : = + t = + t atau dapat disusun sebagai berikut : = +. + t =. + + t atau dalam bentuk matriks : t. t 22
Contoh 5. Tentukan posisi dari segitiga ABC ang dibentuk oleh titik-titik A(2,2), B(,2) dan C(6,2) jika dilakukan penggeseran pada Jawab: 8 7. 2. 2 2 6 8 2 7 8 7 8 7 9 8 9 4 9 Yaitu A (,9), B (8,9) dan C (4,9) 5.2 Scalling (Penskalaan) Penskalaan adalah proses untuk memperbesar atau memperkecil suatu obek atau gambar. Misalkan titik A(,) diskalakan terhadap titik P(a,b) dengan faktor skala sebesar S searah sumbu X dan sebesar S searah sumbu Y (perhatikan Gambar 5., 23
maka koordinat hasil penskalaan dapat ditentukan sebagai berikut : = S (-a) + a = S (-b) + b atau = S + a S a = S + b S b atau dalam bentuk matriks : S a S. S b S a b Jika pusat penskalaanna adalah sumbu koordinat P(,), maka a = dan b =, sehingga persamaanna menjadi : S. S Matrik penajian untuk penskalaan terhadap titik pusat P(,) adalah; S S =. S 24
Contoh 5.2 Tentukan posisi dari segitiga ABC ang dibentuk oleh titik-titik A(2,2), B(,2) dan C(6,2), jika dilakukan penskalaan dengan faktor skala Jawab: 4 2 terhadap titik pusat P(,) 4 2. 2 2 2 6 8 2 4 4 4 24 24 Yaitu A (8,4), B (4,4) dan C (24,24) 5.3 Rotasi (Perputaran) Seperti halna pergeseran dan penskalaan, untuk pemutaran sembarang obek dilakukan dengan pemutaran setiap titik ujung garis. Pemutaran searah jarum jam akan dinatakan dengan sudut negatif, sedangkan pemutaran berlawanan dengan jarum jam dinatakan dengan sudut postif. Dengan menganggap besarna sudut putar adalah, maka hasil pemutaran titik A(,) dengan pusat putar P(,) akan dihasilkan titik A (, ) seperti ang diperlihatkan pada Gambar 5.3 berikut: 25
cos sin. sin cos Matrik penajian untuk rotasi terhadap titik pusat P(,) adalah cos sin R =. sin cos Contoh 5.3 Tentukan posisi dari segitiga ABC ang dibentuk oleh titik-titik A(2,2), B(,2) dan C(6,2), jika dilakukan pemutaran dengan pusat sumbu koordinat dengan rotasi putarna 8 derajat berlawanan arah dengan arah jarum jam. Jawab : 2. 2 2 6 2 2 2 2 6 2 Yaitu A (-2, -2), B (-, -2) dan C (-6,-2) 5.4 Sistem Koordinat Homogen 2D Dari berbagai bentuk matrik penajian, terlihat bahwa hana transformasi translasi saja ang belum bisa dinatakan sebagai matrik penajian, karena diperlukan operasi perkalian dan penjumlahan, sedangkan pada jenis transformasi ang lain cukup diperlukan operasi perkalian matriks saja, sehingga perlu dicari suatu cara agar translasipun juga bisa dinatakan dalam 26
27 operasi perkalian matriks. Hal ini dapat dilakukan dengan dengan menggunakan sistem koordinat homogen. Sistem koordinat homogen adalah sistem koordinat ang mempunai satu dimensi lebih tinggi dari sistem koordinat ang ditinjau. Sebagai contoh, sistem koordinat homogen dari sistem koordinat dua dimensi adalah sistem koordinat 3 dimensi dengan cara menentukan salah satu sumbuna sebagai suatu konstanta. Dengan menggunakan sistem koordinat homogen, persamaan umum transformasi titik A(,) menjadi A (, ) dapat ditulis sebagai :. t d b t c a Dari persamaan tersebut, maka masing-masing transformasi diatas bisa dituliskan sebagai berikut : Matrik penajian Translasi : T = t t, sehingga = t t
28 Matrik penajian Scalling : S = S S, sehingga = S S Matrik penajian Rotasi: R = cos sin sin cos, sehingga = cos sin sin cos Contoh 5.4 Tentukan posisi dari segitiga ABC ang dibentuk oleh titik-titik A(,2), B(,8) dan C(3,2) jika dilakukan transformasi berikut : a) Translasi kearah sumbu = 4, kearah sumbu = 2 b) Scalling dengan skala kearah sumbu = 2, kearah sumbu = 2 c) Diputar 9 o berlawanan jarum jam Jawab:
29 a) = 2 4 2 8 2 3 = 6 7 4 4 diperoleh A (4,), B (4,6) dan C (7,) b) = 2 2 2 8 2 3 = 4 6 4 6 2 2 diperoleh A (2, 4), B (2, 6) dan C (6, 4) c) = cos9 sin 9 sin 9 cos9 2 8 2 3 = 3 2 8 2 diperoleh A ( 2, ), B ( 8, ) dan C ( 2, 3) 5.5 Komposisi Matrik Transformasi 2D Dengan menggunakan matrik penajian, kita bisa menusun transformasi secara berurutan ang biasa disebut sebagai komposisi matrik tranformasi, aitu dengan cara menghitung
3 perkalian matrik penajian secara berurutan. Karena perkalian matrik tidak bersifat komutatif, maka urut-urutan perkalian matrik harus diperhatian (tidak boleh kebalik) karena menunjukkan urut-urutan transformasi ang dilakukan. Contoh 5.5 Sebuah segmen garis AB dimana A(,5) dan B(,) akan dirotasikan 9 o terhadap titik A. Bagaimana proses ini dilakukan? Apakah langsung dilakukan proses rotasi 9 o? Gambar 5. Jawab: Jika langsung dirotasikan 9 o hasilna sebagai berikut: 5 A B 5 A B 5 5 5 cos(9) sin(9) sin(9) cos(9) 5 5
Diperoleh titik hasil transformasi : A (,5) dan B (,) B 5 5 A A B 5 5 Gambar 5. 2 Tentu saja hasil ini tidak seperti ang kita harapkan (hasilna salah). Cara ang benar adalah menggunakan komposisi transformasi, aitu (a) translasikan segmen garis tersebut hingga titik A (sebagai pusat rotasi) berada di titik asal (,). (b) Kemudian rotasikan 9 o terhadap titik asal, dan terakhir (c) translasikan titik A sehingga posisina berada di tempat semula. 5 5 A B A B 5 5 (a) (b) Gambar 5. 3 3
32 (a) (b) Gambar 5. 4 Secara matematis dapat ditulis sebagai berikut : AB = T(5) R(9) T( 5) AB 5 cos(9) sin(9) sin(9) cos(9) 5 5 5 cos(9) sin(9) sin(9) cos(9) 5 5 5 5 5 5 5 5 A B 5 5 5 A B
Diperoleh titik hasil transformasi : A (5,) dan B (5,5) 5 5 B A B A 5 5 Gambar 5. 5 Contoh 5.6 Tentukan posisi dari segitiga ABC ang dibentuk oleh titik-titik A(5,5), B(,5) dan C(8,) jika dilakukan komposisi transformasi berikut: penggeseran pada 6 6, dilanjutkan dengan rotasi 9º berlawanan jarum jam, kemudian diakhiri dengan penskalaan dengan faktor skala pusat P(,). Jawab: 3 3 terhadap titik Dalam hal ini kita harus menghitung matrik komposisi berikut S * R * T * 33
34 Proses dilakukan terhadap operasi translasi terlebih dahulu 5 5 8 5 6 6 cos(9) sin(9) sin(9) cos(9) 3 3 42 48 33 48 33 33 Diperoleh titik hasil transformasi: A ( 33, 33), B ( 33, 48) dan C ( 48, 42) 5.8 Transformasi Geometri 3D Transformasi geometri 3D merupakan pengembangan dari transformasi geometri 2D. Secara umum representasi transformasi pada 3D juga dibuat dalam bentuk matrik untuk memudahkan perhitungan. a) Translasi z (,, (,, z ) T (T, T, T z)
35 Dalam hal ini, z T z z T T Dalam bentuk matrik z T T T z z b) Penskalaan (Scalling) Dalam hal ini, z S z S S z.... z (,, (,, z ) T (S, S, S z)
36 Dalam bentuk matrik z S S S z z c) Rotasi Rotasi terhadap sumbu-z sebesar sudut Ө. Dalam hal ini, z z cos sin sin cos Dalam bentuk matrik rotasi terhadap sumbu-z sebesar sudut Ө. cos sin sin cos z z Dengan cara ang sama diperoleh rotasi terhadap sumbu- sebesar sudut Ө. z (,, (,, z )
37 cos sin sin cos z z z Dalam bentuk matrik rotasi terhadap sumbu- sebesar sudut Ө. cos sin sin cos z z rotasi terhadap sumbu- sebesar sudut Ө. cos sin sin cos z z z Dalam bentuk matrik rotasi terhadap sumbu- sebesar sudut Ө. cos sin sin cos z z
38 Ringkasan Bab 5 Transformasi geometri pada dasarna adalah proses ang mengubah kedudukan setiap titik ang membentuk obek. Transformasi ang banak digunakan di dalam grafika komputer adalah transformasi affin (affine tranformation), aitu: penggeseran (translation), penskalaan (scaling), pemutaran (rotation) dan shearing. Sistem koordinat homogen adalah sistem koordinat ang mempunai satu dimensi lebih tinggi dari sistem koordinat ang ditinjau. Berikut adalah bentuk matrik Tranformasi 2D Translasi : = t t Penskalaan : = S S Rotasi : = cos sin sin cos
39 Berikut adalah bentuk matrik Tranformasi 3D Translasi: z T T T z z Penskalaan: z S S S z z Rotasi terhadap sumbu-z : cos sin sin cos z z Rotasi terhadap sumbu-: cos sin sin cos z z Rotasi terhadap sumbu-: cos sin sin cos z z
Soal-Soal Latihan. Tentukan posisi dari segitiga ABC ang dibentuk oleh titiktitik A(3,25), B(8,5) dan C(6,2) jika dilakukan penggeseran pada 35. 2. Tentukan posisi dari segitiga ABC ang dibentuk oleh titiktitik A(23,42), B(3,22) dan C(6,2), jika dilakukan penskalaan dengan faktor skala P(,) 4 2 terhadap titik pusat 3. Tentukan posisi dari segitiga ABC ang dibentuk oleh titiktitik A(2,24), B(5,2) dan C(6,2), jika dilakukan pemutaran dengan pusat sumbu koordinat dengan rotasi putarna 3 derajat berlawanan arah dengan arah jarum jam. 4. Tentukan posisi dari segitiga ABC ang dibentuk oleh titiktitik A(,5,6), B(5,8,2) dan C(3,25,) jika dilakukan transformasi berikut : a) translasi kearah sumbu = 2, sumbu = 3, sumbu z = 4 4
b) Scalling dengan skala kearah sumbu = 5, sumbu = 3, sumbu z = 7 c) Diputar 45 o terhadap sumbu 4
Daftar Istilah AVI: AVI definisi Microsoft untuk Audio Video Interleave. Standar format file video untuk Platform Ms Windows. Binar: Salah satu jenis pada sistem Digital untuk menggambarkan pengkodean pada komputer, sehingga angka numerik hana dapat terdiri atas nilai nol dan satu (On atau Off) saja. CGI: Kependekan dari Computer Graphic Imager. Realtime: Istilah dalam dunia computer ang merupakan bagian dari jenis pengoperasian dimana penerimaan dan proses data begitu pula pengembalian hasil berlangsung begitu cepat sehingga berkesan bahwa input-proses-output serentak. Pada suatu Sistem-NLE pada saat penambahan efek dan overblending proses render segera dilaksanakan dan tanpa ada kesan interrupt (penundaan karena perhitungan render). Rendering: Proses perhitungan matematik sebagai hasil dari efek-efek transformasi untuk frame video (Contoh: perubahan ukuran, efek-efek baik image maupun video, pergerakan). Resolution: Jumlah Informasi pada satu Frame Video, biasana diukur dari jumlah piel horisontal dikalikan jumlah piel vertikal (Contoh misalna standar VGA dengan resolusi 6448 piel). Jika faktor-faktor lainna tidak ada perobahan maka resolusi ang lebih tinggi berarti kualitas gambar lebih baik. 42
Streaming: Pengiriman data video melalui internet atau jaringan lain, dimana video langsung dapat dilihat meskipun proses pengiriman masih berlangsung. 24-Bit-Color: Standar warna ang dewasa ini dipakai pada Komputer. Masing-masing komponen warna merah(red), hijau(green) dan biru(blue) disimpan pada informasi 8 Bit (3X8 Bit=24 Bit). Dengan komposisi warna 24 Bit dapat menghasilkan lebih dari satu juta (48576) variasi warna g. YCC: Suatu sinal Video ang terdiri atas Luminance Y - Komponen dan dua Crominance C -Komponen. 43
Daftar Pustaka Andreas Butz, Computergrafik, SS 25, Ludwig-Maimilians Universitaet Muenchen Asthana & Sinha, Computer Graphics for Scientists and Engineers, Second Revised Edition, New Age International Publishers, New Delhi, 996 998 (Revised) 23 (Reprint), ISBN : 8-224-874-5 Edhi Nugroho, Teori dan Praktek Grafika Komputer menggunakan DELPHI dan OpenGL, Penerbit Graha Ilmu, Yogakarta, Cetakan Pertama 25, ISBN : 979-756-7-X Francis S.Hill Jr, Computer Graphics, Department of Electrical and Computer Engineering Universit of Massachusetts, Macmillan Publishing Compan, New York, 99, ISBN -2-35486-6 James Fole, Van Daam, dkk., Grundlagen der Computergraphik Einfuehrung, Konzepte, Methoden, Addison-Wesle Publishing Compan, Bonn,.Auflage 994, ISBN 3-8939-647-44
Biografi Penulis Vincent Suhartono adalah pengajar di dua Fakultas aitu Fakultas Teknik Jurusan Elektro dan Fakultas Ilmu Komputer Jurusan Teknik Informatika. Pada saat ini menjabat sebagai Ketua Program Studi, Program Sarjana Teknik Biomedis, Universitas Dian Nuswantoro (UDINUS). Penulis pernah mengajar di Fakultas Teknik Jurusan Teknik Elektro Universitas Kristen Sata Wacana (UKSW) Salatiga. Dan sebelum terjun di dunia pendidikan, pernah sebagai praktisi dengan menjabat sebagai Electronic Data Processing (EDP) Manager pada perusahaan swasta asing (PMA) pada PT Floetotto Indonesia di Semarang. Penulis memiliki 3 gelar pendidikan di Jerman: Ing.-(grad) dari Fachhochschule Bielefeld, Dipl.-Ing. dan Dr.-Ing. dari Universitas Bremen. Bidang Kepakaran penulis adalah: Nachhrichtentechnik (Teknik Komunikasi), Künstliche Intelligenz (Intelligence Control - Robotik) dan Realzeit Programmierung (Real Time Operating Sstem). Sebagai Coauthor, penulis sudah terlibat dalam berbagai buku seperti; buku Teori Pengolahan Citra Digital (Ed.I, ANDI Offset UDINUS, Yogakarta-Semarang, 29 dengan ISBN:978-979- 29-974-6) dan Kecerdasan Buatan (Ed.I, ANDI Offset UDINUS, Yogakarta-Semarang, 2 dengan ISBN:978-979-29-276-). 45