TI2017D - 20170810116 - Farras Hilmy Putra - Prak - GRAFIKA - Modul - 3

You might also like

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 4

LAPORAN PRAKTIKUM

GRAFIKA KOMPUTER
MODUL 3

Disusun Oleh :

Nama : Farras Hilmy Putra


Kelas : TI 2017 D
NIM : 20170810116
A. POST TEST
1. Rotasi Objek Segitiga

Kode Programnya :

unit m3postest;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Grids;
Const N = 3;
Type
Matrik33 = array[1..3,1..3] of Real; Matrik3N = array[1..3,1..N] of Real;
type
TForm1 = class(TForm)
StringGrid1: TStringGrid;
Label1: TLabel;
eSudut: TEdit;
Button1: TButton;
Button2: TButton;
Button3: TButton;
procedure FormCreate(Sender: TObject);
procedure FormPaint(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure Obyek2D(Sender: TObject; var Obyek:Matrik3N);
procedure MatrikRotasi2D(Sender: TObject; var R : Matrik33; sudut: real);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1; x0,y0:integer; Obyek: Matrik3N; R : Matrik33; a, b,sudut: real;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);


begin
x0 := ClientWidth div 2; y0 := ClientHeight div 2; end;
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;

procedure TForm1.FormShow(Sender: TObject);


begin
with StringGrid1 do
begin
Cells[0,0]:='X'; Cells[0,1]:='Y'; end;
end;

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;

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.LineTo(trunc(X0 + Obyek[1,1]),trunc(Y0 - Obyek[2,1]));
end;

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.LineTo(trunc(X0 + Obyek[1,1]),trunc(Y0 - Obyek[2,1]));
end;

procedure TForm1.Button3Click(Sender: TObject);


begin
Application.Terminate;
end;

end.

Analisis :

uses : digunakan untuk memanggil library atau unit delphi dan mendeklarasikan
konstanta serta matrik.

type : Mendeklarasikan komponen-komponen delphi dan juga prosedur program serta


terdapat private deklarasi dan juga public deklarasi untuk pengelompokannya.

var : Deklarasi variabel-variabel yang dibutuhkan dalam program.

procedure TForm1.FormCreate : Pada Prosedur Program ini digunakan untuk membuat


garis horizontal sebagai sumbu x dan vertical sebagai sumbu y.

procedure TForm1.FormPaint : Sumbu X berwarna biru dan sumbu Y berwarna merah.


procedure TForm1.FormShow : Mendeklarasikan StringGrid1 untuk sumbu X dan Y.
procedure TForm1.Obyek2D : Digunakan untuk menentukan nilai-nilai obyek 2D dari
nilai StringGrid1 melalui kondisi array.

procedure TForm1.MatrikRotasi2D : Digunakan untuk menentukan nilai dari array Tv


dan memasukkan nilai A dan B ke susunan array Tv yang nantinya digunakan untuk
perotasian.

procedure MatrikKaliTransformasiObyek2D : Digunakan untuk menghitung proses


Rotasi dari nilai-nilai prosedur sebelumnya.

procedure TForm1.Button1Click : Merupakan Aksi button ketika di klik melalui proses-


proses nilai titik koordinat (canvas moveto dan lineto) dengan nilai objek array.

procedure TForm1.Button2Click : Merupakan Aksi button ketika di klik melalui proses


perhitungan dari prosedur sebelumnya untuk mendapatkan objek translasi dengan nilai
titik koordinat (canvas moveto dan lineto) dengan nilai objek array.

Output :

You might also like