Buku Grafkom_pti c 2011(1)
July 23, 2017 | Author: Erick Irawadi Alwi | Category: N/A
Short Description
Download Buku Grafkom_pti c 2011(1)...
Description
1
i
KATA PENGANTAR Puji Syukur kehadirat Tuhan Yang Mahakuasa yang telah berkenanmenganugerahkan kesempatan sehingga buku Grafika Komputer Tingkat Perkuliahan untuk Mahasiswa Universitas Negeri Malang Pendidikan Teknik Informatika ini dapat diselesaikan oleh penulis. Buku ini disusun untuk memudahkan Mahasiswa dalammemahami konsep openGL yang meliputi Pengantar dan Sejarah Grafkom, Teknologi Grafkom, Pengantar dan Instalasi GLUT, Primitive Object, Transformasi Objek , Interaksi Keyboard dan Mouse, Material Warna, Lighting, Animasi, Objek 3D serta Texture. Penulisan buku inidiharapkan mahasiswa dapat mengembangkan keterampilan dankreativitas, baik secaramandiri maupun kelompok, melalui pemahaman konsepdan wacana serta pelatihan–pelatihan dalam setiap babnya. Materi dalam buku ini disajikan secara tematik. Setiap tema pada bahasandapat dikembangkan siswa melalui keterampilan dan kreativitaspemrograman menggunakan openGLsehingga diharapkan dapat mendukung pengembangan setiap kompetensi dasar. Dalam hal ini mahasiswa diajak untuk berperan aktif sebagai pelaku utama dalampembelajaran.Pada kesempatan ini penulis mengucapkan terima kasih kepada semuapihak yang berkenan memberikan kritik dan saran dalam rangka penyempurnaanbuku ini di kemudian hari. Akhirnya penulis berharap dengan terbitnya bukuini dapat memberikan motivasi yang positif bagi guru dan mahasiswaUniversitas Negeri Malang padasemua program keahlian terutama bidang Informatika yang berkaitan erat dengan pemrograman. Penulis
ii DAFTAR ISI
KATA PENGANTAR ...................................................................... I BAB 1................................................................................................. 1 PENGANTAR DAN SEJARAH ..................................................... 1 GRAFKOM....................................................................................... 1 PENGANTAR GRAFIKA KOMPUTER ...................................... 1 SEJARAH PERKEMBANGAN GRAFIKA KOMPUTER.......................... 2 PERANAN DAN PENGGUNAAN GRAFIKA KOMPUTER ................... 10 BAB 2............................................................................................... 22 SEJARAH OPENGL ..................................................................... 22 SEJARAH OPENGL ........................................................................ 22 PENGENALAN OPENGL ................................................................ 23 EVOLUSI OPENGL ........................................................................ 25 BAB 3............................................................................................... 27 INSTALASI OPENGL................................................................... 27 INSTALASI GLUT PADA WINDOWS .............................................. 27 BAB 4............................................................................................... 37 TEKNOLOGI GRAFKOM ........................................................... 37 SEJARAH MONITOR ................................................................. 37 CRT .............................................................................................. 40 LCD .............................................................................................. 44 OLED ........................................................................................... 49 BAB 5............................................................................................... 51 PRIMITIF OBJEK ........................................................................ 51 FUNGSI DASAR MENGGAMBAR TITIK .......................................... 51
iii OUTPUT PRIMITIF .................................................................... 55 ALGORITMA PEMBENTUKAN GARIS .............................................. 56 ALGORITMA GARIS BRESSENHEM ................................................ 58 ALGORITMA PEMBENTUKAN LINGKARAN ................................... 61 ATRIBUT OUTPUT PRIMITIF .................................................. 64 ALGORITMA BOUNDARY-FILL ..................................................... 67 ALGORITMA FLOOD-FILL ............................................................. 68 ANTIALIASING .............................................................................. 69 SUPERSAMPLING ATAU POSTFILTERING ....................................... 70 BAB 6............................................................................................... 76 INTERAKSI KEYBOARD DAN MOUSE .................................. 76 PENGENALAN ........................................................................... 76 FUNGSI DASAR PEMBUATAN ANIMASI DENGANMENGGUNAKAN KEYBOARDFUNCTION. ................................................................... 81 CODING ...................................................................................... 83 2. TOMBOL UP............................................................................. 84 3. KUNCI BUFFER......................................................................... 85 INTERAKSI MOUSE PADA OPENGL ...................................... 91 B. Mouse .................................................................................. 92 1) JENIS MOUSE ................................................................... 93 Mouse Mekanis........................................................................ 93 Mouse Optical .......................................................................... 94 Mouse Wireless ........................................................................ 94 BAGIAN-BAGIAN MOUSE ................................................... 95 Bagian-bagian pada Mouse Ball ............................................ 95 Bagian-bagian Mouse Optical ................................................ 96 C. Pemanfaatan Mouse untuk Interaksi dengan OpenGL ............ 97 glutMotionFunc(motion); ......................................................... 98 CONTOH PROGRAM ............................................................ 99 KESIMPULAN ...................................................................... 101 Jenis-jenis mouse: .......................................................... 101 Mouse Mekanis ............................................................... 101
iv Mouse Optical ................................................................ 101 Mouse Wireless............................................................... 101 BAB 7............................................................................................. 103 ANIMASI OBJEK 2D .................................................................. 103 ANIMASI OBJEK 2D OPENGL ..................................................... 106 TRANSLASI (TRANSLATION) ......................................................... 106 ROTASI (ROTATION) .................................................................... 108 SKALASI (SCALING)..................................................................... 109 REFLEKSI .................................................................................... 110 SHEAR ......................................................................................... 112 TIMER FUNCTION........................................................................ 113 BAB 8............................................................................................. 119 OBJEK 3 DIMENSI ..................................................................... 119 DEFINISI OBJEK 3 DIMENSI .................................................. 119 FUNGSI OPENGL 3 DIMENSI ................................................. 120 SPESIFIKASI OBJEK 3 DIMENSI ........................................... 125 PRIMITIF 3D ............................................................................. 126 RENDERING ............................................................................. 127 REPRESENTASI BENDA GRAFIKA 3D ................................ 129 BAB 9............................................................................................. 132 PENCAHAYAAN......................................................................... 132 PENCAHAYAAN PADA OPENGL .................................................. 132 PENCAHAYAAN PADA OPENGL DAN DUNIA NYATA .................. 134 CAHAYA AMBIENT, DIFFUSE, DAN SPECULAR ........................... 135 TEKNIK PENCAHAYAAN ( LIGHTING ) ...................................... 136 BAB 10........................................................................................... 144 TEXTURE..................................................................................... 144 SEJARAH TEXTURE MODELLING ................................................ 144
v KONSEP TEXTURE MAPPING ...................................................... 147 REFLECTION MAPPING ............................................................... 149 ENVIRONMENT MAPPING ........................................................... 150 SPHERE MAPPING ....................................................................... 151 DUAL PARABOLOID MAPPING .................................................... 153 CUBE MAPPING........................................................................... 153 FORWARD MAPPING ................................................................... 155 INVERSE MAPPING ...................................................................... 156 THE INVERSE TRANSFORM ......................................................... 157 SOAL LATIHAN ......................................................................... 160
1
BAB 1 PENGANTAR DAN SEJARAH GRAFKOM PENGANTAR GRAFIKA KOMPUTER A. Pengenalan Grafika Komputer Grafika komputer merupakan salah satu bidang ilmu komputer yang perkembangannya terbilang sangat pesat. Penggunaan grafika komputer sangat terasa manfaatnya hampir di seluruh kegiatan, terutama yang berhubungan dengan komputer. Pada kenyataannya, sebagian besar kegiatan manusia memanfaatkan grafika komputer. Indsutri film, televisi, desain grafis dan arsitektur adalah beberapa contoh kegiatan yang banyak sekali memanfaatkan grafika komputer. Bidang ilmu murni seperti Fisika, Matematika, Kimia dan Biologi pun merasakan manfaat dari grafika komputer. Bidang-bidang tersebut memanfaatkan grafika komputer untuk visualisasi modelmodel objek yang secara kasat mata mustahil terlihat seperti; atom, sel dan bakteri. Bahkan perkembangan bidang-bidang tersebut menjadi semakin cepat, karena para ilmuwan semakin berani melakukan eksperimen tanpa takut melakukan kesalahan yang mengakibatkan kerugian besar, sehingga mereka dapat menghasilkan penemuan-penemuan baru.
2 Pada saat ini industri film dan game adalah yang betul-betul telah merasakan manfaat dari grafika komputer. Saat ini, film yang digemari bukan lagi film-film kartun, tetapi film animasi yang menggunakan teknologi 3D(tiga dimensi). Dengan grafik 3D(tiga dimensi), dapat dihasilkan suatu objek yang menyerupai bentuk aslinya. Hal yang sama terjadi pada industri game. Jika dulu gamegame yang digemari masih dalam bentuk dua dimensi (2D), dengan teknologi yang ada sekarang dapat dihasilkan suatu game yang lebih realistis karena sudah dalam bentuk tiga dimensi. Bidang-bidang yang berhubungan dengan grafika komputer sudah menjadi alternatif pilihan pekerjaan yang banyak diminati di Indonesia, seperti; desain grafis, pengolahan citra dan digital fotografi. Pada bidang ini juga, Indonesia tidak mengalami ketertinggalan yang jauh jika dibandingkan dengan bidang ilmu komputer yang lain seperti jaringan komputer dan pemrograman. Bahkan banyak ditemui orang-orang yang sudah sangat ahli pada bidang-bidang yang digelutinya.
Sejarah Perkembangan Grafika Komputer Grafika Komputer Grafika komputer adalah bagian dari ilmu komputer yang berkaitan dengan pembuatan dan manipulasi gambar (visual) secara digital. Bentuk sederhana dari grafika komputer adalah grafika komputer 2D yang kemudian berkembang menjadi grafika komputer 3D, pemrosesan citra (image processing), dan pengenalan pola (pattern recognition). Grafika komputer sering dikenal juga dengan istilah visualisasi data.
3 Bagian dari grafika komputer meliputi:
Geometri, mempelajari cara menggambarkan permukaan bidang Animasi, mempelajari cara menggambarkan dan memanipulasi gerakan Rendering, mempelajari algoritma untuk menampilkan efek cahaya Citra (Imaging), mempelajari cara pengambilan dan penyuntingan gambar
Sejarah Grafika Komputer Sejarah grafika dimulai sejak jaman dahulu ketika bangsa mesir, Roma dan Yunani berkomunikasi secara grafik.
Gambar 1 Sejarah Grafika Komputer
Beberapa lukisan yang terdapat pada batu nisan orang mesir dapat dikatakan sebagai lukisan teknik. Leonardo da Vinci sudah menghasilkan lukisan dengan objek 3D dengan pandangan isometrik.
4
Gambar 2 Lukisan-Lukisan Leonardo Da Vinci
Perkembangan grafika komputer dapat dibagi menjadi 4 (empat) fase, yaitu:
Fase Pertama : tahun 50an Merupakan era grafika komputer interaktif. Pada mulanya perkembangan grafika komputer interaktif tidak terlalu cepat karena teknologi dan harga komputer yang mahal. Pada tahun 50an MIT mengembangkan komputer whirlwind dengan tabung sinar katode. Komputer ini mampu memaparkan grafik pasif yang digunakan untuk keperluan pertahanan.
5
Gambar 3 Komputer Whirlwind Dengan Tabung Sinar Katode
Akhir tahun 50an banyak orang menggunakan pena cahaya sebagai alat input, selain itu pada periode yang sama alat pemrograman otomatis telah berhasil dibuat. Komputer grafik interaktif mulai diteliti oleh general motor pada tahun 1959.
Gambar 4 Pena Cahaya
6
Gambar 5 Bagian-Bagian dalam pena Cahaya
Fase Kedua : Dekade 60an Merupakan zaman penelitian /riset grafika komputer interaktif. Saat ini grafika interaktif moderen berhasil ditemukan oleh Ivan Sutherland dengan sistem penggambaran SKETCHPAD. Beliau juga menggambarkan teknik interaktif dengan sarana keyboard dan pena cahaya. Awal tahun 60-an dimulainya model animasi dengan menampilkan simulasi efek fisik
Gambar 6 Keyboard
o
1961 : Edward Zajac menyajikan suatu model simulasi satelit dengan menggunakan teknologi Grafik Komputer.
7 o
o o o
1963 : ditemukan Sutherland (MIT), Sketchpad (manipulasi langsung, CAD), Alat untuk menampilkan Calligraphic (vector), Mouse oleh Douglas Englebert 1968 : ditemukan Evans & Sutherland 1969 : Journal SIGGRAPH pertama kali diterbitkan Pertengahan tahun 60an sejumlah proyek penelitian dan produk computer aided design / munufacturing (CAD / CAM) telah muncul.
Gambar 7 Computer Aided Design / Munufacturing Fase Ketiga pada dekade 70an Saat ini sektor industri, pemerintahan dan ilmuan mulai sadar akan pentingnya grafika komputer interaktif untuk memperbaiki kualitas desain produk secara cepat dan mudah.
8
Gambar 7 Prototipe Desain Robot
- 1970 : Pierre B´eezier mengembangkan kurva B´eezier - 1971 : ditemukan Gouraud Shading, - 1972 : ditayangkannya filmWestworld, sebagai film pertama yang menggunakan animasi computer - 1974 : Ed Catmull mengembangkan z-buffer (Utah). Komputer animasi pendek, Hunger: Keyframe animation and morphing - 1976 : Jim Blinn mengembangkan texture dan bump mapping - 1977 : Film terkenal Star Wars menggunakan grafik computer - 1979 : Turner Whitted mengembangkan algoritma ray tracing,untuk pesawat Death Star
9 - Pertengahan tahun 70-an hingga 80-an: Pengembangan Quest for realism radiosity sebagai main-stream aplikasi realtime Fase Keempat : Dekade 80an Pada masa ini grafika komputer berkembang pesat. Banyak orang berlomba untuk menemukan teori dan algoritma baru, penelitian dekade ini bertumpu pada penggabungan dan pengotomatisasian sebagai unsur desain dan pemodelan pejal (solid modeling) hal ini berguna untuk industri masa depan. o 1982 : Pengembangan teknologi grafik komputer untuk menampilkan partikel o 1984 : Grafik Komputer digunakan untuk menggantikan model fisik pada film The Last Star Fighter o 1986 : Pertama kalinya Film hasil produksi grafik komputer dijadikan sebagai nominasi dalam Academy Award: Luxo Jr. (Pixar). o 1989 : Film Tin Toy (Pixar) memenangkan Academy Award.
Pada tahun 90an teknologi model hibrid mulai diperkenalkan, teknologi ini berguna untuk penggabungan objek pejal dengan permukaan. Contohnya jika kita melukis sebuah mobil bagian badan mesin adalah suatu permukaan dan bagian mesin adalah bentuk pejal. Jika kita gabungkan dengan teknologi maka badan dan mesin membentuk sebuah mobil. Akhir tahun 90-an, ditemukannya teknologi visualisasi interaktif untuk ilmu pengetahuan dan kedokteran, artistic rendering, image based rendering, path tracing, photon maps, dan lain-lain. Tahun 2000 ditemukannya teknologi perangkat keras untuk real-time photorealistic rendering.
10
Gambar 8 Contoh teknologi model hibrid
Peranan dan Penggunaan Grafika Komputer Grafika komputer digunakan dalam berbagai bidang seni, sains, bisnis, pendidikan dan hiburan, sebagi contoh: - Antarmuka pengguna – sering setiap aplikasi pada komputer pribadi menggunakan GUI (Graphical User Interface). - Pemetaan (Cartography) –Google Map, etc - Kesehatan – Untuk perencanaan maupun pelaksanaan pembedahan, CT Scan, etc - Computer Aided Design (CAD) – pengguna merancang objek ( mekanik, desain interior, modelling) mengunakan grafika komputer. - Sistem Multimedia. - Presentasi grafik untuk produksi slides. - Sistem paint. - Presentasi data statistik. - Pendidikan. - Hiburan. B.
Manfaat Grafika Komputer Manfaat yang dihasilkan dari Grafika Komputer antara lain :
11 1. Di Bidang Pendidikan Grafik komputer pada pendidikan digunakan untuk mempresentasikan objek-objek pada siswa secara nyata, dapat melalui power point ataupun software lainnya. Dengan penggunakan bentuk objek ini diharapkan siswa lebih nyata dalam menerima semua materi yang telah diajarkan, tidak hanya teori saja tetapi sudah melihat bentuk dan simulasinya. Bentuk ini dapat berupa penggambaran bidang, ruang, grafik, gambar kerangka manusia, susunan tubuh manusia, dan sebagainya. Contohnya : Desain kerangka manusia
Gambar 1. Desain Kerangka Manusia
2. Di Bidang Hiburan Tidak memungkiri pada sekarang ini semua acara hiburan di Televisi banyak menggunakan grafik komputer. Mulai dari film kartun, iklan di TV dan sampai acara sinetron sekalipun sudah di selipi oleh grafik komputer. Grafik komputer disini berupa efek animasi yang dapat membuat film semakin menarik. Contohnya : Desain Film Kartun The Smurfs.
12
Gambar 2. Desain Film Kartun The Smurfs
3. Di Bidang Perancangan Pada bidang ini grafik komputer digunakan untuk membuat berbagai desain dan model objek yang akan dibuat. Misalnya digunakan untuk mendesain suatu arsitektur bangunan, desain kendaraan dan lainnya. Menggunakan software desain grafis seperti autocad semuanya akan berlangsung secara mudah dan lebih spesifik dalam perancangan yang akan dibuat. Memperkecil tinggkat kesalahan sehingga akan menhasilkan suatu model yang sama seperti aslinya. Contohnya : Desain Arsitektur/Teknik Sipil/Interior
Gambar 3. Desain Arsitektur dan Interior
C. Elemen-Elemen Dasar Desain Grafis 1. Elemen Geometri a. Transformasi dari suatu konsep (atau suatu benda nyata) ke suatu model geometris yang bisa ditampilkan pada suatu komputer : - Shape/bentuk
13 -
Posisi Orientasi (cara pandang) Surface Properties / Ciri-ciri Permukaan (warna, tekstur) Volumetric Properties / Ciri-ciri volumetric (ketebalan/pejal, penyebaran cahaya) Lights/cahaya (tingkat terang, jenis warna) Dll.
b. Pemodelan Geometris yang lebih rumit : - Jala-Jala segi banyak: suatu koleksi yang besar dari segi bersudut banyak, dihubungkan satu sama lain. - Bentuk permukaan bebas: menggunakan fungsi polynomial tingkat rendah - CSG: membangun suatu bentuk dengan menerapkan operasi boolean pada bentuk yang primitif.
2. Titik Untuk menggambar titik (point) digunakan perintah point(x,y) dimana nilai x dan y adalah koordinat pada layar. Sedangkan untuk membuat garis digunakan perintah lines(x1,y1,x2,y2). Contoh program : int d = 40; int p1 = d; int p2 = p1+d; int p3 = p2+d; int p4 = p3+d; size(200, 200); background(0); //Draw line from location (50,50) until (100,150) stroke(255);
14 line(50, 50, 100, 150); // Draw gray box stroke(255); line(p3, p3, p2, p3); line(p2, p3, p2, p2); line(p2, p2, p3, p2); line(p3, p2, p3, p3); // Draw white points stroke(255); point(p1, p1); point(p1, p3); point(p2, p4); point(p3, p1); point(p4, p2); point(p4, p4); 3. Garis Untuk mengubah warna garis, dapat digunakan perintah stroke(x) atau stroke(r,g,b). Selain itu ketebalan garis dapat kita atur dengan menggunakan perintah strokeWeight(x) dengan nilai x adalah jumlah ketebalan pixel. Jika ingin merubah tampilan ujung garis, dapat juga kita tambahkan perintah strokeCap(mode). Mode yang digunakan adalah SQUARE, ROUND dan PROJECT. Contoh program: size(200, 200); background(0); // Draw white line standart stroke(255); line(25, 5, 175, 5); // Draw red line stroke(255,0,0); line(25, 25, 175, 25); // Draw Green line with 5 points thicknes stroke(0,255,0); strokeWeight(5);
15 line(25, 50, 175, 50); //Draw Blue line with 10 thickness and square tip line stroke(0,0,255); strokeWeight(10); strokeCap(SQUARE); line(25, 75, 175, 75); 4. Lingkaran Untuk membuat objek bundar dapat menggunakan beberapa cara bentuk, yaitu ellipse dan busur. Untuk bentuk ellipse dapat digunakan perintah ellipse(x,y,width,height) dengan nilai x dan y adalah sebagai pusat ellipse Sedikit berbeda dengan penggunaan busur (arc). Pada ellipse kita dapat membuat bentuk bundar secara utuh, namun pada busur kita dapat membuat bentuk bundar hanya sebagian dalam arti kurva terbuka. Perintah yang digunakan adalah arc(x,y,width,height,start,stop), x dan y adalah posisi pusat busur, width adalah lebar dan height adalah tinggi. Penggunan start pada arc adalah posisi awal penggambaran dan stop adalah posisi akhir penggambaran busur D. Materi dalam Grafika Komputer Di dalam Grafika Komputer, terdapat materi dasar yang wajib dipelajari, antara lain. 1. Primitive Object 2. Objek 2 Dimensi 3. Transformasi Object 4. Interaksi Keyboard 5. Interaksi Mouse 6. Animasi 7. Object 3 Dimensi 8. Pencahayaan 9. Material dan Tekstur
16
E.
Mengenal library grafis OpenGL Open GL adalah suatu library grafis standart yang digunakan untuk keperluan pemrograman grafis. Selain OpenGL, library grafis yang banyak digunakan adalah DirectX. OpenGL bersifat opensource, multi-platform dan multi language. Saat ini semua bahasa pemrograman mendukung OpenGL. dan OpenGL bisa bekerja dalam lingkungan Windows, Unix, SGI, Linux, freeBSD dll. Library dasar dari openGL adalah GLUT, dengan fasilitas yang bisa dikembangkan. Untuk OS Windows,library ini terdiri dari 3 files yaitu : - Glut.h - Glut32.lib - Glut32.dll Cara Installasi GLUT Copykan file glut.h ke dalam folder c:\Program Files\Microsoft Visual Studio\VC98\Include\GL Copykan file glut32.lib di dalam folder c:\ProgramFiles\MicrosoftVisual Studio\VC98\lib Copykanfile glut32.dll ke dalam folder c:\Windows\System32
F.
Mengenal Pemograman Grafis Pemrograman grafis adalah pemrograman yang digunakan untuk menghasilkan gambar paa komputer menggunakan library yang ada. Teknik-teknik pemrograman grafis ini didasari oleh teknik- teknik menggambar dengan pemakaian geometri sebagai dasar struktur datanya. Hasil dari pemrograman grafis adalah visualisasi grafis.
17 - Struktur dasar Pemograman Grafis menggunakan bahasa C++
- Struktur Dasar Pemograman Grafis #include Pemrograman grafis menggunakan OpenGL-GLUT membutuhkan header glut.h yang ada di folder c:\Program Files\Microsoft Visual Studio\VC98\bin\GL void userdraw(void){ //Disini tempat untuk menggambar } Fungsi user draw adalah suatu fungsi untuk membuat kode program untuk menghasilkan suatu gambar. glutInitWindowPosition(100,100); glutInitWindowSize(640,480);
18 Membuat windows dengan ukuran (640,480) dengan titik kiri atas jendela diletakkan pada posisi (100,100) di layar komputer. glutCreateWindow(“Drawing by Rizky”); Memberi judul pada windows dengan “Drawing By Rizky” glClearColor(1.0,1.0,1.0,0.0); Mendefinisikan warna dari windows yang dibuat dengan warna(1,1,1) yaitu warna putih. gluOrtho2D(-320.,320.,-240.,240); Mendefinisikan besarnya sistem koordinat dengan range sumbux adalah [-320,320]. Dan range untuk sumbuy adalah [-240,240]. Hasil dari program :
19 G. KESIMPULAN Dari materi diatas dapat kita simpulkan bahwa Grafika komputer merupakan salah satu bidang ilmu komputer yang perkembangannya terbilang sangat pesat. sebagian besar kegiatan manusia memanfaatkan grafika computer. Contohnya saja Indsutri film, televisi, desain grafis dan arsitektur. Pada saat ini industri film dan game adalah yang betul-betul telah merasakan manfaat dari grafika computer. Adapun manfaat dari grafika komputer adalah : Di Bidang Pendidikan Grafik komputer pada pendidikan digunakan untuk mempresentasikan objek-objek pada siswa secara nyata, dapat melalui power point ataupun software lainnya. Di Bidang Hiburan Tidak memungkiri pada sekarang ini semua acara hiburan di Televisi banyak menggunakan grafik komputer. Mulai dari film kartun, iklan di TV dan sampai acara sinetron sekalipun sudah di selipi oleh grafik computer Di Bidang Perancangan Pada bidang ini grafik komputer digunakan untuk membuat berbagai desain dan model objek yang akan dibuat. Open GL adalah suatu library grafis standart yang digunakan untuk keperluan pemrograman grafis Library dasar dari openGL adalah GLUT, dengan fasilitas yang bisa dikembangkan. Untuk OS Windows,library ini terdiri dari 3 files yaitu : - Glut.h - Glut32.lib - Glut32.dll
20
Grafika komputer adalah bagian dari ilmu komputer yang berkaitan dengan pembuatan dan manipulasi gambar (visual) secara digital. Bagian dari grafika komputer meliputi: Geometri, mempelajari cara menggambarkan permukaan bidang Animasi, mempelajari cara menggambarkan dan memanipulasi gerakan Rendering, mempelajari algoritma untuk menampilkan efek cahaya Citra (Imaging), mempelajari cara pengambilan dan penyuntingan gambar Perkembangan grafika komputer dapat dibagi menjadi 4 (empat) fase, yaitu: Fase Pertama : tahun 50an Merupakan era grafika komputer interaktif. Pada mulanya perkembangan grafika komputer interaktif tidak terlalu cepat karena teknologi dan harga komputer yang mahal. Pada tahun 50an MIT mengembangkan komputer whirlwind dengan tabung sinar katode. Komputer ini mampu memaparkan grafik pasif yang digunakan untuk keperluan pertahanan. Fase Kedua : Dekade 60an Merupakan zaman penelitian /riset grafika komputer interaktif. Saat ini grafika interaktif moderen berhasil ditemukan oleh Ivan Sutherland dengan sistem penggambaran SKETCHPAD. Beliau juga menggambarkan teknik interaktif dengan sarana keyboard dan pena cahaya. Awal tahun 60-an
21 dimulainya model animasi dengan menampilkan simulasi efek fisik Fase Ketiga pada dekade 70an Pada era ini sektor industri, pemerintahan dan ilmuan mulai sadar akan pentingnya grafika komputer interaktif untuk memperbaiki kualitas desain produk secara cepat dan mudah. Fase Keempat : Dekade 80an Pada masa ini grafika komputer berkembang pesat. Banyak orang berlomba untuk menemukan teori dan algoritma baru, penelitian dekade ini bertumpu pada penggabungan dan pengotomatisasian sebagai unsur desain dan pemodelan pejal (solid modeling) hal ini berguna untuk industri masa depan.
22
BAB 2 SEJARAH OPENGL Sejarah OpenGL Tahun 1980-an, mengembangkan perangkat lunak yang dapat berfungsi dengan berbagai hardware grafis adalah tantangan nyata. Pengembang perangkat lunak antarmuka dan kebiasaan menulis driver untuk setiap perangkat keras. Ini mahal dan mengakibatkan banyak duplikasi usaha. Pada awal 1990-an, Silicon Graphics (SGI) adalah seorang pemimpin dalam grafis 3D untuk workstation. Mereka IRIS GL API dianggap keadaan seni dan menjadi standar industri de facto, membayangi terbuka berbasis standar PHIGS. Ini karena GL IRIS dianggap lebih mudah digunakan, dan karena itu mendukung modus langsung rendering. By contrast, sebaliknya, PHIGS dianggap sulit untuk digunakan dan ketinggalan zaman dalam hal fungsionalitas. SGI’s pesaing (termasuk Sun Microsystems, HewlettPackard dan IBM) juga dapat membawa ke pasar 3D hardware, didukung oleh ekstensi yang dibuat pada PHIGS standar. Hal ini pada gilirannya menyebabkan pangsa pasar SGI untuk melemahkan karena lebih banyak hardware grafis 3D pemasok memasuki pasar. Dalam upaya untuk mempengaruhi pasar, SGI memutuskan untuk mengubah IrisGL API menjadi standar terbuka. SGI menganggap bahwa IrisGL API itu sendiri tidak cocok untuk membuka karena masalah lisensi dan paten. Juga, IrisGL memiliki fungsi-fungsi API yang tidak relevan dengan
23
grafis 3D. Sebagai contoh, termasuk windowing, keyboard dan mouse API, sebagian karena dikembangkan sebelum Sistem X Window dan Sun’s NEWS sistem dikembangkan. Selain itu, SGI memiliki sejumlah besar pelanggan perangkat lunak; dengan mengubah ke OpenGL API mereka berencana untuk mempertahankan pelanggan mereka terkunci ke SGI (dan IBM) hardware untuk beberapa tahun sementara pasar dukungan untuk OpenGL matang. Sementara itu, SGI akan terus berusaha untuk mempertahankan pelanggan mereka terikat pada hardware SGI dengan mengembangkan maju dan kepemilikan Iris Inventor dan Iris Performer pemrograman API. Akibatnya, SGI merilis standar OpenGL.
Pengenalan OpenGL OpenGL adalah sebuah program aplikasi interface yang digunakan untuk mendefinisikan komputer grafis 2D dan 3D. Program lintas-platform API ini umumnya dianggap ketetapan standar dalam industri komputer dalam interaksi dengan komputer grafis 2D dan juga telah menjadi alat yang biasa untuk digunakan dengan grafis 3D. Singkatnya, Open Graphics Library, OpenGL menghilangkan kebutuhan untuk pemrogram untuk menulis ulang bagian grafis dari sistem operasi setiap kali sebuah bisnis akan diupgrade ke versi baru dari sistem. Fungsi dasar dari OpenGL adalah untuk mengeluarkan koleksi perintah khusus atau executable ke sistem operasi. Dengan demikian, program ini bekerja dengan perangkat keras grafis yang ada yang berada pada hard drive atau sumber tertentu lainnya. Setiap perintah dalam dirancang untuk melakukan tindakan tertentu, atau memulai efek khusus tertentu yang terkait dengan grafis.
24
Membuat perintah dalam OpenGL dapat terjadi dalam dua cara yang berbeda. Pertama, adalah mungkin bagi programmer untuk membuat dan menyimpan daftar perintah yang dapat dieksekusi secara berulang. Ini adalah salah satu cara yang lebih rutin untuk program interface yang digunakan. Seiring dengan berkembangnya kelompok perintah yang kurang lebih permanen, maka memungkinkan untuk membuat dan menjalankan salah satu perintah dalam batas-batas waktu dari komputer grafis. Seiring dengan kemampuan interface dari sistem operasi, OpenGL juga menyediakan beberapa built-in protokol yang mungkin berguna bagi pengguna akhir. Di antaranya fitur alat seperti alpha blending, pemetaan tekstur, dan efek atmosfer. Alat ini dapat berinteraksi dengan sistem operasi yang sedang digunakan. Awalnya dikembangkan oleh Silicon Graphics, OpenGL kini dianggap standar industri. Interface program aplikasi yang aktif didukung oleh Microsoft ini, menawarkan download gratis daftar OpenGL untuk digunakan pada sistem Windows. OpenGL juga bekerja sangat baik dengan Inventor Open, sebuah pemrograman berorientasi obyek alat juga diciptakan oleh Silicon Graphics. OpenGL adalah suatu library grafis standart yang digunakan untuk keperluan-keperluan pemrograman grafis. Sebenarnya ada banyak library pemrograman grafis disini selain openGL, misalnya DirectX. OpenGL ini bersifat OpenSource, multi-platform dan multi-languange. selain itu openGL mendukung semua bahasa pemrograman dan dapat bekerja di lingkungan Windows, Unix, SGI, Linux, freeBSD, dll. OpenGl melayani dua tujuan :
25
Untuk menyembunyikan kompleksitas dari interfacing dengan berbagai 3D accelerators,memamerkan oleh programmer dengan satu, seragam API. Untuk menyembunyikan kemampuan yang berbeda dari hardware platform, oleh semua yangmemerlukan mendukung implementasi penuh fitur opengl set (menggunakan software emulation jika diperlukan).
Evolusi OpenGL Pendahulu openGL adalah IRIS GL dari Silicon Grapics. Pada mulanya adalah library grafis 2D, yang berefolusi menjasi API program 3D untuk workstation canggih milik perusahaan tersebut. OpenGL adalah hasil dari usaha SGI untuk mengembangkan dan meningkatkan kemampuan portable IRIS. API grafis yang baru akan menawarkan kemampuan IRIS GL tetapi dengan standar yang lebih terbuka,dengan input dari pembuatan hardware lain dan sistem operasi lain,dan akn memudahkan adaptasi ke hardware platform dan sistem operasi lain. Untuk lebih mempopulerkan openGL SGI mengijinkan pihak lain untuk mengembangkan standart openGL, dan beberapa vendor menyambut hal tersebut dengan membentuk OpenGL Architecture Review Board (ARB) Pendiri openGL adalah SGI, Digital Equepment Corporation, IBM, Intel dan Microsoft, pada tanggal 1 juli 1992 OpenGL versi 1.0 diperkenalkan.
26
Letak openGL dalam aplikasi gambar di atas pada umumnya ketika aplikasi berjalan program tersebut memanggil banyak fungsi, beberapa yang dibuat oleh programer dan beberapa yang disediakan oleh sistem operasi bahasa pemrograman. Aplikasi windows membuat output pada layar biasanya dengan memanggil sebual API windows yang disebut Graphics Devise Interfase, yang memungkinkan sebagai penulisan teks pada sebuah windows, menggambar garis 2D sederhana dan lainnya. Implementasi dari openGL mengambil permintaan grafis dari aplikasi dan membangun sebuah gambar berwarna dari grafis 3D, kemudian memberikan gambar tersebut ke GDI untuk ditampilkan pada layar monitor.
Cara kerja openGL OpenGL lebih mengarah pada prosedural daripada sebuah deskriptif API grafis.Untuk mendeskripsikan scene dan bagaimana penampilannya, sebenarnya programer lebih tau untuk menentukan hal-hal yang dibutuhkan untuk menghasilkan efek yang di inginkan. Langkah tersebut termasuk memanggil banyak perintah openGL, perintah tersebut digunakan untuk menggambarkan grafis primitif seperti titik, garis dan poligon dalam tiga dimensi.S ebagai tambahan,openGL mendukung lighting, shading, texture mapping, blending, transparancy, dan banyak kemampuan efek khusus lainnya. OpenGL mempunyai banyak fungsi dan penggunaan perintah yang sangat luas, penggunaan openGL membutuhkan library tambahan yang harus di letakkan pada direktori system dari windows (OS),yaitu : OpenGL32.dll
27
Glu32.dll Glut32.dll
BAB 3 INSTALASI OPENGL Instalasi GLUT pada Windows 1. Copykan file glut.h ke dalam folder c:\Program Files\Microsoft Visual Studio\VC98\Include\GL 2. Copykan file glut32.lib di dalam folder c:\Program Files\Microsoft Visual Studio\VC98\lib 3. Copykan file glut32.dll di dalam folder c:\Windows\System32 Perlu kawan-kawan ketahui bahwa instalasi GLUT ini dilakukan setelah instalasi Microsoft Visual C++
28
. Gambar 1. File dll di Windows System32
1. File header(gl.h, glaux.h, glu.h, dan glut.h) harus ditempatkan di folder tempat MS VC++ di instal dan harus diletakan di subfolder Include/ GL. File gl.h, glaux.h, dan glu.h akan otomatis terpasang ketika instalasi MS VC++ dilakukan.
29
Gambar 2. File header OpenGL
2. File lib (glaux.lib, glu32.lib, glut.lib, glut32.lib dan opengl32.lib) harus tersedia di subfolder Lib. File glaux.lib, glu32.lib dan opengl32.lib akan terpasang ketika instalasi MS VC++.
30
Gambar 3. File glut32 di Windows System32 Membuat Dokumen Baru. 1. Buka program Microsoft Visual C++ 2008.
Gambar 3. Membuka aplikasi Ms. Visual C++ 2008
31 2. Klik tab menu file New Project Gambar 4. Membuat File Baru
3. Lalu akan muncul tampilan seperti berikut. Lalu klik Next.
Gambar 5. Setting File
32
4. Pilih Radiobutton Console Application. Lalu pilih cekbox Empty project. Lalu klik Finish.
Gambar 6. Setting Aplikasi 5. Lalu Klik kanan pada file Latihan. Lalu klik Add New Item.
Gambar 7. Menambahkan File Cpp
33 6. Lalu klik pilihan C++ File(.cpp). Tulis nama filenya. Lalu klik Add.
Gambar 8. Memberi nama File 7. Lalu klik kanan pada menu latihan.cpp. Lalu Klik properties.
Gambar 9. Klik Properties
34
8. Lalu klik pilihan C/C++. Kemudian klik Additional Include Directories.
Gambar 9. Setting Include Directional 9. Lalu klik box titik-titik.
Gambar 10. Mencari File Include
35
10. Pilih file dalam folder Include. Klik OK.
11. Lalu klik OK.
Gambar 11. Klik OK
36 12. Lalu kita bisa menulis syntax pada layar yang sudah disediakan.
KESIMPULAN; Perkembangan teknologi komputer grafik dari masa ke masa harus juga diikuti dengan perkembangan teknologi display yang berfungsi sebagai alat keluaran dari grafik yang dibentuk agar dapat dinikmati oleh kita semua. Saat ini teknologi display yang paling populer dan paling banyak digunakan adalah LCD (Liquid Crystal Display), namun sebelum orang mengenal teknologi tersebut, ada beberapa teknologi lainya yang sempat merajai dunia teknologi display seperti CRT, saat ini juga terdapat beberapa teknologi display terbaru yang mulai bermunculan seperti LED, FED dan OLED OpenGL adalah sebuah program aplikasi interface yang digunakan untuk mendefinisikan komputer grafis 2D dan 3D. Program lintas-platform API ini umumnya dianggap ketetapan standar dalam industri komputer dalam interaksi dengan komputer grafis 2D dan juga telah menjadi alat yang biasa untuk digunakan dengan grafis 3D. Singkatnya, Open Graphics Library, OpenGL menghilangkan kebutuhan untuk pemrogram untuk menulis ulang bagian grafis dari sistem operasi setiap kali sebuah bisnis akan diupgrade ke versi baru dari sistem.
37
BAB 4 TEKNOLOGI GRAFKOM SEJARAH MONITOR Paparan komputer peribadi yang terawal merupakan Monitor monokrom yang digunakan untuk pemproses kata dan sistem komputer berdasarkan teks pada dekade 1970-an. Pada tahun 1981, IBM memperkenalkan sistem paparan Penyesuai Grafik Warna (CGA). Sistem paparan ini berupaya memberikan empat warna, dan mempunyai peleraian maksimum 320 piksels datar dan 200 piksel tegak. Walaupun CGA mencukupi untuk kegunaan permainan komputer yang mudah seperti permainan solitaire dan permainan dam, ia tidak mencukupi untuk pemprosesan kata, penerbitan atas meja ataupun penggunaan grafik yang canggih. Pada tahun 1984, IBM memperkenalkan sistem paparan Penyesuai Grafik Tertingkat (EGA) yang dapat memberikan sehingga 16 warna yang berlainan dan peleraian sehingga 640 x 350. Ini memperbaiki kelihatannya berbanding paparan yang lebih awal, dan memungkinan pembacaan teks dengan mudah. Bagaimanapun, EGA tidak memberikan peleraian imej yang mencukupi untuk kegunaan-kegunaan tahap tinggi seperti reka bentuk grafik dan penerbitan atas meja. Mod ini kini sudah usang, walaupun ia kekadang masih boleh didapati di pemprosesan lama dan komputer peribadi di rumah kediaman. Pada tahun 1987, IBM memperkenalkan sistem paparan Tatasusunan Grafik Video (VGA). Kini, ini telah merupakan piawai minimum yang dapat diterima untuk komputer peribadi. Peleraian maksimum tergantung kepada bilangan warna yang dipaparkan.
38 Pengguna boleh memilih antara enam belas warna pada 640 x 480, ataupun 256 warna pada 320 x 200. Pada tahun 1990, IBM memperkenalkan sistem paparan Tatasusunan Grafik Terluas (XGA) sebagai waris untuk paparan 8514/A. Versi yang berikut, iaitu XGS-2, memberikan peleraian 800 x 600 piksel dalam warna yang benar (16 juta warna) dan peleraian 1024 x 768 dalam 65,536 warna. Kedua-dua tahap peleraian imej ini mungkin merupakan jenis yang terpopular di kalangan individu dan perniagaan kecil pada hari ini. Persatuan Piawai-Piawai Elektronik Video (VESA) telah mengasaskan antara muka pengaturcaraan piawai untuk paparan Tatasusunan Grafik Video Super (SVGA) yang digelarkan Sambungan BIOS VESA ("VESA BIOS Extension"). Lazimnya, paparan SVGA dapat mendukung palet sehingga 16 juta warna, tergantung kepada jumlah ingatan video yang tersedia dalam sesuatu komputer yang akan menghadkan bilangan warna yang dapat dipaparkan. Spesifikasi peleraian imej berbeza-beza. Pada umumnya, lebih besar skrin Monitor SVGA, lebih banyak piksel dapat dipaparkan secara datar dan tegak. Tahap perkembangan monitor computer yang digunakan saat ini sebenarnya terbagi dua fase. Fase pertama pada tahun 1855 ditandai dengan penemuan tabung sinar katoda oleh ilmuwan dari Jerman, Heinrich Geißler. Ia merupakan bapak dari monitor tabung. Lalu, 33 tahun kemudian, ahli kimia asal Austria, Friedrich Reinitzer, meletakkan dasar pengembangan teknologi LCD dengan menemukan kristal cairan. Teknologi tabung sejak awalnya memang dikembangkan untuk merealisasikan monitor. Namun, Kristal cairan masih menjadi fenomena kimiawi selama 80 tahun berikutnya. Saat itu, tampilan atau frame rate pun belum terpikirkan. Selama ini, banyak yang menganggap bahwa Karl Ferdinand Braun sebagai penemu tabung sinar katoda. Sebenarnya, ia merupakan pembuat aplikasi pertama untuk tabung, yaitu osiloskop pada tahun 1897. Perangkat inilah yang menjadi basis
39 pengembangan perangkat lain, seperti televisi atau layar radar. Pada tahun yang sama, Joseph John Thomson menemukan elektron, yang mempercepat pengembangan teknik tabung. Monitor CRT pertama (Cathode Ray Tube) dikembangkan untuk menerima siaran televisi. Milestone-nya adalah tabung televise pertama dari Wladimir Kosma Zworykin(1929), full electronic frame rate dari Manfred von Ardenne (1930), dan pengembangan tabung sinar katoda pertama yang dapat direproduksi oleh Allen B. Du Mont (1931). Pada generasi awal komputer, belum menggunakan monitor khusus seperti sekarang ini. Komputer waktu itu terhubung dengan TV keluarga sebagai layar penampil dari pengolahan data yang dilakukannya. Yang cukup menjadi masalah adalah bahwa resolusi monitor TV saat itu hanya mampu menampilkan 40 karakter secara horisontal pada layar. Monitor khusus untuk komputer dikeluarkan oleh IBM PC, yang pada awalnya memiliki resolusi 80 X 25 dengan kemampuan warna “green monochrome”. Monitor ini sudah mampu menampilkan hasil yang lebih terang, jelas dan lebih stabil. Pada generasi berikutnya muncul mono graphics (MGA/MDA) yang memiliki 720x350. Selanjutnya di awal tahun 1980-an muncul jenis monitor CGA dengan range resolusi dari 160x200 sampai 640x200 dan kemampuan warna antara 2 sampai 16 warna. Monitor EGA muncul dengan resolusi yang lebih bagus yaitu 640x350. Monitor jenis ini cukup stabil sampai berikutnya munculnya generasi komputer Windows. Semua jenis monitor ini menggunakan digital video - TTL signals dengan discrete number yang spesifik untuk mengatur warna dan intensitas cahaya. Antara video adapter dan monitor memiliki 2, 4, 16, atau 64 warna tergantung standard grafik yang dimiliki. Selanjutnya dengan diperkenalkannya standard monitor VGA, tampilan grafis dari sebuah Personal Computer menjadi nyata. VGA dan generasi-generasi yang berhasil sesudahnya seperti PGA,
40 XGA, atau SVGA merupakan standard analog video dengan sinyal R (Red), G (Green) dan B (Blue) dengan continuous voltage dan continuous range pada pewarnaan. Secara prinsip analog monitor memungkinkan penggunaan full color dengan intensitas yang tinggi. Generasi monitor terbaru adalah teknologi LCD yang tidak lagi menggunakan tabung elektron CRT tetapi menggunakan sejenis kristal liquid yang dapat berpendar. Teknologi ini menghasilkan monitor yang dikenal dengan nama Flat Panel Display dengan layar berbentuk pipih, dan kemampuan resolusi yang tinggi. Dengan perkembangannya yang sangat pesat, saat ini terdapat empt jenis teknologi monitor. Keempat golongan teknologi tersebut adalah CRT (Cathode Ray Tube), Liquid Crystal Display (LCD), Plasma gas dan OLED (organic Lighting Emitter Diode). Perkembangan teknologi komputer grafik dari masa ke masa harus juga diikuti dengan perkembangan teknologi display yang berfungsi sebagai alat keluaran dari grafik yang dibentuk agar dapat dinikmati oleh kita semua. Saat ini teknologi display yang paling populer dan paling banyak digunakan adalah LCD (Liquid Crystal Display), namun sebelum orang mengenal teknologi tersebut, ada beberapa teknologi lainya yang sempat merajai dunia teknologi display seperti CRT, saat ini juga terdapat beberapa teknologi display terbaru yang mulai bermunculan seperti LED, FED dan OLED
CRT Pada tahun 1897 Karl Ferdinand Braun, seorang ilmuwan Jerman yang membuat televisi (TV) tabung (cathode ray tube/CRT). Sebuah monitor CRT mengandung jutaan kecil merah, hijau, dan biru fosfor titik-titik yang bercahaya ketika diserang oleh suatu berkas elektron yang bergerak di layar untuk membuat gambar yang jelas. Gambar di bawah menunjukkan bagaimana ini bekerja di dalam sebuah CRT.
41
Dalam tabung sinar katoda, yang "katoda" adalah filamen dipanaskan. Filamen yang dipanaskan dalam menciptakan ruang hampa di dalam sebuah gelas "tabung." The "sinar" adalah sebuah aliran elektron yang dihasilkan oleh senapan elektron yang secara alamiah tuangkan dari katoda yang dipanaskan ke dalam vakum. Elektron negatif. Anoda adalah positif, sehingga menarik elektron mengalir dari katoda. Layar ini dilapisi dengan fosfor, bahan organik yang terpancar ketika dikejutkan oleh berkas elektron. Ada tiga cara untuk menyaring berkas elektron untuk mendapatkan gambar yang benar pada layar monitor: bayangan masker, aperture grill dan slot masker. Teknologi ini juga berpengaruh ketajaman layar monitor. Mari kita lihat lebih dekat sekarang ini.... Prinsip kerja monitor konvensional, monitor CRT (Cathode Ray Tube), sama dengan prinsip kerja televisi yang berbasis CRT. Elektron ditembakkan dari belakang tabung gambar menuju bagian dalam tabung yang dilapis elemen yang terbuat dari bagian yang memiliki kemampuan untuk memendarkan cahaya. Sinar elektron tersebut melewati serangkaian magnet kuat yang membelokbelokkan sinar menuju bagian-bagian tertentu dari tabung bagian dalam.
42 Begitu sinar tersebut sampai ke bagian kaca tabung TV atau monitor, dia akan menyinari lapisan berpendar, menyebabkan tempat-tempat tertentu untuk berpendar secara temporer. Setiap tempat tertentu mewakili pixel tertentu. Dengan mengontrol tegangan dari sinar tersebut, terciptalah teknologi yang mampu mengatur pixel-pixel tersebut untuk berpendar dengan intensitas cahaya tertentu. Dari pixel-pixel tersebut, dapat dibentuklah gambar. Teorinya, untuk membentuk sebuah gambar, sinar tadi menyapu sebuah garis horizontal dari kiri ke kanan, menyebabkan pixel-pixel tadi berpendar dengan intensitas cahaya sesuai dengan tegangan yang telah diatur. Proses tersebut terjadi pada semua garis horizontal yang ada pada pixel layar, dan ketika telah sampai ujung, sinar tersebut akan mati sementara untuk mengulang proses yang sama untuk menghasilkan gambar yang berbeda. Makanya Belia dapat nonton objek yang seolah-olah bergerak di layar televisi atawa monitor. Pada masa awal-awal kelahira nteknologi televisi, para ilmuwan yang merancang televisi dan tabung gambar menemui hambatan teknis. Seperti yang Belia tahu, TV zaman baheula belumlah sekeren dan secanggih sekarang, eh maksudnya belum mampu menampilkan detail gambar seperti sekarang. Dulu, lapisan yang berpendar dalam tabung gambar kualitasnya nggak sebaik sekarang. Jadi kualitas pixel yang dihasilkan juga tidak seoptimal sekarang. Kini, seiring dengan perkembangan teknologi komputer yang membutuhkan kualitas TV dan monitor tabung yang lebih baik, untungnya kualitas lapisan berpendar dalam tabung monitor telah lebih baik. Hasilnya diperoleh tabung gambar yang mampu menghasilkan gambar dengan resolusi yang lebih tinggi. Wajar aja, soalnya
43 komputer banyak berurusan dengan text, dan itu membutuhkan detil gambar yang tinggi. Sayangnya, teknologi monitor dengan tabung CRT ini ditengarai memiliki banyak pengaruh buruk bagi kesehatan penggunanya. Sejumlah riset mengindikasikan bahwa ekspos berlebihan monitor pada mata dapat menyebabkan penurunan kualitas penglihatan. Hal ini disebabkan oleh radiasi sinar elektron pada tabung gambar monitor atau televisi tabung. a. Kelebihan Monitor CRT Harganya lebih murah dibandingkan monitor LCD Kualitas gambar yang lebih tajam dan cerah dibandingkan monitor LCD Mampu menghasilkan resolusi gambar yang lebih tinggi dibandingkan dengan monitor LCD Memiliki sudut viewable lebih baik dibandingkan monitor LCD b. Kekurangan Monitor CRT Menimbulkan efek radiasi yang bisa mengganggu kesehatan. Dimensinya menyita ruangan yang cukup besar. Apalagi bila ukurannya makin besar Menimbulkan efek kedip (flicker) yang mengganggu mata Butuh konsumsi listrik yang lebih tinggi dibandingkan LCD Sinyal gambar analog Area layarnya tidak optimum karena harus dialokaskan untuk bezel/frame Bentuknya kurang sedap dilihat dibandingkan dengan monitor LCD.
44
LCD Teknologi LCD sebetulnya bukan barang baru. LCD pertama kali diujicoba di laboratorium perusahaan elektronik RCA di Amerika Serikat, oleh George Heilmeier pada tahun 1968. Dia mengujicoba LCD berbasis dynamic scattering mode (DSM). Setahun kemudian, perusahaan milik Heilmeier yakni Optel lantas memproduksi LCD. LCD biasa digunakan untuk men-display audio visual. LCD ini melakukan kontrol elektrik pada cahaya dengan mempolarisasi kristal cair yang ada pada sel-sel media yang mengaplikasikan LCD itu. Polarisasi tersebut dilakukan setelah ada kontak elektrik pada cairan-cairan yang ada pada sel-sel di TV. LCD sekarang ini diaplikasikan tidak hanya di TV tetapi juga di beberapa peranti misalnya, ponsel dan kamera digital. Pengaplikasian LCD itu dengan melakukan mode reflektif dan transmissive. Metode reflektif itu biasanya yang biasa ada pada arloji dan kalkulator, display LCD pada barang-barang ini tidak membutuhkan daya konsumsi energi tinggi sehingga tidak memboroskan baterai. Sementara yang menggunakan transmissive butuh daya banyak, contoh dari pengaplikasian ini adalah pada telepon seluler (ponsel). Dalam layar LCD, warna terbagi dalam tiga warna utama yakni dalam filter merah, hijau dan biru. Pendeskripsian warna berikutnya tergantung pada pembacaan alat pen-display LCD itu dengan brightnesses yang dipunyainya. Komponen warna, berikutnya akan diatur dalam cara yang berbeda tergantung jumlah pixelnya.
45 Karenanya terkadang kita dihadapkan pada resolusi pixel misalnya 640 x 480 dan sebagainya. Semakin besar resolusi pixelnya, semakin kaya warna. Pada dasarnya prinsip kerja LCD adalah dengan memancarkan sinar yang terang ke panel 3 LCD. Panel LCD inilah yang kemudian menampilkan gambar/image bergerak dan memproyeksikan gambar melalui lensa pembesar ke kaca yang dapat merefleksikan gambar tersebut di layar televisi. Sistem tiga LCD juga memiliki kemampuan mengolah gambar yang lebih baik, sehingga menghasilkan gambar yang lebih baik pula. Sinyal-sinyal gambar/image yang ditangkap LCD, dengan kaca diacroic pilahkan citra atau gambar warna merah, biru hijau (RGB). Warna yang terpisah ini kemudian disatukan kembali oleh prisma dan kemudian dipantulkan ke kaca untuk selanjutnya bisa dinikmati di layar televisi.
Untuk resolusi warna media yang lebih besar, seperti untuk monitor komputer dan televisi, sistem yang digunakan adalah active-matrix LCD. Pada bidang ini, panel LCD disamping mempolarisasikan kristal cair juga matrix dari thin film transistor (TFT). Sistem ini akan menghasilkan gambar lebih tajam dan terang. Panel LCD pada TV ini biasanya memiliki transistor defective yang bisa memberikan efek gelap dan terang pada pixel.
46
Nematic liquid crystal Jenis kristal cair yang digunakan dalam pengembangan teknologi LCD adalah tipe nematic (molekulnya memiliki pola tertentu dengan arah tertentu). Tipe yang paling sederhana adalah twisted nematic (TN) yang memiliki struktur molekul yang terpilin secara alamiah (dikembangkan pada tahun 1967). Struktur TN terpilin secara alamiah 90. Struktur TN ini dapat dilepas pilinannya (untwist) dengan menggunakan arus listrik. Pada gambar 2, kristal cair TN (D) diletakkan di antara dua elektroda (C dan E) yang dibungkus lagi (seperti sandwich) dengan dua panel gelas (B dan F) yang sisi luarnya dilumuri lapisan tipis polarizing film. Lapisan A merupakan cermin yang dapat memantulkan cahaya yang berhasil menembus lapisan-lapisan sandwich LCD. Kedua elektroda dihubungkan dengan baterai sebagai sumber arus. Panel B memiliki polarisasi yang berbeda 90 dari panel F. Begini cara kerja sandwich ajaib ini. Cahaya masuk melewati panel F sehingga terpolarisasi. Saat tidak ada arus listrik, cahaya lewat begitu saja menembus semua lapisan, mengikuti arah pilinan molekul- molekul TN (90), sampai memantul di cermin A dan keluar kembali. Akan tetapi, ketika elektroda C dan E (elektroda kecil berbentuk segi empat yang dipasang di lapisan gelas) mendapatkan arus, kristal cair D yang sangat sensitif terhadap arus listrik tidak lagi terpilin sehingga cahaya terus menuju panel B dengan polarisasi sesuai panel F. Panel B yang memiliki polarisasi yang berbeda 90 dari panel F menghalangi cahaya untuk menembus terus. Dikarenakan cahaya tidak dapat lewat, pada layar terlihat bayangan gelap berbentuk segi empat kecil yang ukurannya sama dengan elektroda E (berarti pada bagian tersebut cahaya tidak dipantulkan oleh cermin A).
47 Sifat unik yang dapat langsung bereaksi dengan adanya arus listrik ini dimanfaatkan sebagai alat ON/OFF LCD. Namun, sistem ini masih membutuhkan sumber cahaya dari luar. Komputer dan laptop biasanya dilengkapi dengan lampu fluorescent yang diletakkan di atas, samping, dan belakang sandwich LCD supaya dapat menyebarkan cahaya (backlight) sehingga merata dan menghasilkan tampilan yang seragam di seluruh bagian layar. Mudah bukan? Akan tetapi, tunggu dulu, perancangan dan pembuatan LCD tidak semudah konsepnya. Masalah pertama disebabkan oleh tidak ada satu pun senyawa TN yang sudah ditemukan yang dapat memberikan karakteristik paling ideal. Wah, ini berarti kristal cair yang digunakan harus merupakan campuran berbagai senyawa TN. Untuk mencampur senyawa-senyawa ini, diperlukan percobaan untuk menentukan formulasi terbaik, dan hal ini bukan hal mudah. Kadang-kadang dibutuhkan sampai 20 macam senyawa TN untuk mendapatkan karakteristik yang diinginkan. Bayangkan, mencampur dua macam senyawa saja sudah sangat sulit karena karakteristik masing-masing (misalnya rentang suhu) saling memengaruhi. Belum lagi penentuan titik leleh campuran yang terbentuk. Selain itu, kristal cair TN yang terpilin sebesar 90 membutuhkan beda potensial sebesar 100 persen untuk mencapai posisi untwist (posisi ON). Wow!!! Besar sekali! Dan, sangat tidak efisien! Lalu, bagaimana jalan keluarnya? Super-twisted nematic dan thin-film transistor Pada tahun 1980, Colin Waters (Inggris) memberikan solusi bagi masalah ini. Ia bersama Peter Raynes menemukan bahwa semakin besar derajat pilinan, beda potensial yang dibutuhkan semakin kecil. Pilinan yang menunjukkan beda potensial paling kecil adalah 270. Penemuan ini menjadi dasar dikembangkannya super-twisted
48 nematic (STN) yang sampai sekarang digunakan pada telepon seluler sampai layar laptop. Pada waktu yang hampir bersamaan pula, Peter Le Comber dan Walter Spear (juga dari Inggris) menemukan solusi lain dengan cara menggunakan bahan semikonduktor silikon amorf untuk membuat thin-film transistor (TFT) pada tiap pixel TN. Metode ini menghasilkan tampilan dengan kualitas tinggi, tetapi memerlukan biaya produksi yang sangat mahal dan melibatkan proses pembuatan yang rumit. Tentu saja rumit! Karena, untuk menghasilkan gambar dengan kualitas 256 subpixel, diperlukan sejumlah 256 pixel warna merah x 256 pixel biru x 256 pixel hijau. Tunggu sebentar! 256 x 256 x 256 = 16.8 juta. 16.8 juta transistor super mini harus dibuat dan dilekatkan ke lapisan TN? Rumit dan melelahkan! Tentu saja biayanya menjadi sangat mahal! Akan tetapi, seiring dengan semakin majunya teknologi, biaya pembuatan TFT sedikit demi sedikit bisa ditekan karena ada penyederhanaan proses pembuatannya. Namun, STN pun tidak mau kalah saingan! Kualitas tampilan STN semakin lama pun semakin baik sehingga keduanya terus bersaing ketat dan mendominasi pasar. Perkembangan teknologi LCD semakin pesat dalam dekade terakhir. Kepopuleran LCD terutama karena kualitas gambar yang baik, konsumsi energi yang kecil, serta kekuatan materi kristal cair yang tidak pernah mengalami degradasi. Penelitian lanjut terus dikembangkan untuk mencapai target yang sangat bervariasi, mulai dari usaha memproduksi LCD untuk ukuran layar yang semakin besar sampai kemungkinan alternatif komponen dengan bahan plastik yang lebih ringan. Sasaran utama yang paling dikejar sebagian besar produsen adalah LCD yang tidak lagi menggunakan backlight.
49 a. Kelebihan Monitor LCD Konsumsi listrik rendah Tidak menghasilkan radiasi elektromagnet yang mengganggu kesehatan Tidak menimbulkan efek kedipan (flicker free) Area layarnya optimum karena tidak termakan untuk bezel/frame Dimensinya tidak akan menyita ruangan terlalu besar dan ringan untuk dijinjing Bentuknya stylish dan enak dilihat Sinyal gambar digital b. Kekurangan Monitor LCD Harganya lebih mahal dibandingkan dengan monitor CRT Kualitas gambar yang dihasilkan belum sebaik monitor CRT Resolusi gambar yang dihasilkan lebih rendah dibandingkan monitor CRT Sudut viewable-nya terbatas. Begitu kita mengeset sudut pandang, gambar terlihat akan berubah di mata kita.
OLED Informasi warna TV OLED diproduksi menggunakan campuran carbon-based organik, yang memancarkan [cahaya/ ringan] merah, biru dan hijau sebagai jawaban atas arus elektrik. OLED Beda paling dari LCD di (dalam) yang tidak ada backlight dan tidak (ada) “ menjadi bengkok” kristal. Tidak ada sumber [cahaya/ ringan] tambahan yang diperlukan untuk memberi tenaga campuran warna yang organik, oleh karena itu mereka menggunakan dengan sangat lebih sedikit [kuasa/ tenaga] dan dapat dihasilkan dengan suatu profil [yang] tipis/encer. panel TV OLED datang dengan baik dua maupun tiga lapisan yang campuran yang organik ditempatkan; terletak satu lapisan [yang] tipis/encer hebat “ gelas/kaca”. Panel didukung oleh
50 suatu [sulit/keras] plexiglass yang material juga melindungi material bagian dalam yang sensitip. Ingat CRT ( tabung sinar katode) TEVE? Pajangan OLED menggunakan suatu lapisan katode untuk memperkenalkan elktron kepada lapisan dasar [dari;ttg] molekul organik. Apakah di/tersebar ke seberang suatu flat-panel menyaring atau yang ditempatkan jantungnya suatu proyektor, semua LCD pajangan datang dari latar belakang teknologi yang sama. Suatu acuan/matriks thin-film transistor ( TFTS) voltase persediaan ke sel liquid-crystal-filled menyisipkan dua lembar;seprai gelas/kaca. Ketika dipukul dengan suatu [beban/ tugas] elektrik, kristal menguraikan [bagi/kepada] suatu derajat tingkat tepat untuk menyaring cahaya putih yang dihasilkan oleh suatu lampu di belakang layar ( untuk/karena flat-panel TEVE) atau sese]orang memproyeksikan melalui suatu LCD chip kecil ( untuk/karena TEVE proyeksi). LCD TEVE reproduksi warna melalui suatu proses pengurangan: Mereka membuat perencanaan panjang gelombang warna tertentu dari spektrum cahaya putih sampai mereka (ada)lah meninggalkan dengan warna sekedar kebenaran. Dan, adalah kuat cahaya diijinkan untuk menerobos acuan/matriks hablur cair ini yang memungkinkan LCD televisi untuk memajang gambaran chock-full colors-or gradasinya.
51
BAB 5 PRIMITIF OBJEK Primitif objek terdiri atas : - Titik, yaitu Vertex, dimana vertex merupakan acuan dasar - Garis, yaitu Line/Edge - Bangun 2D (Face)
Fungsi Dasar Menggambar Titik Berikut adalah beberapa fungsi didalam menggambar suatu titik:
glVertex2i(x,y), yaitu suatu fungsi untuk menggambar titik pada koordinat x dan y, dengan nilai satuan berupa integer. Contoh glVertex2i(10,10);
glVertex2f(x,y), yaitu suatu fungsi untuk menggambar titik pada koordinat x dan y, dengan nilai satuan berupa float. Contoh glVertex2f(10.0,10.0);
glVertex2d(x,y), yaitu suatu fungsi untuk menggambar titik pada koordinat x dan y, dengan nilai satuan berupa double. Contoh glVertex2d(10.0,10.0);
1. Primitif Objek
52 Berikut adalah primitive objek yang akan dipergunakan didalam pembuatan suatu objek : # define GL_POINTS, Primitif objek ini dipergunakan untuk menciptakan suatu titik. # define GL_LINES, Primitif objek ini adalah suatu primitive objek guna menciptakan suatu garis. Rumus : ∑vertex = 2N # define GL_LINE_LOOP # define GL_LINE_STRIP
Rumus pada line strip : ∑vertex = N + 1
# define GL_TRIANGLES, Triangle atau segitiga adalah tiga buah titik yang terhubung menjadi suatu segitiga dengan blok di tengahnya. Pada penggunaan primitive objek ini kita harus menggunakan minimal 3 buah vertex guna membentuk suatu objek. Rumus : ∑vertex = 3N
53
Keterangan : N = Jumlah Segitiga # define GL_TRIANGLES_STRIP, Pada triangles strip jumlah vertex yang dipergunakan adalah 4 buah vertex. # define GL_TRIANGLE_FAN, Triangles fan adalah pembuatan suatu objek dengan menggunakan segitiga dimana hanya menggunakan 1 titik pusat saja. # define GL_QUADS, Quad atau segempat adalah empat buah titik yang terhubung menjadi suatu segempat dengan blok di tengahnya. # define GL_QUADS_STRIP, Pada quads strip 4 buah vertex merupakan 1 kelompok. Langkah rendering pada quads strip : a. Nomor yang berhadap (membentuk 2 garis yang sejajar) b. Nomor ganjil dengan nomor ganjil dipertemukan c. Nomor genap dengan nomor genap dipertemukan d. Garis yang tersisa akan dipertemukan # define GL_POLYGON, Polygon merupakan suatu fungsi yang mirip dengan polyline, tetapi menghasilkan kurva tertutup dengan blok warna (fill). Rendering yang dimiliki oleh GL_POLYGON sama dengan GL_TRIANGLE_FAN Catatan :
54 a. glLineWidth yaitu suatu fungsi yang berfungsi untuk mengatur tebalnya garis b. glPointSize yaitu suatu fungsi yang berfungsi untuk mengatur besarnya suatu objek c. gluOrtho2D yaitu suatu fungsi untuk mengatur proyeksi hasil eksekusi dan mendefinisikan besarnya sistem koordinat dengan urutan kiri-kanan dan bawah-atas
3. Color Untuk memberi warna pada objek, seperti titik atau garis, dapat
dilakukan
dengan
menggunakan
fungsi
à
glColor3f(red,green,blue); Di mana red, green, blue berada pada 0 sampai dengan 1, yang menunjukkan skala pencerahan dari masing-masing skala. Berikut adalah beberapa fungsi color : 1. glColor3f(0,0,0);//black 2. glColor3f(0,0,1);//blue 3. glColor3f(0,1,0);//green 4. glColor3f(0,1,1)//cyan 5. glColor3f(1,0,0)//red 6. glColor3f(1,0,1)//magenta 7. glColor3f(1,1,0);//yellow 8. glColor3f(1,1,1);//white
4. SegiEmpat Berikut adalah pembuatan suatu objek berupa segiempat :
55 Proses Rendering : SegiEmpat (posx, posy, w, h) Maka sintaks pembuatan segiempat : glBegin (GL_QUADS); glVertex2i (posx, posy); glVertex2i (posx-w, posy); glVertex2i (posx-w, posy-h); glVertex2i (posx,posy-h);
OUTPUT PRIMITIF Gambar dapat dijelaskan dengan beberapa cara, bila menggunakan raster display, gambar ditentukan oleh satu set intensitas untuk posisi display pada display. Sedangkan dengan scene tampilan gambar dengan loading array dari pixel ke dalam buffer atau dengan mengkonversikan scan dari grafik geometri tertentu ke dalam pola pixel. Paket grafika dilengkapi dengan fungsi untuk menyatakan scene dalam bentuk struktur. Paket pemrograman grafika dilengkapi dengan fungsi untuk menyatakan scene dalam bentuk struktur dasar geometri yang disebut output primitif, dengan memasukkan output primitif tersebut sebagai struktur yang lebih kompleks.
1. Titik dan Garis Pembentukan titik dilakukan dengan mengkonversi suatu posisi titik koordinat dengan program aplikasi ke dalam suatu operasi
56 tertentu menggunakan output. Random-scan (vektor ) system menyimpan instruksi pembentukan titik pada display list dan nilai koordinat menentukan posisi pancaran electron ke arah lapisan fosfor pada layer. Garis dibuat dengan menentukan posisi titik diantara titik awal dan akhir dari suatu garis.
Algoritma pembentukan garis Persamaan garis menurut koordinat Cartesian adalah : y = m.x+b dimana m adalah slope (kemiringan) dari garis yang dibentuk oleh dua titik yaitu (x1, y1) dan (x2, y2). Untuk penambahan x sepanjang garis yaitu dx akan mendapatkan penambahan y sebesar : ∆y = m. ∆X a. Algoritma garis DDA DDA adalah algoritma pembentukan garis berdasarkan perhitungan x dan y, menggunakan rumus y = m. x. Garis dibuat dengan menentukan dua endpoint yaitu titik awal dan titik akhir. Setiap koordinat titik yang membentuk garis diperoleh dari perhitungan, kemudian dikonversikan menjadi nilai
integer.
Langkah-langkah
pembentukan
menurut
algoritma DDA, yaitu : 1. Tentukan dua titik yang akan dihubungkan. 2. Tentukan salah satu titik sebagai titik awal (x0, y0) dan titik akhir (x1, y1). 3. Hitung ∆x = x1 - x0 dan ∆y = y1 - y0.
57 4. Tentukan
step,
yaitu
jarak
maksimum
jumlah
penambahan nilai x maupun nilai y dengan cara : bila nilai |∆y| > |∆x| maka step = nilai |∆y|. bila tidak maka step = |x|. 5. Hitung penambahan koordinat pixel yaitu x_increment = x / step dan y_increment = y / step. 6. Koordinat
selanjutnya
(x+x_incerement,
y+y_increment). 7. Posisi pixel pada layer ditentukan dengan pembulatan nilai koordinasi tersebut. 8. Ulangi step 6 dan 7 untuk menentukan posisi pixel selanjutnya, sampai x = x1 dan y = y1. Contoh : Untuk menggambarkan algoritma DDA dalam pembentukan suatu garis yang menghubungkan titik (10,10) dan (17,16), pertama-tama ditentukan dx dan dy, kemudian dicari
step
untuk
mendapatkan
x_increment
y_increment. ∆x = x1 - x0 = 17-10 = 7 ∆y = y1 - y0 = 16 -10 = 6 selanjutnya hitung dan bandingkan nilai absolutnya. |∆x| = 7 |∆y| = 6 karena |∆x| > |∆y|, maka step = |∆x| = 7, maka diperoleh : x_inc = 7/7= 1 y_inc = 6/7 = 0,86
dan
58
Algoritma Garis Bressenhem Prosedur
untuk
menggambar
kembali
garis
dengan
membulatkan nilai x atau y kebilangan integer membutuhkan waktu, serta variable x,y dan m merupakan bilangan real karena kemiringan merupakan nilai pecahan. Bressenham mengembangkan algoritma klasik yang lebih menarik,
59 karena hanya menggunakan perhitungan matematika dengan bilangan integer. Dengan demikian tidak perlu membulatkan nilai posisi setiap pixel setiap waktu. Algoritma garis Bressenhem disebut juga midpoint line algorithm adalah algoritma konversi penambahan nilai integer yang juga dapat diadaptasi untuk menggambar sebuah lingkaran. Langkahlangkah untuk membentuk garis menurut algoritma ini adalah : 1. Tentukan dua titik yang akan dihubungkan dalam pembentukan garis. 2. Tetukan salah satu titik disebelah kiri sebagai titik awal (x0, y0) dan titik lainnya sebagai titik akhir (x1, y1). 3. Hitung ∆x, ∆y, 2∆x, dan 2∆y – 2∆x. 4. Hitung parameter p0 = 2∆y – ∆x. 5. Untuk setiap xk sepanjang jalur garis, dimulai dengan k = 0 bila pk =y.
Contoh : Untuk menggambarkan algoritma Bressenham dalam pembentukan suatu lingkaran dengan titik pusat (0,0) dan radius 10, perhitungan berdasarkan pada oktan dari kuadran pertama dimana x =0 sampai x =y. Penyelesaian :
64 (x0,y0) =(0,0) r = 10 (x0,y0) = (0,10) 2x0 = 0, 2y0 = 20 parameter p0 = 1-r p0 = -9
ATRIBUT OUTPUT PRIMITIF Pada umumnya, setiap parameter yang memberi pengaruh pada output primitive ditampilkan sesuai dengan parameter atribut.
65 Beberapa parameter atribut, seperti ukuran dan warna ditentukan sebagai karakteristik dasar dari parameter. Sedangkan yang lain ditentukan untuk penampilan pada kondisi tertentu. Teks dapat dibaca dari kiri ke kanan, miring searah diagonal (slanted diagonal), atau vetical sesuai kolom. Salah satu cara untuk mengatur atribut output primitif, yaitu dengan daftar parameter fungsi yang berkaitan, contohnya fungsi menggambar garis dapat berisi parameter untuk warna, tebal, dan lainnya. 1. Atribut Garis Atribut dasar untuk garis lurus adalah type (tipe), width (tebal), dan color (warna). Dalam berapa paket aplikasi grafik, garis dapat ditampilkan dengan menggunakan pilihan pen atau brush. a. Tipe Garis Garis mempunyai beberapa linetype (tipe garis) diantaranya solid line, dashed line (garis putus), dan dotted line (garis titik-titik). Algoritma pembentukan garis dilengkapi dengan pengaturan panjang dan jarak yang menampilkan bagian solid sepanjang garis. Garis putus dibuat dengan memberikan nilai jarak dengan bagian solid yang sama. Garis titik-titik dapat ditampilkan dengan memberikan jarak yang lebih besar dari bagian solid.
b. Tebal Garis Implementasi dari tebal garis tergantung dari kemampuan alat output yang digunakan. Garis tebal pada video monitor dapat ditampilkan sebagai garis adjacent parallel (kumpulan
66 garis sejajar yang berdekatan), sedangkan pada plotter mungkin menggunakan ukuran pen yang berbeda. Pada implementasi raster, tebal garis standar diperoleh dengan menempatkan satu pixel pada tiap posisi, seperti algoritma Bressenham. Garis dengan ketebalan didapatkan dengan perkalian integer positif dari garis standar, dan menempatkan tambahan pixel pada posisi sejajar. Untuk garis dengan slope kurang dari 1, routine pembentukan garis dapat dimodifikasi untuk menampilkan ketebalan garis dengan menempatkan pada posisi vertikal setiap posisi x sepanjang garis. Untuk garis dengan slope lebih besar dari 1, ketebalan garis dapat dibuat dengan horizontal span.
c. Pilihan Pen dan Brush Pada beberapa paket aplikasi grafik, dapat ditampilkan dengan pilihan pen maupun brush. Kategori ini meliputi bentuk, ukuran, dan pola (pattern). Ketebalan yang bermacam-macam dari garis yang mempunyai bentuk pen dan brush dapat ditampilkan dengan cara mengubah ukuran dari mask.
d. Warna Garis Bila suatu sistem dilengkapi dengan pilihan warna (atau intensitas), parameter yang akan diberikan pada indeks warna termasuk dalam daftar nilai atribut dari sistem. Routine polyline membuat garis pada warna tertentu dengan
67 mengatur nilai warna pada frame buffer untuk setiap posisi pixel, menggunakan prosedur set pixel. Jumlah warna tergantung pada jumlah bit yang akan digunakan untuk menyimpan informasi warna.
2. Fill Area Primitif Fill area (pengisian area) output primitif standar pada paket aplikasi grafika pada umumnya adalah warna solid atau pola raster. Terdapat dua dasar pendekatan untuk mengisi area pada raster sistem.
Menentukan overlap interval untuk scan line yang melintasi area
Dengan memulai dari titik tertentu pada posisi di dalam poligon dan menggambar dengan arah menyebar ke pinggir, sampai batas poligon.
Algoritma Boundary-Fill Metode ini bermanfaat untuk paket aplikasi grafik interaktif, dimana titik dalam dapat dengan mudah ditentukan. Prosedurnya yaitu menerima input koordinat dari suatu titik (x,y), warna isi dan warna garis batas. Dimulai dari titik (x,y) prosedur memeriksa posisi titik tetangga, yaitu apakah merupakan warna batas, bila tidak maka titik tersebut digambarkan dengan warna isi. Proses ini dilanjutkan sampai
68 semua titik pada batas diperiksa. Ada dua macam metode yaitu 4-connected dan 8-connected.
Algoritma Flood-Fill Metode ini dimulai pada titik (x,y) dan mendefinisikan seluruh pixel pada bidang tersebut dengan warna yang sama. Bila bidang yang akan diisi warna mempunyai beberapa warna, pertama-tama yang dilakukan adalah membuat nilai pixel yang baru, sehingga semua pixel mempunyai warna yang sama.
3. Pembentukan Karakter Huruf, angka dan karakter lain dapat ditampilkan dalam berbagai ukuran (size) dan style. Jenis huruf dibagi menjadi 4 macam, yaitu serif, sanserif, agyptian dan dekoratif. Serif Huruf dalam kategori serif mempunyai kait pada ujungnya. Misalnya : times new roman, book antiqua. Sanserif Huruf dalam kategori sanserif tidak mempunyai kait pada ujungnya. Misalnya : arial, helvetica, tahoma. Agyptian Huruf dalam kategori agyptian mempunyai kait dengan bentuk segi empat yang mempunyai karakter kokoh. Dekoratif
69 Huruf dalam kategori dekoratif mempunyai bentuk indah. Misalnya : monotype corsiva Dua macam metode dapat digunakan untuk menyimpan jenis huruf dalam komputer. Metode sederhana bitmap menggunakan pola grid dengan bentuk segi empat, dan karakternya disebut dengan bitmap font. Grid dari karakter dipetakan pada posisi frame buffer, bit yang mempunyai nilai 1 berhubungan dengan tampilan pixel pada monitor. Metode lain, yaitu dengan stroke menggunakan garis lurus dan kurva, karakternya disebut dengan outlilne font. Huruf ditampilkan menurut koordinat relatif (x,y) dimana pusat dari koordinat adalah pada posisi kiri bawah dimana karakter pertama yang ditampilkan.
Antialiasing Seperti yang telah dikatakan sebelumnya bahwa konversi rasterscan adalah pengisian harga-harga elemen suatu "matriks" (yaitu frame
buffer)
sedemikian
rupa
sehingga
secara
visual
"tergambarkan" primitif- rimitif grafik yang bersangkutan. Jadi pada
dasarnya
adalah semacam diskretisasi
obyek
tsb.
Selanjutnya sebagai sesuatu yang diskret, masalah yang timbul adalah distorsi informasi yang disebut aliasing. Secara visual obyek garis atau batas suatu area akan terlihat sebagai tangga (effek tangga atau "jaggies"). Peningkatan resolusi frame buffer dapat mengurangi efek ini namun tidak dapat dihilangkan sama
70 sekali karena keterbatasan teknologi (ingat faktor-faktor yang menentukan resolusi: refresh rate, dan ukuran frame buffer). Pada sistem raster dengan tingkat intensitas > 2 bisa diaplikasikan
metoda
antialiasing
dengan
memodifikasi
intensitas pixel-pixel "batas" obyek dengan latar atau obyek lainnya. Modifikasi tsb. akan memper-"halus" batas-batas tsb. sehingga mengurangi penampakan yang "jaggies" tsb. Ada tiga pendekatan: o
Supersampling (postfiltering)
o
Area sampling
o
pixel phasing
Supersampling atau Postfiltering Secara lojik metoda ini "memperhalus" ukuran pixel ke dalam subpixel-subpixel dan "menggambarkan" garis pada grid subpixel tsb. lalu harga intensitas suatu pixel ditentukan sesuai dengan berapa banyak subpixelnya dikenai "garis" tersebut. Relasi: intensitas pixel ~ jumlah subpixel pada garis. Ada dua cara penghitungan relasi tersebut :
Menganggap garis adalah garis dengan ketebalan infinitesimal 0 (hanya garis lojik). Untuk subsampling 3x3 ada 4 kemungkinan tingkatan: 3 subpixel, 2 subpixel, 1 subpixel, dan tidak ada. Pemberian intensitas sesuai dengan keempat tingkat tersebut.
71
Contoh :
Menganggap garis adalah garis dengan tebal tetap yaitu 1 pixel (yaitu suatu segiempat dengan lebar 1 pixel) dan intensitas dihitung sesuai dengan jumlah subpixel yang "tertutupi" oleh segi empat ini (Perlu diambil acuan bahwa suatu subpixel "tertutupi", misalnya jika sudut kiri bawah subpixel ada di dalam segi empat).Yang paling sederhana adalah menggunakan harga rasio jumlah subpixel terhadap total subpixel pada pixel sebagai fungsi intensitas. Untuk subsampling 3x3 total subpixel adalah 9 sehingga ada 10 tingkat intensitas yang bisa diberikan. Khusus titik ujung yang berharga bilangan bulat (karena bisa untuk koordinat bilangan real) Akan diberi harga penuh
72
Alternatif penghitungan sederhana (rasio tsb.) ini adalah dengan pembobotan dengan mask diskret (Pixel Weighting Mask), dan pembobotan dengan mask kontinyu (continuous filtering).
¨ Pixel-weighting Masks Alternatif menggunakan rasio secara langsung di atas, teknik fitering dalam pengolahan citra (bedanya: pengolahan citra pada pixel sedangkan di sini pada subpixel) dengan suatu mask (atau kernel) sesuai dengan subdivision pixel misalnya 3x3 subpixel digunakan untuk menghitung. Ada beberapa bentuk mask. Contohnya: - box mask (berefek averaging) - gaussian mask Kadang-kadang mask meliputi juga subpixel di pixel tetangganya untuk mendapatkan hasil yang lebih smooth.
¨ Continuous Filtering
73 Smoothing mirip weighting mask di atas pada subpixelsubpixel (dari pixel ybs. dan juga dari subpixel tetangganya) namun menggunakan fungsi permukaan kontinyu: box, konus, atau gaussian. Jadi secara teoritis dilakukan konvolusi antara fungsi filter dengan fungsi citra pada tingkat subpixel. Secara praktis untuk mengurangi komputasi digunakan suatu table-lookup dari kombinasi pixel dengan pixel-pixel tetangganya.
a. Area Sampling Pada Unweighted Area Sampling suatu garis diangap sebagai segiempat dengan lebar 1 pixel seperti halnya pada supersampling cara kedua di atas. Yang dihitung adalah luas bagian pixel yang tertutup "segiempat" garis tersebut secara geometris.
Penghitungan
lebih
akurat
tetapi
karena
memerlukan perhitungan yang lebih rumit maka metoda ini lebih banyak digunakan untuk anti-aliasing batas dari fillarea. Metodaini menghitung luas bagian dari pixel yang tertutup area (garis atau fill-area) dan dari rasio luas tsb. terhadap luas pixel dapat ditentukan bobot foreground terhadap background untuk mendapatkan intensitas pixel. Cara penghitungannya? Pitteway & Watkinson: untuk fillarea dengan memodifikasi midpoint algorithm untuk garis sehingga fungsi diskriminan p menentukan juga persentasi tsb. Dalam algoritma ini pada persamaan garis y = m x + b, m £ 1
74 digunakan fungsi keputusan: p = m (xi + 1) + b - (yi + ½) Sementara bagian pixel yang tertutup area di bawah garis tersebut adalah suatu trapesium dengan ketinggian kiri y = m (xi - ½) + b - (yi – ½) dan ketinggian kanan y = m (xi + ½) + b - (yi – ½) serta lebar 1 (satuan pixel). Luas trapesium ini adalah = m xi + b - (yi - 0.5) = p - (1 - m)
b. Pixel Phasing Pergeseran mikro (microposition) yang dilakukan oleh deflektor elektron sebesar 1/4, 1/2 atau 3/4 diameter pixel.
Kompensasi Perbedaan Intensitas Garis Secara normal garis diagonal (tanpa antialiasing) lebih tipis dari garis horisontal/vertikal karena pada garis tsb. pixel-pixel lebih spanned dari pada pixel-pixel pada garis hosrisontal/diagonal. Jadi secara visual efek ini dapat juga dikurangi dengan menaikkan intensitas garis yang mengarah diagonal sesuai dengan sudut dan mencapai maksimum pada 450 dengan faktor Ö2 dari garis horisontal/vertikal.
KESIMPULAN OpenGL
memiliki
beberapa
komponen
dasar
untuk
merepresentasikan suatu obyek. Komponen dasar tersebut, disebut sebagai OpenGL Geometric primitives. Komponen-komponen tersebut antara lain :
75 o
GL_POINTS → digunakan untuk membuat titik
o
GL_LINES → digunakan untuk menciptakan garis.
o
GL_LINESTRIP → digunakan untuk membuat bangun simetris terbuka.
o
GL_TRIANGLE → digunakan untuk membuat gambar segitiga.
o
GL_TRIANGLE FAN → digunakan untuk membuat bangun bebas
o
GL_TRIANGLESTRIP → digunakan untuk membuat bangun bebas
o
GL_QUADS
→
digunakan
untuk
membuat
gambar
segiempat o
GL_QUADSTRIP → digunakan untuk membuat bangun bebas
o
GL_POLYGON → digunakan untuk membuat bangun bebas
76
BAB 6 INTERAKSI KEYBOARD DAN MOUSE PENGENALAN Keyboard adalah salah satu hal yang penting untuk game komputer, dan menggunakan komputer secara umum. Bisakah Anda bayangkan mencoba untuk mengetik dengan mouse? Atau jumlah tombol yang akan diperlukan pada mouse untuk memungkinkan pergerakan * dan * memotret di First Person Shooter? Kabar baiknya adalah bahwa keyboard interaksi, berkat GLUT, adalah hal yang sangat mudah untuk menangani. Metode untuk menekan tombol, satu untuk ketika tombol pertama ditekan, dan satu untuk ketika tombol dilepaskan. a. Keyboard Keyboard merupakan unit input yang paling penting dalam suatu pengolahan data dengan komputer. Keyboard dapat berfungsi memasukkan huruf, angka, karakter khusus serta sebagai media bagi user (pengguna) untuk melakukan perintahperintah lainnya yang diperlukan, seperti menyimpan file dan membuka file. Penciptaan keyboard komputer berasal dari model mesin ketik yang diciptakan dan dipatentkan oleh Christopher Latham pada tahun 1868, Dan pada tahun 1887 diproduksi dan
77 dipasarkan
oleh
perusahan
Remington.
Keyboard
yang
digunakanan sekarang ini adalah jenis QWERTY, pada tahun 1973, keyboard ini diresmikan sebagai keyboard standar ISO (International Standar Organization). Jumlah tombol pada keyboard ini berjumlah 104 tuts. Keyboard sekarang yang kita kenal memiliki beberapa jenis port, yaitu port serial, ps2, usb dan wireless. • Contoh dari alat input jenis keyboard : 1. Point Of Sale Terminal Biasanya digunakan di supermarket. Alat ini terdiri dari keyboard, display (monitor) dan alat cetak (printer). Alat ini merupakan perkembangan dari cash register, namun dapat dihubungkan dengan computer. Alat ini dapat digunakan untuk pengendalian persediaan. Alat tambahannya antara lain : OCR tag reader serta barcode wand 2. Visual Display Terminal Merupakan alat input langsung, yang terdiri dari keyboard dan visual display (monitor) 3. Point Of Sale Terminal Biasanya digunakan di supermarket. Alat ini terdiri dari keyboard, display (monitor) dan alat cetak (printer). Alat ini merupakan perkembangan dari cash register, namun dapat dihubungkan dengan computer. Alat ini dapat digunakan untuk
78 pengendalian persediaan. Alat tambahannya antara lain : OCR tag reader serta barcode wand 4. Visual Display Terminal Merupakan alat input langsung, yang terdiri dari keyboard dan visual display (monitor) •Jenis-Jenis Keyboard : 1.) QWERTY 2.) DVORAK 3.) KLOCKENBERG Keyboard yang biasanya dipakai adalah keyboard jenis QWERTY, yang bentuknya ini mirip seperti tuts pada mesin tik. Keyboard QWERTY memiliki empat bagian yaitu : 1. typewriter key 2. numeric key 3. function key 4. special function key.
1. Typewriter Key Tombol ini merupakan tombol utama dalam input. Tombol ini sama dengan tuts pada mesin tik yang terdiri atas alphabet dan tombol lainnya sebagaimana berikut : • Back Space Tombol ini berfungsi untuk menghapus 1 character di kiri cursor • Caps Lock
79 Bila tombol ini ditekan, maka lampu indikator caps lock akan menyala, hal ini menunjukkan bahwa huruf yang diketik akan menjadi huruf besar atau Kapital, bila lampu indicator caps lock mati, maka huruf akan menjadi kecil. • Delete Tombol ini berfungsi untuk menghapus 1 karakter pada posisi
cursor
• Esc Tombol ini berfungsi untuk membatalkan suatu perintah dari suatu menu. • End Tombol ini berfungsi untuk memindahkan cursor ke akhir baris/halaman/lembar kerja. • Enter Tombol ini berfungsi untuk berpindah ke baris baru atau untuk melakukan suatu proses perintah. • Home Untuk menuju ke awal baris atau ke sudut kiri atas layar. • Insert Tombol ini berfungsi untuk menyisipkan character. • Page Up Tombol ini berfungsi untuk meggerakan cursor 1 layar ke atas. • Page Down Tombol ini berfungsi untuk Menggerakkan cursor 1 layar ke bawah.
80 • Tab Tombol ini berfungsi untuk memindahkan cursor 1 tabulasi ke kanan. 2. Numeric Key Tombol ini terletak di sebelah kanan keyboard. tombol ini terdiri atas angka dan arrow key. Jika lampu indikator num lock menyala maka tombol ini berfungsi sebagai angka. Jika lampu indikator num lock mati maka tombol ini berfungsi sebagai arrow key. 3. Function Key Tombol ini terletak pada baris paling atas, tombol fungsi ini ini terdiri dari F1 s/d F12. Fungsi tombol ini berbeda-beda tergantung dari program komputer yang digunakan.
4. Special Function Key Tombol ini terdiri atas tombol Ctrl, Shift, dan Alt. Tombol akan mempunyai fungsi bila ditekan secara bersamaan
dengan
tombol
lainnya.
Misalnya,
untuk
memblok menekan bersamaan tombol shift dan arrow key, untuk menggerakan kursor menekan bersamaan ctrl dan arrow key.
81
Fungsi dasar pembuatan animasi denganmenggunakan KeyboardFunction. GLUTAPI
void
APIENTRY
glutKeyboardFunc(void
(GLUTCALLBACK *func)(unsignedchar key, int x, int y));
Dalampenggunaan glutKeyboardFuncdimungkinkan untukmendeteksiinput
darikeyboard.Fungsi
ini
diletakkanpada fungsi maindari program, danparameternya adalah callbackfunction yang telah didefinisikan berupa fungsi dengan 3 parameter, seperti contoh di bawah ini. void myKeyboard(unsignedchar key, int x, int y){ if(key == 'a') glTranslatef(4,0,0); //seleksi tombol yang ditekan } void mySpecialKeyboard(int key, int x, int y){ switch(key){ case GLUT_KEY_??? : …; break; } }
Agar fungsi keyboard ini dapat dideteksi terus maka fungsi untuk animasi (update) harus telah disertakan. Untuk fungsi callback yang memanggil tombol keyboard normal/biasa adalah glutKeyboardFunc(myKeyboard);
//hanya
memanggil
fungsi myKeyboard
sedangkan untuk mendeteksi tombol-tombol keyboard yang bersifat spesial seperti tombol F1, arah panah, Home, Enter, dsb dapat menggunakan callback function glutSpecialFunc(mySpecialKeyboard); //hanya memanggil fungsi mySpecialKeyboard
82
untuk tombol-tombol spesialnya adalah sebagai berikut GLUT_KEY_F1 F1 function key GLUT_KEY_LEFT Left function key GLUT_KEY_F2 F2 function key GLUT_KEY_RIGHT Right function key GLUT_KEY_F3 F3 function key GLUT_KEY_UP Up function key GLUT_KEY_F4 F4 function key key GLUT_KEY_F5 F5 function key GLUT_KEY_DOWN Down function key GLUT_KEY_F6 F6 function key GLUT_KEY_PAGE_UP Page Up function key GLUT_KEY_F7 F7 function key key GLUT_KEY_F8 F8 function key GLUT_KEY_PAGE_DOWN Page Down GLUT_KEY_F9 F9 function key function key GLUT_KEY_F10 F10 function key GLUT_KEY_HOME Home function key GLUT_KEY_F11 F11 function key GLUT_KEY_END End function key GLUT_KEY_F12 F12 function key GLUT_KEY_INSERT Insert 0. script dasar untuk melakukan interaksi keyboard pada OpenGL glutInitWindowSize(640, 480); glutInitWindowPosition(100, 100); dan glutTimerFunc(50,timer,0); glutDisplayFunc(display);
83 glutKeyboardFunc(myKeyboard); glutSpecialFunc(mySpecialKeyboard);
CODING 1. Tekan Tombol Metode untuk menekan tombol keyboard menggunakan fungsi keyPressed yang mempunyai 3 parameter. Parameter pertama untuk kunci saat ditekan, kedua dan ketiga untuk memberikan lokasi mouse saat kunci itu ditekan. kekosongan keyPressed (unsigned arang kunci, int x, int y) { }
Setelah menuliskan kode di atas, cara untuk mengaksesnya adalah sebagai berikut : glutKeyboardFunc (keyPressed); / / Katakan GLUT untuk menggunakanmetode "keyPressed" untuk penekanan tombol
namun, ada juga kode yang menandakan bahwa jika tombol keyboard tersebut ditekan akan menjalankan aksi. Jika (tombol == 'a') { / / Jika mereka 'sebuah' tombol ditekan / / Lakukan tindakan yang terkait dengan 'a' kunci }
84 2. Tombol Up Fungsi tombol register sampai ketika tombol dilepaskan. Hal ini berguna untuk pengaturan beberapa nilai ketika kunci pertama ditekan,
dan
ingin
menjaga
nilai
itu
sampai
tombol
dilepaskan. Sekali lagi, karena hal ini ditangani oleh GLUT, kita perlu pergi dan membuat metode untuk menangani hal ini, dan hanya seperti keyPressed metode , yang satu ini akan mengambil dalam 3 parameter. Ketiga parameter yang persis sama dengan 3 dalam keyPressed metode .Tapi kita akan menyebutnya metode keyup. Jadi mari kita pergi ke depan dan membuat metode untuk ini. kekosongan keyup (unsigned arang kunci, int x, int y) { } Cara mengaksesnya : glutKeyboardUpFunc (keyup); / / Katakan GLUT untuk menggunakanmetode "keyup" sampai kunci peristiwa Untuk
menggunakan
keyup metode ,
persis
sama
dengan
menggunakan keyPressedmetode , sehingga kita dapat memanggil kode yang sama persis jika kita ingin. jika (tombol == 'a' ) { / / Jika mereka 'sebuah' kunci dirilis / / Lakukan tindakan yang terkait dengan 'a' kunci }
85
3. Kunci Buffer Langkah berikutnya adalah tentu saja , untuk melakukan beberapa penyangga utama, yang akan memungkinkan kita untuk menangani penekanan tombol beberapa proyek OpenGL. Perlu diketahui, variabel char adalah sama dengan byte dan dapat mengambil nilai integer dari 0 hingga 255. Hal ini karena variabel arang memiliki ukuran 2, ^ 8 atau 256. Hal ini memungkinkan kita untuk menangani hingga 256 tombol berbeda pada keyboard, atau set karakter ASCII seluruh. Jadi mari kita mulai dengan menciptakan sebuah array dari nilai
Boolean
yang
akan
memegang
negara-negara
kunci
kami. Benar akan ditekan, dan False akan tidak ditekan.Aku akan menyebutnya keyStates variabel karena mudah dimengerti. bool * keyStates = baru bool [256]; / / Membuat sebuah array nilai boolean panjang 256 (0-255) Untuk menetapkan posisi saat ini dalam array keyStates, pada posisi kunci saat ditekan, ke true. kekosongan keyPressed (unsigned arang kunci, int x, int y) { keyStates [key] = true ; } kekosongan keyup (unsigned arang kunci, int x, int y) { keyStates [key] = false ; }
86
4. Tombol Khusus Sementara semua di atas adalah sempurna baik untuk menggunakan penekanan tombol yang biasa, ada beberapa kunci Anda mungkin ingin menggunakan, misalnya, tombol panah, yang dapat diwakili berbeda pada beberapa sistem. Untungnya, GLUT memungkinkan kita untuk menggunakan kunci ini, asalkan kita sebut berbeda metode untuk glutKeyboardFunc. Sebaliknya, kita harus menggunakan glutSpecialFunc yang memeriksa penekanan tombol khusus. Sebagai contoh, jika kita ingin mengecek apakah panah kiri telah ditekan, kita dapat menggunakan GLUT_KEY_LEFT. Kabar terbaik adalah bahwametode yang Anda buat untuk menangani tombol
khusus
Anda,
akan
hampir
identik
dengan
glutKeyboardFunc metode Anda buat sebelumnya. Di bawah ini adalah contoh penggunaan tombol khusus. Pertama,
membuat
baru metode yang
saya
akan
menelepon
keySpecial, yang mengambil tiga parameter, semuanya menjadi nilai integer, pertama untuk tombol ditekan, dan dua detik adalah untuk posisi x dan y mouse di saat itu metode yang disebut. Dan kemudian menyebutnya metodeutama kami dalam metode bersama dengan sisa penekanan tombol kita.
1. kekosongan keySpecial ( int kunci, int x, int y) { 2.
87 3. } 1. kekosongan keySpecialUp ( int kunci, int x, int y) { 2. 3. } 4. 1. int main ( int argc, arang ** argv) { 2. ... 3. glutReshapeFunc (membentuk kembali); / / Katakan GLUT untuk menggunakan metode "membentuk kembali" untuk membentuk kembali 4. 5. glutKeyboardFunc (keyPressed); / / Katakan GLUT untuk menggunakan metode "keyPressed" untuk penekanan tombol 6. glutKeyboardUpFunc (keyup); / / Katakan GLUT untuk menggunakan metode "keyup" untuk kejadian-kejadian kunci 7. 8. glutSpecialFunc (keySpecial); / / Katakan GLUT untuk menggunakan metode "keySpecial" untuk menekan tombol khusus 9. glutSpecialUpFunc (keySpecialUp); / / Katakan GLUT untuk menggunakan metode "keySpecialUp" untuk kejadian-kejadian kunci khusus 10. 11. glutMainLoop (); / / Masukkan loop utama GLUT itu 12. } Dan kemudian untuk fungsi untuk tombol khusus, menyatakan baru metode untuk menangani sampai acara untuk kunci khusus. Jika Anda ingin untuk buffer kunci ini, Anda dapat membuat array lain sama seperti yang kami lakukan untuk buffering kunci biasa, dan mendedikasikan array ini untuk setiap tombol khusus ditekan.
88
1. bool * keySpecialStates = baru bool [246]; / / Membuat sebuah array nilai boolean panjang 256 (0-255) Setelah Anda membuat array ini, pastikan Anda menetapkan nilainilai ke benar dan palsu, seperti yang Anda lakukan dalam metode kunci
biasa,
dan
kemudian
membuat
metode
lain
untuk
mengendalikan apa yang terjadi ketika kita menekan tombol khusus kami, saya menelepon keySpecialOperations tambang, yang sudah memiliki kode untuk memeriksa apakah tombol panah kiri telah ditekan. 1. kekosongan keySpecialOperations ( batal ) { 2. jika (keySpecialStates [GLUT_KEY_LEFT]) { / / Jika tombol panah kiri telah ditekan 3. / / Lakukan operasi tombol panah kiri 4. } 5. }
Contoh Program : Source Code: #include #include void drawQuad(int x, int y){//segi4 glBegin(GL_QUADS); glColor3f(0,1,1);//warna cyan glVertex2i(0.,0.); glVertex2i(100.,0.); glVertex2i(100.,100.); glVertex2i(0.,100.); glEnd(); glFlush();
89 } void renderScene(){ glClear(GL_COLOR_BUFFER_BIT); drawQuad(30,10); glFlush(); } void myKeyboard(unsignedchar key, int x, int y) { if(key=='a')glTranslatef(-4,0,0); elseif (key=='d')glTranslatef(4,0,0); } void update(int value){ glutPostRedisplay(); glutTimerFunc(50,update,0); } void main(int argc, char **argv){ glutInit(&argc, argv); glutInitWindowPosition(100, 100); glutInitWindowSize(640, 480); glutCreateWindow("Ain Sayidani-Rahmi Wahyulianti"); gluOrtho2D(-320.0,320.0,-320.0,320.0); glutDisplayFunc(renderScene); glutKeyboardFunc(myKeyboard); glutTimerFunc(1000, update, 0); glutMainLoop(); }
Screenshot:
Program di atas menghasilkan sebuah kotak yang beregerak dengan meggunakan keyboard.
bisa
90
Adanya fungsi myKeyboard membuat kotak tersebut bisa bergerak ke kiri menggunakan huruf a dan bergerak ke kanan dengan menekan huruf d.
Objek kotak dibuat dengan menggunakan fungsi drawQuad().
Dalam penggunaan glutKeyboardFunc dimungkinkan untuk mendeteksi input dari keyboard. Fungsi ini diletakkan pada fungsi main dari program, dan parameternya adalah callback function.
Void myKeyboard() digunakan untuk mengontrol gerak objek melalui huruf-huruf yang ditekan pada keyboard.
A. KESIMPULAN Keyboard interaksi pada GLUT, adalah hal yang sangat mudah untuk menangani metode untuk menekan tombol, satu untuk ketika tombol pertama ditekan, dan satu untuk ketika tombol dilepaskan. Fungsi dasar pembuatan animasi denganmenggunakan KeyboardFunction. GLUTAPI
void
(GLUTCALLBACK
APIENTRY
glutKeyboardFunc(void
*func)(unsignedchar
key,
int
x,
int
y)); void myKeyboard(unsignedchar key, int x, int y){ if(key == 'a') glTranslatef(4,0,0); //seleksi tombol yang ditekan } void mySpecialKeyboard(int key, int x, int y){ switch(key){ case GLUT_KEY_??? : …; break; } }
Macam-macam metode pada interaksi keyboard: 1. Tekan Tombol 2. Tombol Up
91 3. Kunci Buffer 4. Tombol Khusus
INTERAKSI MOUSE PADA OPENGL A. Interaksi Manusia dengan Komputer Interaksi manusia dengan komputer adalah sebuah hubungan antara manusia dan komputer yang mempunyai karakteristik tertentu untuk mencapai suatu tujuan tertentu dengan menjalankan sebuah sistem yang bertopengkan sebuah antarmuka (interface). Yang mendasari adanya IMK adalah karena kebutuhan manusia untuk berinteraksi dengan komputer yaitu menggunakan sejumlah menu maupun teks atau juga bias menggunakan alat bantu masukan(input),yang berupa mouse ataupun keyboard.dan juga memerlukan alat bantu keluaran(output unit),yang dimana data-data tersebut dapat disimpan dalam media penyimpanan yang biasa disebut memori unit. Prinsip kerja komputer = input – proses – output. Kepada komputer diberikan data yang umumnya berupa deretan angka dan huruf. Kemudian diolah didalam komputer yang menjadi keluaran sesuai dengan kebutuhan dan keinginan manusia. Tanpa disadari manusia/use) telah berinteraksi atau berdialog dengan sebuah benda (layar monitor), yaitu dalam bentuk menekan
92 tombol berupa tombol angka dan huruf yang ada pada keyboard atau melakukan satu sentuhan kecil pada mouse. Yang kemudian hasil inputan ini akan berubah bentuk menjadi informasi atau data yang seperti diharapkan manusia dengan tertampilnya informasi baru tersebut pada layar monitor atau bahkan mesin pencetak (printer). Manusia pada umumnya tidak pernah tahu apa yang terjadi pada saat data dimasukkan ke dalam kotak cpu melalui keyboard. Manusia (user) selalu terfokus pada monitor/printer sebagai keluaran. Manusia jarang sekali menyadari proses interaksi dengan komputer. Manusia barumenyadari proses interaksi tersebut saat menemukan masalah dan tidak menemukan solusi pemecahannya. Biasanya manusia menyalahkan antarmuka yang kurang inovatif, kurang menarik, kurang komunikatif. Interaksi bisa dikatakan dialog antara user dengan komputer.
B. Mouse Mouse komputer adalah perangkat komputer yang berfungsi untuk menggerakkan pointer atau menunjuk perintah pada layar monitor. Pada mouse terdapat klik-kiri dan klik- kanan. Klik-kiri 1X berfungsi untuk memilih perintah, menu, atau ikon dan klik-kiri 2X berfungsi untuk membuka perintah, menu, atau ikon yang dituju. Sedangkan klik-kanan berfungsi untuk membuka perintah-perintah lain sebuah menu. Selain itu, di tengah-tengah mouse juga terdapat sebuah roda yang dikenal dengan nama Scroll Mouse yang digunakan untuk menggulir tampilan layar dengan cepat.
93 Berkaitan dengan penggunaan mouse, terdapat sejumlah istilah seperti mouse pointer, click, double click dan drag. Mouse
pointer atau penunjuk mouse adalah tanda yang
menyatakan posisi mouse pada layar. Umumnya berbentuk tanda panah akan tetapi bisa diubah sesuai keinginan. Klik berarti menekan salah satu tombol yang ada di mouse dalam
waktu singkat, kemudian melepaskan kembalik. Perlu diketahui bahwa jika Anda menjumpai istilah klik tanpa disertai informasi tombol yang harus diklik seperti tombol klik kanan dan klik kiri, maka yang dimaksudkan adalah mengklik tombol kiri. Klik ganda atau double klik menyatakan tindakan mengklik dan
melepaskan kembalik tombol kiri mouse dua kali secara beruntun dalam waktu yang singkat. Penggunaan klik dan tarik atau click and drag umumnya
bermanfaat untuk memperlancar pemakaian program aplikasi. Salah satu contoh pemanfaatannya adalah untuk memindahkan gambar dalam suatu dokumen ke lkasi lain dalam dokumen tersebut. 1) JENIS MOUSE Mouse Mekanis
94 Pada mouse jenis ini terdapat sebuah bola di bagian bawahnya untuk mendeteksi gerakan pointer. Dengan mouse ini, pergerakan pointernya lambat dan kadang tersendat-sendat.
Mouse Optical
Mouse ini merupakan pengembangan dari Mouse mekanis dimana pada jenis ini sudah tidak menggunakan bola lagi tetapi menggunakan lampu LED sebagai sensor gerakan pointer. Keunggulan mouse jenis ini jika dibandingkan dengan jenis Wheel Mouse adalah lebih tahan lama, tidak mudah kotor, pointer berjalan dengan lancar dan cepat. Mouse Wireless
Mouse jenis ini merupakan pengembangan dari Mouse optikyang sudah tidak menggunakan kabel. Kelebihan mouse ini adalah bisa digunakan dari jarak jauh karena sudah memakai teknologi infra merah, bluetooth atau sinyal radio.
95
BAGIAN-BAGIAN MOUSE Bagian-bagian pada Mouse Ball
Bagian-bagiannya sebagai berikut [sesuai dengan nomor pada gambar di atas] : 1. Tombol Klik kiri mouse 2. Klik tengah tombol 3. Tombol klik kanan mouse 4. Kabel koneksi ke PS/2 socket di komputer 5. IC (analog) mouse untuk menggerakkan mouse dan di lanjutkan ke sinyal digital untuk dikirim ke komputer 6. X-axis pendeteksi ketika mouse akan di geser ke kanan dan kiri 7. Y-axis pendeteksi ketika mouse akan di geser ke depan atau belakang
96 8. Rubbur ball, bola yang akan menerima geseran dan menghasilkan sudut x dan y yang dikirimkan pada pendeteksi axisElectrolytic capacitor 9. Resistors
Bagian-bagian Mouse Optical
Bagian-bagian dari Mouse Optical diantaranya sebagai berikut: 1. LED (obscured by wheel). 2. Pendeteksi ketika Anda menekan tombol kiri mouse. Ada saklar yang sama di sebelah kanan untuk mendeteksi tombol kanan mouse dan roda klik seluruh dipasang pada tombol lain sehingga berfungsi sebagai tombol 3. Potentiometer (variable resistor) seberapa mengukur banyak memutar bola tersebut 4. LED 5. Resistor
97 6. Mica capacitor 7. Electrolytic capacitor 8. Prism bends light from LED through 90° down onto desk 9. Scroll wheel. CHIP yang mendeteksi peneriman dari LED sehingga di terjemahkan oleh IC tersebut 10. Resistors 11. USB kabel untuk terhubung ke komputer 12. LED agar bersinar di atas meja
C. Pemanfaatan Mouse untuk Interaksi dengan OpenGL 1. Fungsi dasar pembuatan interaksi dengan menggunakan MouseFunction GLUTAPI void APIENTRY glutMouseFunc(void (GLUTCALLBACK *func)(int button, int state, int x, int y));
Paramater func adalah fungsi yang akan ditangani dengan event klik mouse. GLUTAPI void APIENTRY glutMotionFunc(void *func(int x, int y));
Fungsi di atas adalah fungsi pelengkap dari fungsi interaksi mouse untuk mendeteksi gerakan mouse.
2. Inisialisasi dalam penggunaan MouseFunction void mouse(int button, int state, int x,int y){ if(button==GLUT_LEFT_BUTTON && state==GLUT_DOWN) drawDot(x,480-y); if(button==GLUT_RIGHT_BUTTON && state==GLUT_DOWN) drawDot2(x,480-y);
98 if(button==GLUT_MIDDLE_BUTTON && state==GLUT_DOWN) drawDot3(x,480-y); } void motion(int x,int y){ }
Syntax GLUT_LEFT_BUTTON
Kegunaan untuk inisialisasi button mouse kiri.
GLUT_RIGHT_BUTTON
untuk inisialisasi button mouse kanan.
GLUT_MIDDLE_BUTTON
untuk inisialisasi button mouse tengah.
GLUT_DOWN
untuk inisialisasi ketika tombol mouse ditekan.
GLUT_UP
untuk inisialisasi ketika tombol mouse dilepaskan.
Pada fungsi main program perlu menambahkan fungsi untuk callback fungsi MouseFunction. glutMouseFunc(mouse); glutMotionFunc(motion);
99 CONTOH PROGRAM #include #include #include float x = 0, y = 0, z = 0; int w = 480, h = 480; void drawQuad() { glBegin(GL_QUADS); glVertex2i(0,0); glVertex2i(0,40); glVertex2i(40,40); glVertex2i(40,0); glEnd(); } void timer(int value){ glutPostRedisplay(); glutTimerFunc(50,timer,0); } void mouse(int button, int state, int xmouse, int ymouse){ if(button==GLUT_LEFT_BUTTON && state==GLUT_DOWN){ x = xmouse-(w/2); y = (h/2) - ymouse; } if(button==GLUT_MIDDLE_BUTTON && state==GLUT_DOWN){ glScalef(1.1,1.1,0); } if(button==GLUT_RIGHT_BUTTON && state==GLUT_DOWN){ glScalef(2.0,2.0,0); } if(button==GLUT_RIGHT_BUTTON && state==GLUT_UP){ glScalef(0.5,0.5,0);
100 } } void motionku(int x, int y) { printf("posisi pointer mouse (%d,%d)\n", x,y); } void renderScene(void){ glClear(GL_COLOR_BUFFER_BIT); glPushMatrix(); glTranslatef(x,y,z); drawQuad(); glPopMatrix(); glFlush(); } void main(int argc, char **argv){ glutInit(&argc, argv); glutInitDisplayMode(GLUT_DEPTH | GLUT_SINGLE | GLUT_RGBA); glutInitWindowPosition(100,100); glutInitWindowSize(w,h); glutCreateWindow("indra&rachmat"); //glClearColor(1,1,1,0); gluOrtho2D(-100, 100, -100, 100); glutDisplayFunc(renderScene); glutTimerFunc(50, timer, 0); glutMouseFunc(mouse); glutMotionFunc(motionku); glutMainLoop(); }
Output
101
KESIMPULAN Interaksi manusia dengan komputer adalah sebuah hubungan antara manusia dan komputer yang mempunyai karakteristik tertentu untuk mencapai suatu tujuan tertentu dengan menjalankan sebuah sistem yang bertopengkan sebuah antarmuka (interface). Mouse komputer adalah perangkat komputer yang berfungsi untuk menggerakkan pointer atau menunjuk perintah pada layar monitor. Jenis-jenis mouse: Mouse Mekanis Mouse Optical Mouse Wireless
102 Paramater func adalah fungsi yang akan ditangani dengan event klik mouse. Berikut syntaxnya: GLUTAPI void APIENTRY glutMouseFunc(void (GLUTCALLBACK *func)(int button, int state, int x, int y));
GLUTAPI void APIENTRY glutMotionFunc(void *func(int x, int y));
Fungsi di atas adalah fungsi pelengkap dari fungsi interaksi mouse untuk mendeteksi gerakan mouse.
103
BAB 7 ANIMASI OBJEK 2D Animasi berasal dari kata dalam bahasa inggris yaitu animate yang artinya menghidupkan, memberi jiwa dan mengerakan benda mati. Animasi merupakan proses membuat objek yang asalnya suatu benda mati, kemudian secara berurutan disusun dalam posisi yang berbeda seolah menjadi hidup. Ditemukannya prinsip dasar animasi adalah dari karakter mata manusia yaitu : persistance of vision (pola penglihatan yang teratur). Paul Roget, Joseph Plateau dan Pierre Desvigenes, melalui peralatan optik yang mereka ciptakan, berhasil membuktikan bahwa mata manusia cenderung menangkap urutan gambar-gambar pada tenggang waktu tertentu sebagai sebuah pola.Animasi secara umum bisa didefinisikan sebagai “suatu sequence gambar yang ditampilkan pada tenggang waktu (timeline) tertentu sehingga tercipta sebuah ilusi gambar bergerak”. Pengertian animasi pada dasarnya adalah menggerakkan objek agar tampak lebih dinamis. Ada 4 jenis animasi menurut Hofstetter (2001, p26): 1. Frame Animation : Suatu animasi yang dibuat dengan mengubah objek pada setiap frame. Objek-objek tersebut nantinya akan tampak pada lokasi-lokasi yang berbeda pada layar.
104 2. Vector Animation : Suatu animasi yang dibuat dengan mengubah bentuk suatu objek. 3. Computational Animation : Suatu animasi yang dibuat dengan memindahkan objek berdasarkan koordinat x dan y. Koordinat x untuk posisi horizontal dan posisi y untuk posisi vertical. 4. Morphing : Peralihan satu bentuk objek ke bentuk objek lainnya dengan memanipulasi lebih dari satu frame sehingga nantinya akan dihasilkan keseluruhan gerakan yang sangat lembut untuk menampilan perubahan satu sampai perubahan bentuk lainnya.
Animasi pada awalnya bisa dikatakan sangat sederhana, namun sekarang telah berkembang dan dibedakan menjadi 3 teknologi , yaitu: 1. Animasi dua dimensi (2D), Sering disebut film kartun. Kartun sendiri berasal dari kata cartoon, artinya gambar yang lucu. Memang film kartun ini kebanyakan film yang lucu misalnya :
Looney Tunes
Scooby Doo
Doraemon Legenda
Raja Matahari,
The Lion King
Brother Bear
105
2. Animasi tiga dimensi (3D), Finding Nemo, inilah contoh film animasi yang disebut animasi 3D atau computer generated image (CGI). CGI menghasilkan film animasi yang gambarnya benar-benar hidup dan tiga dimensi, tak sekedar datar. Salah satu studio CGI yang terbesar adalah Pixar yang berlokasi di Emeryville, California. Selain Finding Nemo, Pixar juga memproduksi Monsters.Inc, Toy Story, Toy Story 2, dan A Bugs Life. Toy Story ini merupakan film animasi panjang pertama yang menggunakan 100 persen animasi computer.
3. Animasi clay, Film animasi clay pertama diliris bulan Februari 1908 berjudul A Sculptor’s Welsh Rarebit Nightmare. Kalau masih susah membayangkan seperti apa animasi clay ini, tonton saja film Bob the Builder di TV, Wallace and Gromit, atau Chiken Run.Tokoh-tokoh dalam animasi clay dibuat dengan memakai rangka khusus untuk kerangka tubuhnya. Lalu, kerangka ini ditutup dengan plasticine sesuai bentuk tokoh yang ingin dibuat. Bagian-bagian tubuh kerangka ini, seperti kepala, tangan, kaki, bisa dilepas dan dipasang lagi.
106
Animasi Objek 2D OpenGL Dalam animasi objek OpenGL, dikenal istilah transformasi. Transformasi merupakan suatu metode untuk mengubah lokasi suatu titik pembentukobjek, sehingga objek tersebut mengalami perubahan. Perubahan objek dengan mengubahkoordinat dan ukuran suatu objek disebut dengan transformasi geometri. Dalam Transformasi dasar yang akan dibahas meliputi translasi, skala, dan rotasi. Pada grafika komputer, sistem koordinat suatu objek dapat di transformasi.
Transformasi
ini
memungkinkan
terjadinya
perpindahan posisi suatu objek tanpa harus membuat model objek yang baru. Jenis-jenis transformasi yang sering digunakan pada grafika komputer dibagi menjadi 3 macam, yaitu translasi, rotasi, dan skalasi.
Translasi (Translation) Translasi merupakan bentuk transformasi yang memindahkan posisi suatu objek, baik pada sumbu x, sumbu y, atau sumbu z. Fungsi yang digunakan untuk melakukan translasi adalah: glTranslatef(Tx, Ty, Tz) glTranslated(Tx, Ty, Tz) Tx digunakan untuk menentukan arah dan seberapa jauh suatu benda akan dipindahkan berdasarkan sumbu x. Parameter Ty digunakan untuk menentukan arah dan seberapa jauh suatu benda akan dipindahkan berdasarkan sumbu y. Sedangkan parameter Tz digunakan untuk menentukan arah dan seberapa
107 jauh suatu benda akan dipindahkan berdasarkan sumbu z (berlaku pada model 3D).
Contoh: Diketahui titik-titik pembentuk objek segitiga yaiu A(10,10), B(30,10), C(10,30) dengan transformasi vector (10,20) lakukan trnslasi terhadap objek segitiga tersebut:
Titik A
x’A = xA + tx
y’A = yA + ty
= 10 + 10
= 10 + 20
= 20
= 30
A’(20,30)
Titik B
x’B = xB + tx
y’B = yB + ty
= 30 + 10
= 10 + 10
= 40
= 20
B’(40,20)
Titik C
x’C = xC + tx
y’C = yC + ty
= 10 + 10
= 30 + 20
= 20
= 50
108
Rotasi (Rotation) Rotasi merupakan bentuk transformasi yang digunakan untuk memutar posisi suatu benda. Fungsi yang digunakan untuk melakukan rotasi ialah: glRotatef(θ, Rx, Ry, Rz) glRotated(θ, Rx, Ry, Rz) Parameter yang dibutuhkan pada fungsi tersebut ada 4 macam, yaitu parameter θ untuk besar sudut putaran, parameter Rx untuk putaran berdasarkan sumbu x, parameter Ry untuk putaran berdasarkan sumbu y, dan parameter Rz untuk putaran berdasarkan sumbu z. Jika parameter θ bernilai postif, maka objek akan diputar berlawanan arah jarum jam. Sedangkan jika parameter θ bernilai negatif, maka objek akan diputar searah jarum jam. Contoh : Diketahui objek segitiga dengan titik A(10,10), B(30,10), C(10,30) di skala denganscaling factor (3,2).
Titik A
x’A = xA * tx
y’A = yA * ty
= 10 * 3
= 10 * 2
= 30
= 20
A’(30,20)
Titik B
x’B = xB * tx
y’B = yB * ty
= 30 * 3
= 10 * 2
= 90
= 20
109 B’(90,20)
Titik C
x’C = xC * tx
y’C = yC * ty
= 10 * 3
= 30 * 2
= 30
= 60
C’(30,60)
Skalasi (Scaling) Skalasi merupakan bentuk transformasi yang dapat mengubah ukuran(besar-kecil) suatu objek. Fungsi yang digunakan untuk melakukan skalasi ialah: glScalef(Sx, Sy, Sz) glScaled(Sx, Sy, Sz) Perubahan ukuran suatu objek diperoleh dengan mengalikan semua titik atau atau vertex pada objek dengan faktor skala pada masing-masing sumbu (parameter Sx untuk sumbu x, Sy untuk sumbu y, dan Sz untuk sumbu z).
Contoh: Diketahui titik-titik pembentuk objek segitiga yaiu A(10,10), B(30,10), C(10,30) dengan sudut rotasi 300 terhadap titik pusat koordinat cartesian (10,10).
Titik A
X’A = Xp + (XA – Xp)Cos 300 – (YA- YP)Sin 300 = 10 + (10 -10) * 0.9 – (10-10) * 0.5 = 10
110 Y’A = YP + (XA – XP)Sin 300 + (YA – YP)Cos 300 = 10 + (10 – 10) * 0.5 + (10 – 10) * 0.9 = 10 A’(10,10)
Titik B
X’B = Xp + (XA – Xp)Cos 300 – (YA- YP)Sin 300 = 10 + (30 -10) * 0.9 – (10-10) * 0.5 = 28 Y’B = YP + (XA – XP)Sin 300 + (YA – YP)Cos 300 = 10 + (30 – 10) * 0.5 + (10 – 10) * 0.9 = 20 B’(28,20)
Titik C
X’C = Xp + (XA – Xp)Cos 300 – (YA- YP)Sin 300 = 10 + (10 -10) * 0.9 – (30-10) * 0.5 =0 Y’C = YP + (XA – XP)Sin 300 + (YA – YP)Cos 300 = 10 + (10 – 10) * 0.5 + (30 – 10) * 0.9 = 28 C’(0,28)
Refleksi Refleksi adalah transformasi yang membuat mirror (pencerminan) dari image suatu objek. Image mirror untuk refleksi 2D dibuat relatif terhadap sumbu dari refleksi dengan
111 memutar 180o terhadap refleksi. Sumbu refleksi dapat dipilih pada bidang x,y. Refleksi terhadap garis y=0, yaitu sumbu x dinyatakan dengan matriks. 1 0 0 ] 0 −1 0 Transformasi membuat nilai x sama tetapi membalikan nilai y [
berlawanan dengan posisi koordinat. Langkah:
Objek diangkat
Putar 180o terhadap sumbu x dalam 3D
Letakkan pada bidang x,y dengan posisi berlawanan
Refleksi terhadap sumbu y membalikan koordinat dengan nilai y tetap. [
−1 0 0 1
0 ] 0
Refleksi terhadap sumbu x dan y sekaligus dilakukan dengan refleksi pada sumbu x terlebih dahulu, hasilnya kemudia direfleksi terhadap sumbu y. Transformasi ini dinyatakan dengan: [
−1 0 0 ] 0 −1 0
Refleksi ini sama dengan rotasi 180o pada bidang xy dengan koordinat menggunakan titik pusat koordinat sebagai pivot point. Refleksi suatu objek terhadap garis y=x dinyatakan dengan bentuk matriks 0 1 0 ] 1 0 0 Matriks dapat diturunkan dengan menggabungkan suatu sekuen [
rotasi dari sumbu koordinat merefleksi matriks. Pertama-tama
112 dilakukan rotasi searah jarum jam dengan sudut 45o yang memutar garis y=x terhadap sumbu x. Kemudian objek direfleksi terhadap sumbu y, setelah itu objek dan garis y=x dirotasi kembali ke arah posisi semula berlawanan arah dengan jarum jam dengan sudut rotasi 90o. Untuk mendapatkan refleksi terhadap garis y=-x dapat dilakukan dengan tahap:
Rotasi 45o searah jarum jam
Refleksi terhadap axis y
Rotasi 90o berlawanan arah dengan jarum jam
Dinyatakan dengan bentuk matriks 0 −1 0 ] −1 0 0 Refleksi terhadap garis y=mx+b pada bidang xy merupakan [
kombinasi transformasi translasi – rotasi – refleksi .
Lakukan translasi mencapai titik perpotongan koordinat
Rotasi ke salah satu sumbu
Refleksi objek menurut sumbu tersebut
Shear Shear adalah bentuk transformasi yang membuat distorsi dari bentuk suatu objek, seperti menggeser sisi tertentu. Terdapat dua macam shear yaitu shear terhadap sumbu x dan shear terhadap sumbu y.
Shear terhadap sumbu x
113 [
1 𝑠ℎ𝑥 0 −1
0 ] 0
Dengan koordinat transformasi x’= x + shx.y
y’=y
parameter shx dinyatakan dengan sembarang bilangan. Posisi kemudian digeser menurut arah horizontal.
Shear terhadap sumbu y [
1 0 𝑠ℎ𝑦 1
0 ] 0
Dengan koordinat transformasi x’=x y’= shy.x+y parameter shy dinyatakan dengan sembaran bilangan. Posisi koordinat kemudian menurut arah vertikal.
Timer Function Contoh Program 1. Berikut merupakan contoh program yang menggunakan fungsi drawQuad, serta transformasi terhadap sumbu ynegatif. #include #include int y = 0; void drawQuad(){ glBegin(GL_QUADS); glColor3d(0,0.6,0.9); glVertex2f(-50,50); glColor3d(0.5,0.7,0.3); glVertex2f(-50,-50); glColor3d(0.9,0.2,0.6); glVertex2f(50,-50); glColor3d(0.5,0.8,0.8); glVertex2f(50,50);
114 glEnd(); } void timer(int value){ if (y
View more...
Comments