Background

ALGORITMA SCAN LINE

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.

Categories: Share

Leave a Reply