Selasa, 18 Desember 2012

Membuat Kubus pada Delphi 7 (Bilangan Pecahan, Teknik Translasi dan Skala)

Tugas Komputer Grafik
Membuat Kubus pada Delphi 7, kemudian melakukan translasi dan skala yang dapat menerima bilangan desimal (koma-koma)

________________________________________________________________________________

unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
txtx1: TEdit;
txty1: TEdit;
txtsisi: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Button1: TButton;
Button2: TButton;
Label4: TLabel;
txttx: TEdit;
Label5: TLabel;
txtty: TEdit;
Button3: TButton;
Label6: TLabel;
txtskala: TEdit;
Button4: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
x0,y0,x1,y1,x2,y2,x3,y3,x4,y4,x5,y5,x6,y6,x7,y7,x8,y8,sisi : real;
tx,ty,tx1,tx2,tx3,tx4,tx5,tx6,tx7,tx8,ty1,ty2,ty3,ty4,ty5,ty6,ty7,ty8 : real;
sx1,sx2,sx3,sx4,sx5,sx6,sx7,sx8,sy1,sy2,sy3,sy4,sy5,sy6,sy7,sy8 : real;
sx : real;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
Application.Terminate;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
x0:=form1.Width div 2;
y0:=form1.Height div 2;
x1:=StrTofloat(txtx1.Text);
y1:=StrTofloat(txty1.Text);
sisi:=StrTofloat(txtsisi.Text);
x2:=x1;
y2:=x1+sisi;
x3:=x1+sisi;
y3:=y2;
x4:=x3;
y4:=y1;
x5:=x1+round(sisi/2);
y5:=y1+round(sisi/3);
x6:=x5+sisi;
y6:=y5;
x7:=x6;
y7:=y6+sisi;
x8:=x5;
y8:=y7;
with form1 do
begin
Refresh;
Canvas.MoveTo(round(x1+x0),round(y0-y1));
Canvas.LineTo(round(x2+x0),round(y0-y2));
Canvas.MoveTo(round(x2+x0),round(y0-y2));
Canvas.LineTo(round(x3+x0),round(y0-y3));
Canvas.MoveTo(round(x3+x0),round(y0-y3));
Canvas.LineTo(round(x4+x0),round(y0-y4));
Canvas.MoveTo(round(x4+x0),round(y0-y4));
Canvas.LineTo(round(x1+x0),round(y0-y1));
Canvas.MoveTo(round(x1+x0),round(y0-y1));
Canvas.LineTo(round(x5+x0),round(y0-y5));
Canvas.MoveTo(round(x5+x0),round(y0-y5));
Canvas.LineTo(round(x6+x0),round(y0-y6));
Canvas.MoveTo(round(x6+x0),round(y0-y6));
Canvas.LineTo(round(x4+x0),round(y0-y4));
Canvas.MoveTo(round(x6+x0),round(y0-y6));
Canvas.LineTo(round(x7+x0),round(y0-y7));
Canvas.MoveTo(round(x7+x0),round(y0-y7));
Canvas.LineTo(round(x3+x0),round(y0-y3));
Canvas.MoveTo(round(x7+x0),round(y0-y7));
Canvas.LineTo(round(x8+x0),round(y0-y8));
Canvas.MoveTo(round(x8+x0),round(y0-y8));
Canvas.LineTo(round(x5+x0),round(y0-y5));
Canvas.MoveTo(round(x8+x0),round(y0-y8));
Canvas.LineTo(round(x2+x0),round(y0-y2));
end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
form1.Canvas.MoveTo(0,round(form1.Height div 2));
form1.Canvas.LineTo(form1.Width,round(form1.Height div 2));
form1.Canvas.MoveTo(round(form1.Width div 2),0);
form1.Canvas.LineTo(round(form1.Width div 2),form1.Height);
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
x0:=form1.Width div 2;
y0:=form1.Height div 2;
x1:=StrTofloat(txtx1.Text);
y1:=StrTofloat(txty1.Text);
sisi:=StrTofloat(txtsisi.Text);
x2:=x1;
y2:=x1+sisi;
x3:=x1+sisi;
y3:=y2;
x4:=x3;
y4:=y1;
x5:=x1+round(sisi/2);
y5:=y1+round(sisi/3);
x6:=x5+sisi;
y6:=y5;
x7:=x6;
y7:=y6+sisi;
x8:=x5;
y8:=y7;
tx:= StrTofloat(txttx.Text);
ty:=StrTofloat(txtty.Text);
tx1:=x1+tx;
tx2:=x2+tx;
tx3:=x3+tx;
tx4:=x4+tx;
tx5:=x5+tx;
tx6:=x6+tx;
tx7:=x7+tx;
tx8:=x8+tx;
ty1:=y1+ty;
ty2:=y2+ty;
ty3:=y3+ty;
ty4:=y4+ty;
ty5:=y5+ty;
ty6:=y6+ty;
ty7:=y7+ty;
ty8:=y8+ty;
with form1 do
begin
Refresh;
Canvas.MoveTo(round(tx1+x0),round(y0-ty1));
Canvas.LineTo(round(tx2+x0),round(y0-ty2));
Canvas.MoveTo(round(tx2+x0),round(y0-ty2));
Canvas.LineTo(round(tx3+x0),round(y0-ty3));
Canvas.MoveTo(round(tx3+x0),round(y0-ty3));
Canvas.LineTo(round(tx4+x0),round(y0-ty4));
Canvas.MoveTo(round(tx4+x0),round(y0-ty4));
Canvas.LineTo(round(tx1+x0),round(y0-ty1));
Canvas.MoveTo(round(tx1+x0),round(y0-ty1));
Canvas.LineTo(round(tx5+x0),round(y0-ty5));
Canvas.MoveTo(round(tx5+x0),round(y0-ty5));
Canvas.LineTo(round(tx6+x0),round(y0-ty6));
Canvas.MoveTo(round(tx6+x0),round(y0-ty6));
Canvas.LineTo(round(tx4+x0),round(y0-ty4));
Canvas.MoveTo(round(tx6+x0),round(y0-ty6));
Canvas.LineTo(round(tx7+x0),round(y0-ty7));
Canvas.MoveTo(round(tx7+x0),round(y0-ty7));
Canvas.LineTo(round(tx3+x0),round(y0-ty3));
Canvas.MoveTo(round(tx7+x0),round(y0-ty7));
Canvas.LineTo(round(tx8+x0),round(y0-ty8));
Canvas.MoveTo(round(tx8+x0),round(y0-ty8));
Canvas.LineTo(round(tx5+x0),round(y0-ty5));
Canvas.MoveTo(round(tx8+x0),round(y0-ty8));
Canvas.LineTo(round(tx2+x0),round(y0-ty2));
end;
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
x0:=form1.Width div 2;
y0:=form1.Height div 2;
x1:=StrTofloat(txtx1.Text);
y1:=StrTofloat(txty1.Text);
sisi:=StrTofloat(txtsisi.Text);
x2:=x1;
y2:=x1+sisi;
x3:=x1+sisi;
y3:=y2;
x4:=x3;
y4:=y1;
x5:=x1+round(sisi/2);
y5:=y1+round(sisi/3);
x6:=x5+sisi;
y6:=y5;
x7:=x6;
y7:=y6+sisi;
x8:=x5;
y8:=y7;
sx:= StrToFloat(txtskala.Text);
sx1 := x1*sx;
sx2 := x2*sx;
sx3 := x3*sx;
sx4 := x4*sx;
sx5 := x5*sx;
sx6 := x6*sx;
sx7 := x7*sx;
sx8 := x8*sx;
sy1 := y1*sx;
sy2 := y2*sx;
sy3 := y3*sx;
sy4 := y4*sx;
sy5 := y5*sx;
sy6 := y6*sx;
sy7 := y7*sx;
sy8 := y8*sx;
with form1 do
begin
Refresh;
Canvas.MoveTo(round(sx1+x0),round(y0-sy1));
Canvas.LineTo(round(sx2+x0),round(y0-sy2));
Canvas.MoveTo(round(sx2+x0),round(y0-sy2));
Canvas.LineTo(round(sx3+x0),round(y0-sy3));
Canvas.MoveTo(round(sx3+x0),round(y0-sy3));
Canvas.LineTo(round(sx4+x0),round(y0-sy4));
Canvas.MoveTo(round(sx4+x0),round(y0-sy4));
Canvas.LineTo(round(sx1+x0),round(y0-sy1));
Canvas.MoveTo(round(sx1+x0),round(y0-sy1));
Canvas.LineTo(round(sx5+x0),round(y0-sy5));
Canvas.MoveTo(round(sx5+x0),round(y0-sy5));
Canvas.LineTo(round(sx6+x0),round(y0-sy6));
Canvas.MoveTo(round(sx6+x0),round(y0-sy6));
Canvas.LineTo(round(sx4+x0),round(y0-sy4));
Canvas.MoveTo(round(sx6+x0),round(y0-sy6));
Canvas.LineTo(round(sx7+x0),round(y0-sy7));
Canvas.MoveTo(round(sx7+x0),round(y0-sy7));
Canvas.LineTo(round(sx3+x0),round(y0-sy3));
Canvas.MoveTo(round(sx7+x0),round(y0-sy7));
Canvas.LineTo(round(sx8+x0),round(y0-sy8));
Canvas.MoveTo(round(sx8+x0),round(y0-sy8));
Canvas.LineTo(round(sx5+x0),round(y0-sy5));
Canvas.MoveTo(round(sx8+x0),round(y0-sy8));
Canvas.LineTo(round(sx2+x0),round(y0-sy2));
end;
end;
end.

Tidak ada komentar:

Posting Komentar