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 :
Berikut tools yang digunakan :

Label 

Untuk membuat label gunakan tool sepeti gambar diatas
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

Postingan populer dari blog ini

delphi 7, Membuat garis sederhana membentuk suatu gambar primitif menyerupai mobil

delphi 7, menggambar garis dengan menggunakan algoritma DDA,POLINOM, dan BRESENHAM

Delphi 7, Menggambar translasi dasar