Algoritma Scan Line :
melakukan scanning untuk setiap baris dari
layar bidang gambar untuk setiap permukaan objek pada ruang tiga
dimensi dan menampilkan hasilnya setelah melaksanakan proses setiap
baris scanning-nya.
Kedua algoritma ini dibandingkan berdasarkan besar
memori dan waktu yang dipergunakan oleh masing-masing algoritma.
Dari hasil penelitian didapatkan bahwa algoritma Scanline menggunakan
memori yang lebih sedikit dari algoritma Z-Buffer,
sedangkan dari segi
kecepatan algoritma Scan Line lebih unggul daripada algoritma Z Buffer
bilamana objek yang ditampilkan pada bidang gambar mengumpul pada baris
y, sedangkan Z Buffer lebih unggul dari Scan Line
bila objek yang
digambar menyebar dan menggunakan keseluruhan baris pada bidang gambar
dengan bidang permukaan yang digambar semakin banyak.
Output Primitif Dasar
Intro :
• Pada contoh Pembuatan Output Primitif (digunakan layar beresolusi 320 x
200). Layar ini dibuat dengan cara Interrupt DOS Servis 10h dengan
menset Register AX menjadi 13h (Menunjukkan Resolusi Layar 320 x 200
pixel pada Monitor VGA)
• Alamat Visual Page $A000:0 s/d $A000:63999, setiap pixel disimpan dalam 1 byte (64000 byte).
• Rumus untuk meletakkan pixel pada layer adalah, Offset = Y*320 + X
Procedure PutPixel (Var PicBuff; X,Y : Integer; Col : Byte);
Var Address : Word;
Begin
Address := (Y*320) + X;
Mem[$A000:Address]:=Col;
End;
Pembuatan Output Primitif
1. Meletakkan Titik / PutPixel
Perhitungan offset = [(Y*4)+Y] * 32,
dalam program assembler digunakan
perintah Shl untuk menambah kecepatan program.
(bisa juga dengan
prosedur pascal diatas)
2. Pembuatan Garis / Line
Algoritma DDA
1. Menghitung panjang X dan Y
2. Menentukan X1,Y1 sebagai awal Garis (X2,Y2 dianggap sebagai akhir garis)
3. Periksa apakah Dy + Dy <> 0 (jika ya maka tidak bisa dibuat kotak)
4. Menghitung apakah Dx lebih besar dari Dy (menentukan Dx atau Dy yang akan dibagi)
a. Jika Dx > Dy
Koordinat X ditambah 1
Koordinat Y=Dy / Dx
Jumlah pemanggilan pixel sebanyak Dx kali
b. Jika Dx tidak lebih besar dari Dy
Koordinat Y ditambah 1
Koordinat X =Dx / Dy
Jumlah pemanggilan pixel sebanyak Dy kali
c. Cek apakah X bernilai negatif, jika ya arah penambahan X harus negatif (garis dari kiri kekanan)
d. Cek apakah Y bernilai negatif, jika ya arah penambahan Y harus negatif (garis dari kiri kekanan)
e. Letakkan Titik Pertama kali
f. Meletakkan Titik sebanyak Loop
Algoritma Bresenham
1. Tentukan 2 buah titik yang akan dihubungkan dengan garis
2. Tentukan salah satu titik disebelah kiri sebagai titik awal = (X1,Y1) dan titik lainnya (X2,Y2) sebagai titik akhir
3. Hitung Dx, Dy, 2Dx dan 2Dy –2Dx
4. Hitung parameter
Po= 2Dy – Dx
5. Jika X1 > X2 Maka tentukan
• X=X2
• Y=Y2
• Xahir = X1
6. Jika tidak tentukan
• X=X1
• Y=Y1
• Xahir = X2
7. Tentukan titik pertama pada posisi X,Y
8. Selama X < Xahir
• X=X+1
• Jika Po < 0 maka tentukan Po=TwoDy
• Jika tidak tentukan
• Y=Y+1
• Po=TwoDyDx
• Letakkan titk pada posisi X,Y
3. Pembuatan Kotak / Rectangle
Dilakukan dengan cara membuat empat garis untuk membentuk kotak.
X2,Y1
X1,Y2
X1,Y1
X2,Y2
4. Pembuatan Lingkaran
Titik diletakkan dengan rumus parametrik lingkaran
X = R*Cos(Teta) Y = R*Sin(Teta)
(Teta = Sudut 0o ... 359o )
Teta di Looping sebanyak 0 s/d 1440
(bukan berarti 0 s/d 1440 derajat)
Perhatikan penggunaan pada Cos dan Sin adalah
Teta * Pi / 720
? 1440 * Pi / 720
? 2 * Pi
? 360
Kenapa tidak 0 s/d 360, karena jika lingkaran besar akan mengakibatkan titik lingkaran jarang-jarang / tidak rapat.
5. Pembuatan Ellips
Sama seperti pembuatan lingkatan, Tetapi menggunakan 2 jari-jari, jari-jari X = Rx dan jari-jari Y = Ry
Contoh Program Ada Pada Lampiran Listing Output Grafik Primitif
3.2 Kurva Lain
Bermacam-macam fungsi kurva bermanfaat untuk pembentukan model,
spesifikasi jalur animasi, data dan fungsi grafik, serta aplikasi
lain.Biasanya kurva mempunyai bentuk seperti conic, trigonometric,
fungsi eksponensial, polinomial dan fungsi
spline, untuk menampilkan kurva-kerva tersebut dapat digunakan metode seperti pada lingkaran yang telah dibicarakan diatas.
3.3 Fill Area Primitif
Fill area (pengisian area) output primitif standar pada paket aplikasi
grafik umumnya adalah warna solid atau raster. Jenis yang paling mudah
diproses adalah poligon, karena mempunyai garis batas.
a. Algoritma Scan-line
Untuk pengisian solid poligon dilakukan dengan cara titik potong
diurutkan dari kiri ke kanan, Posisi yang berhubungan pada frame buffer
antara sepasang titik diberi warna tertentu.