Menggambar Kotak Dengan Algoritma DDA beserta Transisinya

setelah kemarin saya tulis mengenai algoritma membuat garis dengan algoritma DDA kini giliran menggambar kotak dengan algoritma DDA, memang kalau dilihat source code mirip banget, namanya aja algoritma DDA ya paling tidak sedikit perubahan hanya terletak di deklarasi dan pencetakan ke Canvas.

berikut langkah2nya :

1. seperti biasa letakkan code berikut pada eventOnPaint
2. tentukan koordinat awal garis (a0, b0)
3. tentukan koordinat akhir garis (a1, b2)
4. tentukan jarak translasi dari x dan y (tx,ty)
5. tentukan nilai x0,x1,y0,y1 setelah di translasikan
int x0=a0+tx;
int x1=a1+tx;
int y0=b0+ty;
int y1=b1+ty;
6. hitung jarak mendatar kedua titik dx dan dy
dx=x1-x0 dan
dy=y1-y0
7. tentukan faktor pembagi(dicari dari yang paling panjang)
jika dx>dy
maka pembagi=dx
jika tidak pembagi=dy
8. hitung faktor penambah ke koordinat horisontal dan vertikal titik
penambah_x=dx/pembagi dan
penambah_y=dy/pembagi
9. buat perulangan dari titik ke 1 sampai panjang pembagi
for k=1 to pembagi
10. hitung koordinat titik selanjutnya
X=x+penambah_x dan
Y=y+penambah_y
11. gambar titik dengan pixxel pada koordinat (x,y)
nb: koordinat berupa integer

//variable
int a0,b0,a1,b1,dx,dy,step,tx,ty;
float x,y,x_tambah,y_tambah;
//inisial translasi
tx=80;
ty=70;
//koordinat titik
a0=100;b0=100;
a1=200;b1=200;
//translasi
int x0=a0+tx;
int x1=a1+tx;
int y0=b0+ty;
int y1=b1+ty;
//
dx=x1-x0;dy=y1-y0;
x=float(x0);y=float(y0);
//faktor pembagi
if (dx>dy)
step=dx;
else
step=dy;
x_tambah=(float) dx/step;
y_tambah=(float) dy/step;
//menggambar kotak
for (int k=0;k<step;k++){
x+=x_tambah;
y+=y_tambah;
//  Canvas->Pixels[int(x)][int(y)]=clRed;
Canvas->Pixels[int(x)][y0]=clRed;//horisontal up
Canvas->Pixels[int(x)][y1]=clRed;//horisontal down
Canvas->Pixels[x0][int(y)]=clRed;//vertikal left
Canvas->Pixels[x1][int(y)]=clRed;//vertikal right
}

hasil keluaranya :

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s