3.
1 Transformasi window to viewport
Objek yang akan digambar pada layar biasanya memiliki ukuran yang jauh lebih besar dibanding
ukuran layar, sehingga perlu dilakukan pemetaan/transformasi yang memungkinkan objek
tersebut bisa digambar pada layar. Meskipun demikian, objek seringkali terlalu rumit untuk
ditampilkan pada layar dengan koordinat yang sangat terbatas. Sehingga biasanya kita memilih
bagian tertentu dari objek untuk ditampilkan pada layar. Didalam memilih objek yang akan
ditampilkan biasanya dibatasi oleh sebuah kotak yang disebut dengan jendela (window).
Dalam praktek kita bisa menggunakan seluruh atau sebagian lebar layar untuk menmpilkan objek
yang berada pada sebuah jendela. Daerah layar yang dipilih untuk menampilkan objek yang
dimaksud disebut viewport. Dalam keadaan normal, viewport akan meliputi seluruh layar lebar.
Meskipun demikian, kita bisa memilih bagian tertentu dari layar untuk dijadikan sebuah
viewport.
3.2 Manipulasi Gambar/Transformasi
Sejumlah objek seringkali mempunyai sifat simetri. Sehingga untuk menggambar seluruh objek,
cukup dilaksanakan dengan melakukan manipulasi terhadap objek yang sudah ada, misalnya
dengan pencerminan, pergeseran, atau pemutaran objek yang sudah digambar terlebih dahulu.
Kita akan mempelajari cara mentransformasikan objek grafis khususnya objek grafis 2D sebagai
salah satu cara untuk memanipulasi objek grafis dan sistem koordinat yang dipakai dengan cara
yang lebih terorganisir dan efisien. Salah satu contoh penting untuk diketahui adalah pemakaian
transformasi jendela ke viewport.
Ada dua cara untuk melakukan transformasi, yaitu transformasi objek dan transformasi kordinat.
Pada transformasi objek semua titik pada sembarang objek akan dirubah sesuai dengan aturan
tertentu sementara kordinatnya tetap. Pada transformasi sistem koordinat, objek tetap tetapi
karena sistem koordinatnya diganti maka kedudukan objek harus disesuaikan dengan kedudukan
sistem kordinat yangbaru.
Jenis-jenis transformasi:
1. Translasi
Sembarang titik pada bidang xy bisa digeser ke sembarang tempat dengan menambahkan besaran
pada absis x dan ordinat y. Translasi adalah transformasi dengan bentuk tetap memindahkan
objek apa adanya. Dengan menggunakan persamaan Q = PM + tr, maka hasil pergeseran bisa
dinyatakan sbb:
(Qx, Qy) = (Px +trx, Py+try)
dimana trx adalah vektor translasi menurut sumbu x sedang try adalah vektor translasi menurut
sumbu y, dan matrik M bisa dikatakan sebagai matrix identitas.
Sembarang objek bisa digeser ke posisinya yang baru dengan mengoperasikan persamaan diatas
pada setiap titik dari objek tersebut. Hal ini karena setiap garis dari objek tersebut terdiri dari
titik-titik yang jumlahnya tak terbatas, maka proses penggeseran bisa berlangsung sangat lama.
Tetapi pada kenyataannya kita cukup menggeser dua titik ujungnya saja dan kemudian
menggandeng dua titik tersebut untuk membentuk garis hasil pergeseran.
Contoh translasi:
Untuk menggambarkan translasi objek yang berupa garis dengan koordinat A(10,10), B(30,10)
dengan vektor translasi (10,20)
Titik A Qx=Px +trx =10 + 10 =20
Qy=Py + try =10+20=30
Hasil translasi A = (20, 30)
Titik B Qx=Px + trx = 30+10 = 40
Qy=Py + try = 10+20 =30
Hasil translasi B = (40, 30)
2. Rotasi
Kita bisa memutar objek searah dengan arah perputaran jarum jam(dinyatakan dengan sudut
negatif) atau berlawanan arah dengan arah jarum jam(dinyatakan sebagai sudut positif).
Dengan menganggap bahwa besarnya sudut putar adalah sama dengan , maka posisi sebuah titik
yang baru adalah:
Qx = Pxcos( ) - Pysin( )
Qy = Pxsin( ) + Pycos( )
Dengan menggunakan notasi matrix, maka besaran M bisa dikatakan sbb:
M = cos(0) sin(0)-sin(0) cos(0)
3. Skala
Penskalaan adalah proses untuk memperbesar atau memperkecil suatu gambar. Dengan faktor
absolut yang lebih besar dari 1, akan diperoleh gambar yang lebih besar dan semakin menjauh
dari titik(0,0). Sebaliknya dengan faktor skala yang mempunyai nilai absolut lebih kecill dari 1,
akan diperoleh gambar yang lebih kecil dan mendekat ke titik (0,0).
Dengan menggunakan persamaan Q=PM+tr, maka hasil penggeseran bisa dinyatakan sebagai:
(Qx, Qy)=(SxPx, SyPy)
Dengan Sx adalah faktor skala ke arah mendatar dan Sy adalah faktor skala arah tegak dan ofset
vektor tr bernilainol. Dengan menggunakan notasi matrix, maka matrixM bisa dinyatakan sbb:
M= (sx 0)
(0 sy)
3.3 PROGRAM TRANSFORMASI
Dengan memakai delphi, Buatlah program dengan tampilan seperti dibawah ini. Bila program
dijalankan, ada dua pilihan:
Jenis transformasi Memutar
Jika memilih transformasi memutar kita disuruh menginputkan besar sudut yang diminta dan
kemudian inputkan x1, y1, x2, y2 lalu klik gambar maka akan tampil gambar pada kotak
paintbox dan klik transformasi maka gambar akan memutar sesuai sudut yang diisi. Dan gambar
asli tetap nampak.
Jenis transformasi Perbesar/perkecil
Jika memilih transformasi perbesar/perkecil kita disuruh menginputkan besar skalanya dan
kemudian inputkan x1, y1, x2, y2 lalu klik gambar maka akan tampil gambar pada kotak
paintbox dan klik transformasi maka gambar akan tampil sesuai skala yang diisi.
Programnya adalah sbb:
15 November 2008
Primitif Grafika
Posted by Falley under Grafkomp, ILKOMP | Tags: Grafkomp, ILKOMP, Primitif Grafika, TI |
Leave a Comment
2.1 ELEMEN GAMBAR UNTUK MENCIPTAKAN GAMBAR DALAM KOMPUTER
Penghasilan citra pada grafika komputer menggunakan primitif grafik dasar. Primitif ini
memudahkan untuk merender (menggambar pada layar monitor) sebagaimana penggunaan
persamaan geometrik sederhana.
Contoh primitif grafik dasar (Gambar 2.1) adalah :
o Titik
o Garis, Segiempat
o Kurva, Lingkaran, ellipse, kurva bezier, kurva lainnya
o Fill area
o Text Objek kompleks dapat dibuat dengan kombinasi
dari primitif ini. Adapun contoh grafik primitif yang lain adalah :
o Poligaris yaitu urutan garis lurus yang saling terhubung.
o Teks adalah bentuk bahasa tulisan dengan simbol-simbol tertentu. Teks merupakan kumpulan
lebih dari dua karakter.
o Citra raster adalah gambar yang dibuat dengan piksel yang membedakan bayangan dan
warna. Citra raster disimpan dalam komputer sebagai larik bernilai numerik. Larik tersebut
dikenal sebagai piksel map atau bitmap. Ada tiga cara untuk menghasilkan citra grafik yaitu
Citra didisain dengan tangan, Citra yang didapat dari perhitungan dan Citra yang discan.
Pemaparan citra raster dinyatakan oleh piksel dengan video displays (Cathod-ray Tube CRT),
flat panel dispalys (LCD), hardcopy (printer laser, dot matrix printers, ink-jet printers). Contoh
proses pemaparan permukaan adalah citra yang ditangkap lalu disimpan di frame buffer,
kemudian digunakan untuk mewarnai sebuah titik pada permukaan pemapar. Selanjutnya proses
scan di CRT. Frame buffer adalah matriks 2 dimensi yang mewakili piksel pada pemapar.
Ukuran matriks harus cukup untuk menyimpan kedalam warna pemapar untuk semua piksel.
Sebagai contoh pemapar (monitor) berresolusi 1280 x 1024 mempunya kedalaman warna 24 bit
(~16 juta warna) membutuhkan ruang simpan sekitar 4 Mb.
o Piksel dan Bitmap. Jumlah bit yang digunakan untuk mewakili warna/bayangan dari masin-
masing piksel (picture element = pixel). 4 bit/piksel = 24 = 16 level abu-abu
2.2 INPUT PRIMITIF GRAFIK DAN PIRANTINYA
Sebagaimana banyak piranti dan cara untuk pemaparan output grafika komputer, demikian pula
untuk piranti inputnya, yaitu :
o Keyboards
o Tombol
o Mouse
o Graphics tablets
o Joysticks dan trackballs
o Knobs
o Space balls dan data gloves
Masing-masing input ini mempunyai cara masing-masing untuk mengirimkan input ke
komputer. Input ini diinterpretasikan oleh aplikasi grafika komputer dan dipresentasikan ke
pengguna melalui layar monitor. Data yang diinputkan disebut primitif input.
Beberapa primitif input diantaranya sebagai berikut :
o Titik
o Strings (keyboards, suara)
o Pilihan (tombol, layar sentuh)
o Valuators (analogue dial)
o Locator (mouse)
o Ambil (pemilihan sebagian citra, mouse, lightpen)
2.3 PEMROGRAMAN GRAFIKA KOMPUTER
Ada tiga komponen untuk kerangka kerja aplikasi grafika komputer, yaitu :
o Model aplikasi
o Program aplikasi
o Sistem grafik
Sekarang telah banyak beredar di pasaran aplikasi pengembang cepat (Rapid Development
Applications / RAD) seperti Delphi, Borland C++, Visual C++ dan Visual Basic. RAD ini
memudahkan dalam pembuatan antarmuka, form, tombol, dan lain-lain sehingga dapat
membantu percepatan dalam pembuatan program aplikasi grafik karena kode yang kompleks
untuk pembuatan antarmuka, form, tombol, dan lain-lain sudah tidak perlu dibuat lagi. RAD juga
langsung memudahkan pemrograman Windows.
2.4 TRANSFORMASI
Menurut Suyoto (2003), transformasi adalah memindahkan objek tanpa merusak bentuk. Contoh
transforamsi adalah transisi, penskalaan, putaran/rotasi, balikan, shearing dan gabungan.
Tujuan transformasi adalah
o Merubah atau menyesuaikan komposisi pemandangan
o Memudahkan membuat objek yang simetris
o Melihat objek dari sudut pandang yang berbeda
o Memindahkan satu atau beberapa objek dari satu tempat ke tempat laein. Ini biasa dipakai
untuk animasi computer
Untuk dapat menggunakan transformasi dengan baik maka diperlukan pengetahuan operasi
matrisk dan vector
Operasi matriks:
o Penambahan dan pengurangan
o Perkalian
o Determianan
o Transpos
o Kebalikan (inverse)
Operasi vektor
o Penambahan dan pengurangan
o Perkalian titik (dot product)
o Perkalian silang (cross product)
2.5 OpenGL
OpenGL adalah suatu spefikasi grafik yang low-level yang menyediakan fungsi untuk
pembuatan grafik primitif termasuk titik, garis, dan lingkaran. OpenGL digunakan untuk
mendefinisikan suatu objek, baik objek 2 dimensi maupun objek 3 dimensi. OpenGL juga
merupakan suatu antarmuka pemrograman aplikasi (application programming interface (API)
yang tidak tergantung pada piranti dan platform yang digunakan, sehingga OpenGL dapat
berjalan pada sistem operasi Windows, UNIX dan sistem operasi lainnya. OpenGL pada awalnya
didesain untuk digunakan pada bahasa pemrograman C/C++, namun dalam perkembangannya
OpenGL dapat juga digunakan dalam bahasa pemrograman yang lain seperti Java, Tcl, Ada,
Visual Basic, Delphi, maupun Fortran. Namun OpenGL di-package secara berbeda-beda sesuai
dengan bahasa pemrograman yang digunakan. Oleh karena itu, package OpenGL tersebut dapat
di-download pada situs [Link] sesuai dengan bahasa pemrograman yang akan
digunakan.
Selain OpenGL ada juga tools/library grafik yang dapat dipergunakan yaitu DirectX. Namun
tools ini hanya dapat dipergunakan pada Microsoft Windows. Tabel 2.1 menunjukkan
perbandingan antara OpenGL dengan DirectX. Perbandingan ini didasarkan pada buku “OpenGL
Game Programming”, namun ada beberapa feature yang mungkin sudah ditambahkan pada
DirectX versi terbaru.
Masing-masing
perintah atau fungsi dalam OpenGL mempunyai struktur dan format yang sama. Tabel 2.2
menunjukkan beberapa contoh perintah yang biasa digunakan pada OpenGL.
2.6 The OpenGL Utility Toolkit (GLUT)
GLUT dapat menyederhanakan implementasi program dengan menggunakan OpenGL. GLUT
didesain secara serdehana untuk merender sebuah program yang dibuat dengan OpenGL. Versi
GLUT yang ada pada saat ini adalah 3.7.6. GLUT juga mendukung fungsi-fungsi, antara lain:
o Mutiplewindows dalam render window OpenGL.
o Memproses kejadian Callback.
o Dapat menerima reaksi dari input (antara lain mouse dan keyboard).
o Mempermudah cascading fasilitas menu pop-up.
o Mendukung bitmap dan stroke fonts.
o Manajemen windows.