membuat program rotasi objek 2D pada Delphi 7
Program rotasi objek 2D pada Delphi 7
Assalamualaikum Wr.Wb.
Kali ini saya akan share bagaimana membuat rotasi objek 2D pada Delphi 7, melanjutkan postingan saya sebelumnya yaitu : Menggambar translasi dasar objek 2D pada Delphi 7
Kita mulai saja ...
1. Buka Delphi 7, buat file baru, lalu desain tampilan program sehingga seperti berikut :
Untuk membuat label gunakan tool sepeti gambar diatas
atur Caption label1 : Sudut
Edit
Button
Assalamualaikum Wr.Wb.
Kali ini saya akan share bagaimana membuat rotasi objek 2D pada Delphi 7, melanjutkan postingan saya sebelumnya yaitu : Menggambar translasi dasar objek 2D pada Delphi 7
Kita mulai saja ...
1. Buka Delphi 7, buat file baru, lalu desain tampilan program sehingga seperti berikut :
Berikut tools yang digunakan :
Label
atur Caption label1 : Sudut
Edit
Gunakan tool di atas untuk membuat kolom
edit
atur Name edit1 : eSudut
Button
Gunakan tool di atas untuk membuat
tombol
atur Button
Button1 = Name : Button1
Caption : Segitiga
Button2 = Name : Button2
Caption : Rotasi
Button3 = Name : Keluar
Caption : Keluar
StringGrid
Tool di atas untuk membuat StringGrid,
pada submenu additional
atur StringGrid1 = Name : StringGrid1
FixedCol : 1
Fixed Row : 0
RowCount : 2
ColCount : 2
Options goEditing : True
2. setelah desain program selesai, sekarang kita masuk pada source code, double klik pada form lalu masukan kode program berikut di bawah uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, StdCtrls;
Const N =3;
Type
Matrik33 = array[1..3,1..3] of Real;
Matrik3N = array[1..3,1..3] of Real;
3. double klik pada form, lalu masukan kode program berikut pada FormCreate
procedure TForm1.FormCreate(Sender: TObject);
begin
x0 := ClientWidth div 2; y0 := ClientHeight div 2;
end;
4. Masukan kode program di bawah, pada Form1>event>OnPaint
procedure TForm1.FormPaint(Sender: TObject);
var k:Integer;
begin
for k := 0 to ClientWidth do Canvas.Pixels[k,y0]:=
clBlue;
for k := 0 to ClientHeight do Canvas.Pixels[x0,k]:=
clRed; end;
5. Masukan kode program dibawah, pada Form1>event>OnShow
procedure TForm1.FormShow(Sender: TObject);
begin
with StringGrid1 do
begin
Cells[0,0]:='X'; Cells[0,1]:='Y' end; end;
6. Ketikan kode program berikut di bawah program FormShow
procedure TForm1.Obyek2D(Sender: TObject; var
Obyek:Matrik3N);
var i,j : Integer;
begin
for i := 1 to 2 do
for j:= 1 to N do
Obyek[i,j]:=StrToFloat(StringGrid1.Cells[j,i-1]);
for j := 1 to N do
Obyek[3,j]:=1 end;
procedure TForm1.MatrikRotasi2D(Sender: TObject; var R :
Matrik33; sudut : real);
Var Radian : Real;
begin
sudut := StrToFloat(eSudut.text);
Radian := sudut / 180*3.14;
R[1,1]:=cos(Radian); R[1,2]:=sin(Radian); R[1,3]:=0;
R[2,1]:=sin(Radian); R[2,2]:=cos(Radian); R[2,3]:=0;
R[3,1]:=0; R[3,2]:=0; R[3,3]:=1; end;
procedure MatrikKaliTransformasiObyek2D(var Obyek:
Matrik3N; R: Matrik33);
Var i,j,k : Integer; Hasil : Matrik3N;
begin
for i := 1 to 3 do
for k := 1 to N do
begin
Hasil[i,k]:=0;
for j:=1 to 3 do
Hasil[i,k]:=Hasil[i,k]+R[i,j]*Obyek[j,k];end;
Obyek:=Hasil; end;
7. Masukan kode program berikut dibawah type
procedure Obyek2D(Sender: TObject; var Obyek:Matrik3N);
procedure MatrikRotasi2D(Sender: TObject; var R : Matrik33; sudut: real);
8. Masukan kode program berikut di bawah var
x0,y0:integer;
Obyek: Matrik3N;
R : Matrik33;
a,b,sudut:real;
9. double klik pada button1 (segitiga) lalu masukan program berikut :
procedure TForm1.Button1Click(Sender: TObject);
begin
Obyek2D(Sender,Obyek);
Canvas.MoveTo(trunc(X0+Obyek[1,1]),trunc(Y0-Obyek[2,1]));
Canvas.LineTo(trunc(X0+Obyek[1,2]),trunc(Y0-Obyek[2,2]));
Canvas.MoveTo(trunc(X0+Obyek[1,2]),trunc(Y0-Obyek[2,2]));
Canvas.LineTo(trunc(X0+Obyek[1,3]),trunc(Y0-Obyek[2,3]));
Canvas.MoveTo(trunc(X0+Obyek[1,3]),trunc(Y0-Obyek[2,3]));
Canvas.MoveTo(trunc(X0+Obyek[1,1]),trunc(Y0-Obyek[2,1]));
end;
10. double klik pada button2 (rotasi) lalu masukan kode program berikut :
procedure TForm1.Button2Click(Sender: TObject);
begin
Obyek2D(Sender,Obyek);
MatrikRotasi2D(Sender,R,sudut);
MatrikKaliTransformasiObyek2d(Obyek,R);
Canvas.MoveTo(trunc(X0+Obyek[1,1]),trunc(Y0-Obyek[2,1]));
Canvas.LineTo(trunc(X0+Obyek[1,2]),trunc(Y0-Obyek[2,2]));
Canvas.MoveTo(trunc(X0+Obyek[1,2]),trunc(Y0-Obyek[2,2]));
Canvas.LineTo(trunc(X0+Obyek[1,3]),trunc(Y0-Obyek[2,3]));
Canvas.MoveTo(trunc(X0+Obyek[1,3]),trunc(Y0-Obyek[2,3]));
Canvas.MoveTo(trunc(X0+Obyek[1,1]),trunc(Y0-Obyek[2,1]));
end;
11. double klik pada button keluar, lalu masukan kode program berikut :
procedure TForm1.KeluarClick(Sender: TObject);
begin
application.Terminate;
end;
12. lakukan runing program sesuaikan inputan dengan gambar dibawah, maka hasilnya seperti berikut :
untuk program bisa di unduh disini
Komentar
Posting Komentar