GRAPHICS
LECTURE NOTES
APRI SANDRICHA
(50419955)
INTRODUCTION TO GRAPHICS
• Raster Displays
• Basic Line Drawing
R A S T E R D I S P L AY S
Raster adalah jenis gambar digital yang paling umum, karena akrab di kehidupan sehari-hari, yaitu: foto digital.
Raster adalah jenis gambar digital yang merepresentasikan gambar sebagai susunan titik-titik atau matriks. Tiap titik disebut pixel sebagai
elemen terkecil yang menyusun gambar. Pada gambar hitam-putih, pixel hanya bisa berwarna hitam atau putih. Sedangkan pada gambar
berwarna, tiap-tiap pixel memiliki warna. Kira-kira seperti ini:
R A S T E R D I S P L AY S
Jadi file gambar disimpan sebagai data matriks. Makin besar gambarnya, makin besar grid matriksnya. Otomatis
•makin
banyak data yang disimpan dan makin besar ukuran filenya. Jadi file gambar dengan ukuran 18 megapixel,
berukuran lebih besar dari file gambar berukuran 5 megapixel. Karena dimensinya berbeda.
Konvensi dalam catatan ini akan mengikuti OpenGL, menempatkan asal di kiri bawah sudut, dengan piksel itu
berada di lokasi (0, 0). Ketahuilah bahwa menempatkan asal di kiri atas adalah konvensi umum lainnya.
Salah satu dari intensitas atau warna dikaitkan dengan setiap piksel, di mana N adalah jumlah bit per piksel. Skala
abu-abu biasanya memiliki satu byte per piksel, untuk = 256 intensitas. Warna sering membutuhkan satu byte per
saluran, dengan tiga saluran warna per piksel: merah, hijau, dan biru.
R A S T E R D I S P L AY S
Data warna disimpan dalam buffer bingkai. Ini kadang-kadang disebut peta gambar atau bitmap.
Operasi primitif:
• setpixel(x, y, warna)
Mengatur piksel pada posisi (x, y) ke warna yang diberikan.
• getpixel(x, y)
Mendapat warna pada piksel pada posisi (x, y)
Konversi pindaian adalah proses mengubah objek dasar tingkat rendah menjadi objek yang sesuai representasi peta piksel. Ini sering
merupakan perkiraan ke objek, karena buffer bingkai adalah a kisi diskrit
B A S I C L I N E D R AW I N G
Atur warna piksel untuk mendekati tampilan garis dari (x0, y0) hingga (x1, y1). Harus
•• "lurus"
dan melewati titik akhir.
• independen dari urutan titik.
• cerah seragam, tidak bergantung pada kemiringan.
Persamaan eksplisit untuk sebuah garis adalah y = mx + b
Diberikan dua titik (x0, y0) dan (x1, y1) yang terletak pada suatu garis, kita dapat menyelesaikan m dan b untuk
garis. Pertimbangkan y0 = mx0 + b dan y1 = mx1 + b.
Kurangi y0 dari y1 untuk menyelesaikan m = dan b = y0 mx0.
Dengan mensubstitusi nilai b, persamaan ini dapat ditulis sebagai y = m(x-x0) + y0.
Jumlah piksel yang berbeda aktif, yang menyiratkan kecerahan yang berbeda di antara keduanya.
Solusi: Ketika m > 1, loop di atas y = y0 . . . y1 bukannya x, maka x =(y - y0) + x0.
• Tidak efisien karena banyaknya operasi dan penggunaan angka floating point.
Solusi: Algoritma yang lebih canggih, yang disebut Algoritma Gambar Garis Bresenham.
CURVES
• Parametric Curves
• Ellipses
• Polygons
• Rendering Curves in OpenGL
PA R A M E T R I C C U R V E S
kita telah melihat bentuk parametrik untuk sebuah garis:
• parameter t
λ) = p0 + ~d,
dimana ~d = p1 p¯0.
Bentuk implisit dari elips dan lingkaran adalah umum karena tidak ada bentuk fungsional yang eksplisit.Karena y adalah perkalian dari x.
P O LY G O N S
Poligon adalah kurva planar tertutup yang kontinu, linier sepotong-sepotong.
• Sebuah poligon beraturan adalah sederhana, sama sisi, dan sama sudut.
• Sebuah poligon cembung jika, untuk dua titik yang dipilih di dalam poligon, ruas garisantara mereka benar-benar terkandung dalam poligon.
P O LY G O N S
Contoh:
•
Untuk menemukan titik sudut dari n-gon, cari n titik yang berjarak sama pada lingkaran.
Dalam koordinat kutub, setiap simpul (, ) = (r cos(θi), r sin(θi)), di mana i = i untuk i = 0 . . . N-1
float x, y;
glBegin(GL_LINE_STRIP);
glVertex2f(x, y);
glEnd();
kita dapat menyesuaikan ukuran langkah untuk menentukan berapa banyak segmen garis yang akan digambar. Menambahkan segmen garis
contoh, kode berikut membuat disk dengan lubang di tengahnya, berpusat di sekitar sumbu z.
GLUquadric q = gluNewQuadric();
gluDeleteQuadric(q);
Lihat Manual Referensi OpenGL untuk informasi lebih lanjut tentang rutinitas ini