Prinsip algoritma ini adalah mengambil nilai integer terdekat dengan jalur garis berdasarkan atas sebuah titik yang telah ditentukan sebelumnya(titik awal garis).
Algoritma pembentukan garis DDA:
Algoritma pembentukan garis DDA:
- Tentukan dua titik yang akan dihubungkan dalam pembentukan garis.
- Tentukan salah satu titik sebagai awal(x0,y0) dan titik akhir(x1,y1).
- Hitung dx=x1x0, dan dy= y1y0.
- Tentukan langkah, yaitu dengan cara jarak maksimum jumlah penambahan nilai x maupun nilai y, dengan cara:
- Bila nilai absolut dari dx lebih besar dari absolut dy, maka langkah= absolut dari dx.
- Bila tidak maka langkah= absolutdari dy
- Hitung penambahan koordinat pixel yaitu x_increment=dx/langkah, dan y_increment=dy/langkah
- Koordinat selanjutnya (x+x_increment, y+y_increment)
- Posisi pixel pada layar ditentukan dengan pembulatan nilai koordinat tersebut.
- Ulangi nomor 6 dan 7 untuk menentukan posisi pixel selanjutnya,sampai x=x1 dan y=y1.
uses graph,crt;
{tambahkan pada bagian ini prosedur penginisialisasian device, lihat pada bab 1}
procedure drawLine(xstart,ystart,xend,yend:integer);
var
step,k:integer;
dx,dy:real;
x_inc,y_inc,x,y:real;
begin
dx:=xend-xstart;
dy:=yend-ystart;
x:=xstart;
y:=ystart;
if abs(dx) > abs(dy) then
step:=round(abs(dx))
else
step:=round(abs(dy));
x_inc:=dx/step;
y_inc:=dy/step;
putPixel(round(x),round(y),30);
for k:=1 to step do
begin
x:=x+x_inc;
y:=y+y_inc;
putPixel(round(x),round(y),30);
end;
end;
begin
init;
{menggambar garis dari titik 10,10 ke 500,10}
drawLine(10,10,500,10);
readkey;
destroy;
end.
* Sumber : Modul Praktikum Grafika Komputer 2D oleh Muhammad Fuad DR, Fakultas MIPA
Universitas Gajah Mada Yogyakarta
(edited by : erni mahdalena)
{tambahkan pada bagian ini prosedur penginisialisasian device, lihat pada bab 1}
procedure drawLine(xstart,ystart,xend,yend:integer);
var
step,k:integer;
dx,dy:real;
x_inc,y_inc,x,y:real;
begin
dx:=xend-xstart;
dy:=yend-ystart;
x:=xstart;
y:=ystart;
if abs(dx) > abs(dy) then
step:=round(abs(dx))
else
step:=round(abs(dy));
x_inc:=dx/step;
y_inc:=dy/step;
putPixel(round(x),round(y),30);
for k:=1 to step do
begin
x:=x+x_inc;
y:=y+y_inc;
putPixel(round(x),round(y),30);
end;
end;
begin
init;
{menggambar garis dari titik 10,10 ke 500,10}
drawLine(10,10,500,10);
readkey;
destroy;
end.
* Sumber : Modul Praktikum Grafika Komputer 2D oleh Muhammad Fuad DR, Fakultas MIPA
Universitas Gajah Mada Yogyakarta
(edited by : erni mahdalena)
Tidak ada komentar:
Posting Komentar