Bab
III
Output
Primitif
Tujuan:
1)
Mahasiswa memahami output primitive
grafika komputer.
2)
Mahasiswa mampu memahami algoritma pembentukan
garis dan lingkaran.
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.
3.1
Titik dan Garis
Pembentukan titik
dilakukan dengan mengkonversi suatu posisi titik koordinat dengan program
aplikasi ke dalam suatu operasi 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.
3.2
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
3.2.1
Algoritma DDA
(Digital Differential Analyzer)
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.
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 dan y_increment.
Δx = x1 – x 0 =
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 .
3.2.2 Algoritma Bressenham
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, 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.
Langkah-langkah 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, Δ2x, 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 <0 maka titik
selanjutnya (xk+1, yk) dan pk+1 = pk
+2Δy
·
bila tidak maka titik selanjutnya adalah
(xk+1, yk+1)
dan pk+1=pk+2Δ-y2Δx.
6)
Ulangi langkah nomor 5 untuk menentukan
posisi pixel selanjutnya, sampai x=xn.
Contoh :
Untuk menggambarkan algoritma Bressenham
dalam pembentukan suatu garis yang
menghubungkan titik (10,10) dan (17,16), pertama-tama ditentukan bahwa titik
(10,10) berada disebelah kiri merupakan titik awal, sedangkan (17,16) merupakan
titik akhir. Posisi yang membentuk garis dapat ditentukan dengan perhitungan
sebagai berikut :
·
x = x1– x0
dan y= y1 – y0
x = 7 dan y = 6
·
parameter p0 = 2Δy – x
p0 = 5
·
increment 2Δy = 12 2Δy – 2Δx = -2
3.3
Algoritma Pembentukan Lingkaran
Pada umumnya, lingkaran digunakan sebagai komponen
dari suatu gambar. Prosedur untuk menampilkan lingkaran dan elips dibuat dengan
persamaan dasar dari lingkaran x2+y2=r2.
Lingkaran adalah kumpulan dari
titik-titik yang memiliki jarak dari titik pusat yang sama untuk semua titik.
Lingkaran dibuat dengan menggambarkan seperempat lingkaran, karena bagian lain
dapat dibuat sebagai bagian yang simetris. Penambahan x dapat dilakukan dari 0
ke r sebesar unit step, yaitu menambahkan ± y untuk setiap step.
Simetris
delapan titik
Proses pembuatan lingkaran dapat
dilakukan dengan menentukan satu titik awal. Bila titik awal pada lingkaran
(x,y), maka terdapat tiga posisi lain, sehingga dapat diperoleh delapan titik.
Dengan demikian, hanya diperlukan untuk menghitung segmen 45o dalam
menentukan lingkaran selengkapnya. Delapan titik simetris, yaitu :
·
Kuadran I (x,y),(y,x)
·
Kuadran II (-x,y),(-y,x)
·
Kuadran III (-x,-y),(-y-x)
·
Kuadran IV (x,-y),(y,-x)
Algoritma lingkaran midpoint disebut
juga algoritma lingkaran Bressenham. Algoritma yang digunakan membentuk semua
titik berdasarkan titik pusat dengan penambahan semau jalur disekeliling
lingkaran. Dalam hal ini hanya diperhatikan bagian 45o dari suatu
lingkaran, yaitu oktan kedua dari x = 0 ke x = R/, dan
menggunakan prosedur circle point untuk menampilkan titik dari seluruh
lingkaran.
fcircle(x,y)
fungsi lingkaran menggambarkan posisi
midpoint antara pixel yang terdekat dengan
jalur lingkaran setiap step. Fungsi
lingkaran menentukan parameter pada algoritma
lingkaran.
Langkah-langkah pembentukan lingkaran :
1)
Tentukan radius r dengan titik pusat
lingkaran (xc,yc) kemudian diperoleh (xc,yc)= 0,r).
2)
Hitung nilai dari parameter P0 = 1-r
3)
Tentukan nilai awal k = 0, untuk setiap
posisi xk berlaku sbb :
·
Bila pk <0, maka titik
selanjutnya adalah (xk+1,yk)
Pk+1 = pk +2xk+1+1
·
Bila pk >0, maka titik selanjutnya
adalah (xk+1,yk-1)
Pk+1
= pk +2 xk+1+1 - 2 yk+1
Dimana
2 xk+1 = 2 xk + 2 dan 2 yk+1 = 2 yk
– 2
4)
Tentukan titik simetris pada ketujuh
oktan yang lain.
5)
Gerakkan setiap posisi pixel (x,y) pada
garis melingkar dari lingkaran dengan titik pusat (xc,yc)
dan tentukan nilai koordinat : x= x + xc dan y = y + yc
6)
Ulangi langkah ke 3 -5, sampai dengan
x>=y
Contoh :
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 :
(x0,y0) =(0,0) r = 10
(x0,y0) = (0,10) 2x0 = 0, 2y0 = 20
parameter p0 = 1-r =
-9
Tidak ada komentar:
Posting Komentar