Modul
Grafika Komputer Disusun Oleh: Maya Amelia
Fakultas Ilmu Komputer Universitas Indo Global Mandiri 2012
DAFTAR ISI
1. PENGENALAN GRAFIKA KOMPUTER 1.1 Pengertian Grafika Komputer 1.2 Elemen-Elemen Grafis 1.3 Sistem Grafika Komputer 1.4 Penerapan Grafika Komputer 2. OUTPUT PRIMITIF 2.1 Sistem Koordinat 2.1.1 Sistem Koordinat 2 Dimensi 2.1.2 Sistem Koordinat 3 Dimensi 2.2 Titik dan Garis 2.2.1 Algoritma Garis DDA (Digital Differential Analyzer) 2.2.2 Algoritma Garis Bressenham 2.3 Lingkaran 2.3.1 Algoritma Pembentuk Lingkaran 3. TRANSFORMASI DUA DIMENSI 3.1 Translasi 3.2 Dilatasi 3.3 Rotasi 3.4 Refleksi 3.5 Shear
4. TIGA DIMENSI 4.1 Konsep Tiga Dimensi 4.2 Benda Tiga Dimensi 4.3 Struktur Data Benda Tiga Dimensi 5. CLIPPING DUA DIMENSI 5. 1 Algoritma Cohen-Sutherland
BAB I PENGENALAN GRAFIKA KOMPUTER 1.1 Pengertian Grafika Komputer Grafika Komputer (Computer Graphic) adalah seperangkat alat yang terdiri dari hardware dan software untuk memproduksi suatu gambar, grafik atau citra realistic untuk seni, game komputer, foto dan animasi. Namun, bila dipandang dari segi ilmu, grafika komputer dapat pula diartikan sebagai bidang ilmu yang mempelajari bagaimana menghasilkan suatu tampilan/visualisasi menggunakan komputer. Bidang ilmu Grafika Komputer berbeda dengan bidang ilmu Pengolahan Citra (Image Processing), maupun bidang ilmu Pengenalan Pola (Pattern Recognition). Meskipun, ketiga bidang ilmu tersebut sama-sama berkaitan dengan citra atau gambar. Perbedaan tersebut dirincikan pada tabel berikut. Faktor
Grafika Komputer
Pengolahan Citra
Pengenalan Pola
pembeda Proses
Menghasilkan dengan
citra Mengolah
untuk Mengenali objek di dalam
prinsip-prinsip meningkatkan
geometri. Teknik
citra
Menggambar/
citra.
kualitasnya. membuat Mentransformasikan citra Mengelompokkan
citra dengan input berupa menjadi citra lain.
numerik
data
yang terdapat dalam citra
deskriptif
(misal:
koordinat titik, panjang
secara
garis, tebal garis, warna,
mesin.
dan
data
simbolik
otomatis
oleh
jari-jari lingkaran, dsb). Output/ hasil
Citra/gambar.
Citra
dengan
kualitas Informasi, deskripsi objek.
lebih baik. Tabel 1.1 Perbedaan antara grafika komputer, pengolahan citra, dan pengenalan pola
1.2 Elemen-Elemen Grafis Elemen grafis merupakan elemen yang dibutuhkan untuk dapat membuat gambar pada grafika komputer. Elemen-elemen grafis tersebut adalah sebagai berikut. a. Polylines Polylines merupakan objek yang dibentuk dari beberapa atau banyak garis. Garis sendiri terbentuk dari titik. Garis dapat membentuk berbagai jenis polylines polygon, kurva, dan lingkaran yang dapat membentuk polylines.
Gambar 1.1 Contoh objek polylines.
(a)
(b)
(c)
Gambar 1.2 (a) Contoh polygon. (b) Contoh kurva. (c) Contoh lingkaran. Garis memiliki atribut yang terdiri dari tipe garis, ketebalan garis, dan warna. Garis berdasarkan tipenya terdiri dari solid line (garis solid), dashed line (garis putus-putus), dan dotted line (garis titik-titik).
(a)
(b)
(c)
Gambar 1.3 (a) Garis solid. (b) Garis putus-putus. (c) Garis titik-titik.
b. Text Text merupakan karakter huruf, angka, dan simbol yang dapat membentuk kata atau tulisan. Jenis huruf pada grafika komputer dibagi menjadi 4 macam, yaitu sebagai berikut.
Serif Serif merupakan jenis huruf yang mempunyai kait di bagian ujungnya. Contoh: Times New Roman, Book Antiqua, dll. Sanserif Huruf dengan kategori ini ditandai dengan tidak adanya kait pada ujung setiap hurufnya. Contoh: Arial, Comic Sans MS, Tahoma, dll Agyptian Huruf yang tergolong kategori agyptian memiliki kait berbentuk segiempat dengan karakter yang kokoh. Contoh: Playbill, Rockwell Extra Bold, dll. Dekoratif Dekoratif merupakan jenis huruf yang mengutamakan bentuk indah. Contoh: Chiller, Monotype Corsiva, Jokerman, dll. c. Region d. Raster Image
1.3 Sistem Grafika Komputer Sistem grafika komputer terdiri dari sistem grafika komputer non-interaktif dan sistem grafika komputer interaktif. Sistem grafika komputer non-interaktif merupakan grafika komputer yang telah berbentuk hardcopy. User tidak dapat melakukan interaksi pada tampilan hardcopy. Sedangkan, pada sistem grafika komputer interaktif user dapat melakukan interaksi terhadap unsur grafika tersebut. Kerangka grafika komputer interaktif diperlihatkan pada gambar di bawah ini.
Gambar 1.4 Kerangka grafika komputer interaktif.
1.4 Penerapan Grafika Komputer Grafika komputer telah banyak diterapkan dalam berbagai bidang. Bentuk penerapannya sangat sering kita temui dalam kehidupan sehari-hari saat ini. Penerapannya antara lain adalah sebagai berikut. a. Entertainment Grafika komputer banyak sekali digunakan dalam bidang entertainment. Misalnya: dalam film animasi, pembuatan iklan di televisi, pembuatan video klip, penciptaan special effect pada tayangan film, pengeditan video dan audio pada musik, dll. Semua proses pembuatan entertainment tersebut pada masa saat ini tidak terlepas dari penggunaan komputer sebagai perangkat yang mampu menunjang proses pemodelan, visualisasi, dan editing.
Gambar 1.5 Contoh film animasi sebagai hasil penerapan dari grafika komputer. b. Game Digital Grafika komputer juga diterapkan pada berbagai game digital, baik itu game yang dimainkan melalui perangkat komputer, ponsel, video player, dan perangkat game lainnya. Semua efek yang ditimbulkan pada game digital tersebut tidak terlepas dari peranan penerapan grafika komputer.
Gambar 1.6 Contoh game digital sebagai hasil penerapan dari grafika komputer. c. Desain Grafis/ Computer Art Dalam proses membuat sebuah desain karya seni dengan menggunakan komputer digunakan perangkat lunak computer art. Contoh perangkat lunak tersebut antara lain: Adobe Photoshop, Adobe Ilustrator, Corel Draw, Macromedia, ACDSee, dll. Perangkat lunak tersebut merupakan perangkat lunak yang memanfaatkan proses grafika komputer.
Gambar 1.7 Contoh perangkat lunak computer art.
d. Visualisasi Data Guna mempermudah pemahaman dalam mempelajari suatu data, maka diperlukan suatu visualisasi yang dapat menggambarkan data tersebut. Untuk dapat membuat visualisasi tersebut, maka grafika komputerlah yang berperan dalam proses pembuatan visualisasi. Contohnya adalah pemvisualisasian data jumlah penjualan dalam bidang bisnis, pemvisualisasian bentuk sel darah pada bidang kedokteran, dll. e. CAD (Computer Aided Design) CAD merupakan tool berbasis komputer yang digunakan dalam proses analisis dan desain, khususnya untuk sistem arsitektural dan engineering. CAD banyak digunakan dalam mendesain objek, misalnya: gedung, rumah, mobil, pesawat, dll. Contoh perangkat lunak CAD yang populer adalah AutoCAD. f. CASE (Computer Aided Software Engineering) Dalam membuat pemodelan UML, flowchart, DFD, dll kita sering menggunakan software seperti Microsoft Visio, Power Designer, Rational Rose, dll. Software-software tersebut merupakan software CASE. Jika software CAD lebih digunakan untuk sistem arsitektural dan engineering, maka software CASE lebih ditujukan untuk penggunaan di bidang software engineering. g. GUI (Graphics User Interface) GUI merupakan antarmuka berbentuk grafis yang membuat interaksi manusia terhadap komputer dan perangkatnya menjadi lebih mudah. Tampilan yang kita lihat pada layar komputer saat ini, merupakan sebagian contoh dari GUI.
Gambar 1.7 Contoh tampilan GUI.
i. Pendidikan dan pelatihan Seringkali pada saat ini kita mempelajari sesuatu dengan cara melakukan simulasi terhadap objek yang kita pelajari dengan memanfaatkan kecanggihan komputer. Sebagai contoh jika kita ingin mempelajari jaringan, sekarang kita tidak harus benar-benar memiliki seluruh hardware jaringan dan mempraktekannya secara nyata. Melainkan, kita dapat mempelajarinya secara detail dengan melakukan praktek simulasi pada sebuah komputer dengan bantuan software Packet Tracer. Dengan menggunakan software tersebut kita dapat melatih kemampuan dalam membuat jaringan seperti layaknya benar-benar berinteraksi dengan hardware yang nyata.
Gambar 1.8 Contoh tampilan software Packet Tracer.
BAB II OUTPUT PRIMITIF
2.1 Sistem Koordinat 2.1.1 Sistem Koordinat 2 Dimensi Sistem koordinat dua dimensi merupakan sistem koordinat yang memiliki dua poros sumbu, yakni sumbu x (arah mendatar) dan sumbu y (arah vertikal). Koordinat 2 dimensi secara umum terdapat dua jenis, yakni : koordinat layar (screen coordinate) dan koordinat cartesius (cartesius coordinate). Gambar di bawah ini memperlihatkan perbedaan antara koordinat layar dan koordinat cartesius. Titik pusat (0,0)
x
y
x
Titik pusat (0,0)
y
(a)
(b)
Gambar 2.1 (a) Koordinat layar. (b) Koordinat cartesius. Pada koordinat layar titik pusat koordinat berada di bagian kiri atas dengan nilai x semakin ke kanan semakin besar dan nilai y semakin ke bawah semakin besar pula nilainya. Sedangkan, pada koordinat cartesius titik pusat koordinat berada di kiri bawah dengan nilai x semakin ke kanan semakin besar dan nilai y semakin ke atas semakin besar pula nilainya.
2.1.2 Sistem Koordinat 3 Dimensi Sistem koordinat 3 dimensi adalah sistem koordinat yang memiliki 3 sumbu poros, yakni sumbu x, sumbu y, dan sumbu z. Ilustrasinya diperlihatkan pada gambar di bawah ini.
y
x z
Gambar 2.2 Koordinat tiga dimensi.
2.2 Titik dan Garis Garis terbentuk dari titik. Untuk membentuk garis pada komputer diperlukan algoritma pembentuk garis. Terdapat dua jenis algoritma pembentuk garis, yakni algoritma garis DDA dan algoritma garis Bressenham. Konsep algoritma pembentuk garis tersebut didasarkan pada persamaan garis dalam matematika, yakni: y = mx + c dimana: y = posisi koordinat titik y m = gradient/ kemiringan garis x = posisi koordinat titik x c = konstanta Berdasarkan konsep persamaan garis tersebut, maka diperolehlah algoritma garis DDA dan algoritma garis Bressenham.
2.2.1 Algoritma Garis DDA (Digital Differential Analyzer) Prinsip algoritma ini adalah mengambil nilai integer terdekat dengan jalur garis berdasarkan sebuah titik yang telah ditentukan sebelumnya (titik awal garis). Algoritma pembentukan garis DDA: 1. Tentukan dua titik yang akan dihubungkan dalam pembentukan garis.
2. Tentukan salah satu titik sebagai awal (x0,y0) dan titik akhir (x1,y1). 3. Hitung dx = x1-x0, dan dy = y1-y0. 4. Tentukan langkah, yaitu dengan cara jarak maksimum jumlah penambahan nilai x maupun nilai y, dengan cara: o Bila nilai absolut dari dx lebih besar dari absolut dy, maka langkah = absolut dari dx. o Bila tidak maka langkah = absolute dari dy 5. Hitung penambahan koordinat pixel yaitu x_increment = dx/langkah dan y_increment = dy/langkah 6. Koordinat selanjutnya (x + x_increment, y + y_increment) 7. Posisi pixel pada layar ditentukan dengan pembulatan nilai koordinat tersebut. 8. Ulangi nomor 6 dan 7 untuk menentukan posisi pixel selanjutnya,sampai x = x1 dan y = y1. Contoh: Dijelaskan pada pembahasan langsung.
2.2.2 Algoritma Garis Bressenham Berikut ini langkah langkah untuk membentuk garis menurut algoritma Bressenham: 1. Tentukan dua titik yang akan dihubungkan. 2. Tentukan salah satu titik di sebelah kiri sebagai titik awal yaitu (x0,y0) dan titik lainnya sebagai titik akhir (x1,y1). 3. Hitung dx, dy. 4. Hitung parameter p0=2dy-dx 5. Untuk setiap xk sepanjang jalur garis, dimulai dengan k = 0,
o Bila pk < 0, maka titik selanjutnya adalah (xk+1,yk), dan pk+1 = pk + 2dy o Bila tidak, maka titik selanjutnya adalah (xk+1, yk+1), dan pk+1 = pk + 2dy - 2dx. 6. Ulangi langkah nomor 5 untuk menentukan posisi pixel selanjutnya, samapai x = x1 dan y = y1. Contoh: Dijelaskan pada pembahasan langsung.
2.3 Lingkaran 2.3.1 Algoritma Pembentuk Lingkaran Algoritma Lingkaran Bressenham (Mid Point) 1. Tentukan radius r dengan titik pusat lingkaran (xc,yc) kemudian diperoleh (xc,yc) = 0,r). 2. Hitung nilai dari parameter P0 = 5/4 – r ≈ 1-r 3. Tentukan nilai awal k = 0, untuk setiap posisi xk berlaku sbb : Bila pk <0, maka titik selanjutnya adalah (xk+1,yk) Pk+1 = pk +2 xk+1+1 Bila pk >0, maka titik selanjutnya adalah (xk+1,yk-1) Pk+1 = pk +2 xk+1+1 - 2 yk+1 Dimana 2 xk+1 = 2 xk + 2 dan 2 yk+1 = 2 yk – 2 4. Tentukan titik simetris pada ketujuh oktan yang lain. 5. Gerakkan setiap posisi pixel (x,y) pada garis melingkar dari lingkaran dengan titik pusat (xc,yc) dan tentukan nilai koordinat : x = x + xc dan y = y + yc 6. Ulangi langkah ke 3 -5, sampai dengan x >= y.
Contoh: 1. Diketahui titik pusat lingkaran (0,0) dan radius 8. Tentukan titik koordinat lainnya untuk membentuk lingkaran dengan algoritma midpoint! Jawab:
2. Gunakan algoritma Bressenham untuk menggambarkan suatu lingkaran dengan titik pusat (0,0) dan radius 10, perhitungan berdasarkan pada oktan dari kuadran pertama dimana x =0 sampai x=y! Jawab:
BAB III TRANSFORMASI DUA DIMENSI 3.1 Translasi Translasi adalah pergeseran/perpindahan objek dua dimensi dari satu posisi ke posisi lain yang arahnya sejajar dengan sumbu x dan sumbu y. Pergeseran ini tidak menyebabkan bentuk objek berubah, bentuk objek tetap seperti semula. Rumus translasi: x’ = x + tx y’ = y + ty Keterangan: x = posisi koordinat di sumbu x semula y = posisi koordinat di sumbu y semula x’ = posisi koordinat x yang baru y’ = posisi koordinat y yang baru tx = faktor translasi pada sumbu x ty = faktor translasi pada sumbu y
Contoh: Sebuah segitiga dengan koordinat A(10,10), B(30,10), C(10,30) akan digeser dengan faktor translasi mendatar = 10 dan faktor translasi ke arah vertical = 20. Tentukan di koordinat manakah letak segitiga tersebut setelah digeser! Penyelesaian: Dik:
A = 10,10 B = 30,10 C = 10,30 tx = 10
ty = 20 Dit:
A’, B’, C’?
Jawab: Koordinat titik A (10,10) x’ = x + tx
y’ = y + ty
x’ = 10 + 10 = 20
y’ = 10 + 20 = 30
A’ = (x’, y’) = (20,30) Koordinat titik B (30,10) x’ = x + tx
y’ = y + ty
x’ = 30 + 10 = 40
y’ = 10 + 20 = 30
B’ = (x’, y’) = (40,30) Koordinat titik C (10,30) x’ = x + tx
y’ = y + ty
x’ = 10 + 10 = 20
y’ = 30 + 20 = 50
C’ = (x’, y’) = (20,50) Jadi, setelah dilakukan pergeseran segitiga tersebut akan terletak di koordinat A(20,30), B (40, 30), dan C (20, 50). Latihan praktikum: Buatlah sebuah program sederhana yang mampu memindahkan suatu objek dari satu posisi ke posisi lain pada canvas dengan menerapkan rumus translasi!
3.2 Dilatasi Dilatasi atau penskalaan adalah operasi yang membuat suatu objek menjadi berubah ukuran (membesar atau mengecil). Rumus dilatasi: x’ = x . sx y’ = y . sy
Keterangan: x = posisi koordinat di sumbu x semula y = posisi koordinat di sumbu y semula x’ = posisi koordinat x yang baru y’ = posisi koordinat y yang baru sx = faktor dilatasi pada sumbu x sy = faktor dilatasi pada sumbu y Apabila sx = sy, maka dilatasinya disebut uniform scalling (penskalaan seragam). Pada penskalaan
seragam,
perbesaran/pengecilan
arah
mendatar
akan
sama
dengan
perbesaran/pengecilan arah vertical.
Latihan praktikum: Buatlah sebuah program sederhana yang dapat mengubah ukuran objek menjadi membesar dan mengecil dengan menerapkan rumus dilatasi! Objek digambarkan di atas canvas.
3.3 Rotasi Rotasi atau perputaran adalah operasi yang membuat objek bergerak berputar pada titik pusat atau pada sumbu putar yang dipilih berdasarkan sudut putaran tertentu. Jika perputaran dilakukan searah jarum jam, maka sudut bernilai negatif. Apabila arah perputaran berlawanan dengan arah jarum jam, maka sudut benilai positif. Rumus rotasi: x’ = xp + (x-xp) . cos θ – (y-yp) . sin θ y’ = yp + (x-xp) . sin θ – (y-yp) . cos θ Keterangan: x = posisi koordinat di sumbu x semula y = posisi koordinat di sumbu y semula x’ = posisi koordinat x yang baru y’ = posisi koordinat y yang baru
(xp, yp) = titik pusat rotasi θ = besar sudut rotasi
Contoh: Dijelaskan pada pembahasan langsung.
3.4 Refleksi Refleksi adalah operasi pencerminan dari suatu objek grafis. Refleksi terhadap sumbu x: (x’,y’) = (x, -y)
Refleksi terhadap sumbu y: (x’,y’) = (-x, y)
Contoh: Dijelaskan pada pembahasan langsung.
3.5 Shear Shear merupakan bentuk transformasi yang membuat distorsi dari bentuk objek, seperti menggeser sisi tertentu. Shear terhadap sumbu x (arah mendatar): x’ = x + Hx . y Ket: Hx = faktor shear mendatar
Shear terhadap sumbu y (arah vertical): y’ = y + Hy . x Ket: Hy= faktor shear vertical
Latihan praktikum: Buatlah sebuah program sederhana yang dapat menggeser sisi objek mendatar maupun vertikal dengan menerapkan rumus shear! Objek digambarkan di atas canvas.
BAB IV TIGA DIMENSI 3.1 Konsep Tiga Dimensi Perbedaan antara tiga dimensi dan dua dimensi adalah pada tiga dimensi objek akan memiliki kedalaman atau ruang. Sedangkan, pada dua dimensi objek hanya akan berbentuk seperti bangun datar yang tidak memiliki kedalaman atau ruang. Pada tiga dimensi terdapat 3 sumbu yang membentuk posisi saling berpotongan, yakni sumbu x, sumbu y, dan sumbu z. Sedangkan, pada dua dimensi hanya terdapat 2 sumbu yang saling berpotongan, yakni sumbu x (arah mendatar) dan sumbu y (arah vertical).
3.2 Benda Tiga Dimensi Terdapat banyak sekali benda tiga dimensi dalam kehidupan sehari-hari. Bangun ruang yang dipelajari dalam pelajaran matematika adalah contoh dari benda tiga dimensi. Sebagian contoh dari bangun ruang tersebut adalah kubus, balok, prisma, bola, tabung, dll.
Gambar 3.1: Contoh benda tiga dimensi Pada saat ini dalam dunia grafis pun dikenal istilah animasi dua dimensi dan animasi tiga dimensi. Jika dahulu film kartun hanya digambar dalam bentuk animasi dua dimensi, sekarang sudah banyak sekali film-film kartun yang dibuat dalam bentuk animasi tiga dimensi. Perbedaan animasinya dapat terlihat jelas dari setiap objek yang terdapat pada film tersebut. Pada animasi dua dimensi objek tampak seperti gambar datar. Contoh animasi dua dimensi adalah film kartun Doraemon series, Inuyasha, dll. Sedangkan, pada animasi tiga dimensi objek tampak lebih hidup karena setiap objek digambarkan seperti memiliki bobot atau isi, tidak hanya berupa gambar datar. Contoh animasi tiga dimensi di antaranya adalah film kartun Shrek.
3.3 Struktur Data Benda Tiga Dimensi Objek di bawah ini merupakan benda tiga dimensi. Pada tiga dimensi terdapat 3 sumbu, yakni sumbu x, sumbu y, dan sumbu z seperti yang diperlihatkan dalam gambar. Setiap titik sudut (vertex) dari kubus di bawah ini terletak pada koordinat tiga dimensi (x, y, z). Panjang rusuk kubus tersebut adalah 1 satuan dan vertex 5 terletak di titik pusat koordinat tiga dimensi (0,0,0). Koordinat objek di samping adalah sebagai berikut.
y 8
7
1
2
5 4 z
6 3
x
Vertex 1 2 3 4 5 6 7 8
x 0 +1 +1 0 0 +1 +1 0
y +1 +1 0 0 0 0 +1 +1
z +1 +1 +1 +1 0 0 0 0
BAB V CLIPPING DUA DIMENSI 5.1 Algoritma Cohen-Sutherland Konsep dari algoritma Cohen Sutherland ini adalah membagi objek yang akan diclipping ke menjadi 9 bagian, yang salah satu bagiannya (bagian paling tengah) terletak di dalam window tampilan grafis. Window dinyatakan dengan titik-titik ujung kiri bawah (xmin, ymin) dan kanan atas (xmax, ymax). Perpanjangan dari setiap tepi window tersebut akan yang akan membagi objek menjadi 9 bagian. Titik koordinat (x, y) yang ada pada masing-masing bagian diberi kode empat bit b1b2b3b4 dengan aturan pemberian kode sebagai berikiut. Jika y > ymax maka b1 = 1, dan jika y <= ymax maka b1 = 0 Jika y < ymin maka b2 = 1, dan jika y >= ymin maka b2 = 0 Jika x > xmax maka b3 = 1, dan jika x xmax maka b3 = 0 Jika x < xmin maka b4 = 1, dan jika x xmin maka b4 = 0 Dengan aturan tersebut maka akan diperoleh hasil apabila objek berada di luar window tampilan grafis, maka kode bagian objek tersebut tidak akan benilai 0000. Sebaliknya, apabila objek berada dalam window tampilan grafis, maka objek tersebut akan memiliki kode 0000. Sehingga, dapat diperoleh clipping window dari objek tersebut. Contoh: Djelaskan dalam pembahasan langsung.