Pendidikan

Rasterization Titik

Rasterization Titik

Dalam keadaan default, sebuah titik diraster dengan memotong kordinat Xw dan Yw (ingat bahwa subcript menunjukkan bahwa ini adalah x dan y clipping window) ke integer. Alamat ini (x,y), berdasarkan pada data terkait dengan simpul yang sesuai ke titik, dikirim sebagai sebuah fragmen tunggal untuk tahap per-fragme dari GL tersebut.

Efek dari lebar titik lebih dari 1. 0 tergantung pada keadaan antialiasing titik. Jika antialiasing dnonaktifkan, lebar aktual ditentukan oleh pembulatan lebar dipasok ke integer terdekat, kemudian mengapit ke titik lebar non-antialiasing maksimum implementation-dependent. Meskipun nilai implementation-dependent tidak dapatdi-query, tapi harus tidak kurang dari lebar titik maksimum antialasing implementation-dependent, dibulatkan ke nilai integer terdekat, serta tidak boleh kurang dari 1. Jika lebarnya merupakan ganjil maka

Persamaan di atas dihitung dari Xw dan Yw vertex dan grid persegi berlebar ganjil berpusat di (x,y) mendefinisikan pusat fragmen raster (ingat bahwa pusat-pusat fragmen terletak pada nilai koordinat jendela half-integer). Jika lebarnya genap maka pusat titik adalah

Pusat fragmen raster adalah nilai koordinat half-integer window dalam persegi yang berpusat di (x,y).

“Rasterization non-antialiasing. Tanda silang menunjukkan pusat fragmen yang dihasilkan oleh rasterization untuk setiap titik yang terletak di wilayang gelap. Garis putus-putus pada grid terletak pada koordinat half-integer.”

Jika antialasing diaktifkan, maka rasterization titik menghasilkan fragmen untuk setiap persegi fragmen yang memotong daerah yang berada dalamlingkaran berdiameter sama dengan lebar titik saat ini dan berpusat pada titik (Xw, Yw). Perhatikan gambar di bawah ini

Pada gambar di atas, titik hitam menunjukkan titik yang akan diraster. Daerah gelap memiliki lebar yang ditentukan. Tanda x menunjukkan pusat fragmen yang dihasilkan oleh rasterization. Perhitungan fragmen didasarkan pada bagian wilayah gelap yang menutupi persegi fragmen.

  1. Rasterization Line

Line segmen rasterization dimulai dengan mengkarakterisasi segmen sebagai x-major dan y-major.  Segmen garis x-major mempunyai penurunan interval mendekati [-1,1] dan semua segmen garis lainnya merupakan y-major (slope atau turunan ditermain oleh endpoint segmen). Rasterization ditentukan hanya untuk segmen x-major kecuali dalam kasus dimana memodifikasi untuk segmen y-major yang sudah jelas.

Idelanya, GL menggunakan aturan ‘diamond-exit’ untuk menentukan fragmen yang diproduksi oleh rasterization segmen garis. Untuk setiap fragmen f dengan pusat di window koordinat x dan y mendifinisikan wilayah berbentuk ‘diamond’ yang merupakan intersection empat half plan.

Ketika Pa dan Pb berada di pusat fragmen, karakterissasi fragmen mengurasi untuk algoritma Bresenham dengan satu modifikasi. Hasil baris dalam deskripsi ini adalah ‘setengah terbuka’. Artinya bahwa fragmen terakhir (sesuai dengan Pb) tidak ditarik. Ini berati bahwa ketika proses raster segmen garis tersambung,endpoint akan diproduksi hanya sekai bukan dua kali (seperti yang terjadi pada algoritma Bresenham’s).

Beberapa algoritma yang digunakan

  1. Algoritma Naive

Algoritma ini dimulai dari segmen garis pada koordinat dengan nilai bulat (integer) untuk endpoint

  • m = (y2 – y1) / (x2 – x1)
  • y = m*x+b
  • 2 operasi floating-point per piksel
  1. Algoritma DDA (Digital Differential Analyzer)

Misalkan po = (xo,yo) dan p1 = (x1,y1) menjadi dua endpoint dari suatu garis. Kita akan mengasumsikan bahwa titik tersebutberada di koordinat xo,yo,xi,yi. Dimana intersep titik dari po, p1 adalah y = mx + b dan m = (y2-y1)/(x2-x1) dan intersep y adalah b=y1-mx1.

void Line_DDA(intx1, inty1, intx2, inty2)

{

floatdy= y2-y1;

floatdx = x2-x1;

floatm = dy/dx;

floaty = y1;

for (intx=x1; x<=x2; x++)

{

putpixel(x,round(y));

y += m;

}

}

  1. Algoritma Midpoint

Untuk menerapkan kriteria midpoint, kita hanya perlu menghitung

d = F(M) = F(xp+1, yp+0.5)

If d>0then

move to NE

else

sumber :