Menggambar Kubus Dengan Algoritma DDA

alhamdulillah sudah lama tidak nulis lagi di blog kini saatnya kita berbagi ilmu lagi, kembali lagi saya singgungg masalah grafika komputer dengan menggunakan borland c++ builder 6.

sekarang saatnya kita kembangkan algoritma DDA untuk menggambar kubus dengan model yang berbeda dari sebelumnya, sebab kita akan mengambil nilai titik dari koordinat mouse, berikut langsung kita buat mulai dari awal tutorialnya, silahkan menyimak :

1. buat tampilan berikut ini dengan tambahan image

2. deklarasikan variable yang di perlukan

int X1,Y1,X2,Y2;

3.  dalam Events OnActive ketikan code

Image1->Canvas->Rectangle(0,0,Image1->Width,Image1->Height);

nb : untuk membuat bidang kosong lokasi pembuatan gambar

4. seleksi image1 kemudian pilih Events MouseDown dan ketikan code

X1=X; Y1=Y;

nb : untuk mengambil nilai titik pertama dari pergerakan mouse

5. masih image1 terseleksi kemudian pilih Events MouseUp dan ketikan code

Image1->Canvas->Rectangle(0,0,Image1->Width,Image1->Height);
X2=X;Y2=Y;
DDA(X1,Y1,X2,Y2);

nb : untuk mengambil nilai titik yang kedua dan menghapus gambar sebelumnya dan menggantinya dengan yang baru

6. di source code paling bawah masukkan code berikut ini

void __fastcall TForm1::DDA(int xa,int ya,int xb,int yb)
{
int dx, dy, dx2,dy2,step, halfstep, k ;
float Xincrement,Yincrement,x,y,x2,y2;
dx = xb-xa;
dy = yb-ya;
dx2=dx/2;
dy2=dy/2;

x=(float)xa;
y=(float)ya;
x2=(float)xa;
y2=(float)ya;

if (abs(dx)>abs(dy)){
step = (abs(dx));
}else{
step = (abs(dy));
};
halfstep=step/2;
Xincrement=(float)dx/step;
Yincrement=(float)dy/step;

for (k=0;k<=step;k++){
x+=Xincrement;
y+=Yincrement;
Image1->Canvas->Pixels[int(x)][ya]=clRed;//horisontal up
Image1->Canvas->Pixels[int(x)][yb]=clRed;//horisontal down
Image1->Canvas->Pixels[xa][int(y)]=clRed;//vertikal left
Image1->Canvas->Pixels[xb][int(y)]=clRed;//vertikal right

Image1->Canvas->Pixels[int(x+dx2)][ya+dy2]=clRed;//horisontal up
Image1->Canvas->Pixels[int(x+dx2)][yb+dy2]=clRed;//horisontal down
Image1->Canvas->Pixels[xa+dx2][int(y+dy2)]=clRed;//vertikal left
Image1->Canvas->Pixels[xb+dx2][int(y+dy2)]=clRed;//vertikal right
}

for (k=0;k<=halfstep;k++){
x2+=Xincrement;
y2+=Yincrement;
Image1->Canvas->Pixels[int(x2)][int(y2)]=clRed;//horisontal up
Image1->Canvas->Pixels[int(x2+dx)][int(y2)]=clRed;//horisontal down
Image1->Canvas->Pixels[int(x2)][int(y2+dy)]=clRed;//vertikal left
Image1->Canvas->Pixels[int(x2+dx)][int(y2+dy)]=clRed;//vertikal right
}

nb : ini source code untuk menggambar kubus dari pengembangan algoritma DDA

7. dalam tab Unit1.h deklarasikan rumis DDA di atas dengan menuliskan code

void __fastcall DDA(int xa,int ya,int xb,int yb);

8. kemudian jalankan dan hasilnya nampak seperti berikut ini

9. jika tidak seperti yang di inginkan cek kembali code anda

selamat mencoba🙂

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