Assalamu'alaikum Wr. Wb.
Menikmati materi komputer grafik via pemrograman Delphi lumayan asyik, buat rekan-rekan yang menginginkan materinya silakan donwload link berikut :
Berikut contoh listing program yang saya ambil dari modul latihan saat perkuliahan:
{Listing Program Latihan Komputer Grafik
Algoritma DDA, Bressenhem, dan Lingkaran
untuk menggunakan listing ini harus diedit
dan disesuaikan dengan penggunaan Form visualnya}
{Algoritma DDA}
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
close
end;
procedure TForm1.Button2Click(Sender: TObject);
var
dx,dy,fstep,f,x1,x2,y1,y2:integer;
deltax,deltay,x,y:real;
begin
x1:=strtoint(edit1.Text);
y1:=strtoint(edit2.Text);
x2:=strtoint(edit3.Text);
y2:=strtoint(edit4.Text);
dx:=(x2-x1);
dy:=(y2-y1);
if (abs(dx)>abs(dy)) then fstep:=abs(dx)
else fstep:=abs(dy);
deltax:= dx/fstep;
deltay:= dy/fstep;
x:=x1;y:=y1;
canvas.Pixels[trunc(x),trunc(y)]:=clblue;
for f :=0 to fstep-1 do
begin
x:=x+deltax;
y:=y+deltay;
canvas.Pixels[trunc(x),trunc(y)]:=clblue;
end;
end;
end.
{Algoritma bresenham}
procedure TForm1.Button1Click(Sender: TObject);
var
p,dx,dy,xend,f,x,y,xa,xb,ya,yb:Integer;
begin
xa:=strtoint(edit1.Text);
xb:=strtoint(edit2.Text);
ya:=strtoint(edit3.Text);
yb:=strtoint(edit4.Text);
dx:=Abs(xa-xb);
dy:=Abs(ya-yb);
p:=(2*dy)-dx;
if(xa>xb)then
begin
x:=xb;
y:=yb;
xend:=xa;
end
else
begin
x:=xa;
y:=ya;
xend:=xb;
end;
Canvas.Pixels[x,y]:=clRed;
for f:=x to xend do
begin
x:=x+1;
if(p<0)then p:=p+(2*dy)
else
begin y:=y+1;
p:= p+(2*(dy-dx));
end;
Canvas.Pixels[x,y]:=clRed;
end;
end;
end.
{Algoritma Lingkaran}
procedure TForm1.Button1Click(Sender: TObject);
var x,y,p,xc,yc,radius:integer;
begin
x:=0;xc:=100;yc:=200;radius:=45;
y:=radius;
p:=1-radius;
while(x<y)do
begin
canvas.pixels[xc+x,yc+y]:=clred;
canvas.pixels[xc+x,yc-y]:=clred;
canvas.pixels[xc-x,yc+y]:=clred;
canvas.pixels[xc-x,yc-y]:=clred;
canvas.pixels[xc+y,yc+x]:=clred;
canvas.pixels[xc+y,yc-x]:=clred;
canvas.pixels[xc-y,yc+x]:=clred;
canvas.pixels[xc-y,yc-x]:=clred;
if(p<0) then x:=x+1
else
begin
x:=x+1;
y:=y-1;
end;
if(p<0)then p:=p+2*x+1
else p:=p+2*(x-y)+1;
end;
end;
end.
1. Buat sebuah garis yang menghubungkan dari titik (20,10) sampai dengan titik (30,18) dengan menggunakan algoritma DDA.
2. Buat sebuah garis yang menghubungkan dari titik (20,10) sampai dengan titik (30,18) dengan menggunakan algoritma Bressenham.
Listing program ditulis/dicetak.
Semoga bermanfaat.