GRAPHICS AND VISUALIZATION · PDF file · 2012-11-02arti masih terdapat kesahalan....
Transcript of GRAPHICS AND VISUALIZATION · PDF file · 2012-11-02arti masih terdapat kesahalan....
1
GRAPHICS AND VISUALIZATION
MAKALAH
Logo
Oleh :
Ade Johar Maturidi NIM. P31.2007.00352
UNIVERSITAS MUHAMMADIYAH CIREBON
TAHUN 2007
2
KATA PENGANTAR
Assalamu’alaikum wr. wb.
Alhamdulillah, puji syukur kita panjatkan kehadirat Allah SWT yang dengan
rahmat dan hidayahNya kita dapat berada dalam nikmat Iman dan Islam, dan dengan
izinNya pula makalah ini telah selesai disusun untuk kemudian menjadi bermanfaat bagi
kita semua.
Makalah ini ada beberapa bagian yang menjadi pokok bahasan antara lain:
1. Mengenal perbedaan menggambar pada Image dan pada Paintbox dalam
Pemrograman DELPHI
2. Membuat Vektor Grafik 2 Dimensi dengan Pemrograman DELPHI
3. Membuat Vektor Grafik 3 Dimensi dengan Pemrograman DELPHI
Semoga apa yang telah terselesaikan dalam makalah ini dapat bermanfaat bagi kita
semua. Tak lupa pula saya mengucapkan permohonan maaf apabila dalam tulisan maupun
arti masih terdapat kesahalan. Saya sampaikan pula rasa terima kasih kepada semua pihak
yang telah membantu dalam proses penyelesaian makalah ini dan semoga dukungan baik
moril maupun materil mendapatkan balasan dari Allah SWT.
Akhirnya, kita berharap Allah SWT tetap memberi petunjuk dan bimbingan kepada
kita semua dan senantiasa menyertai gerak langkah kita. Amien.
Wassalamu’alaikum Wr. Wb.
Ade Johar Maturidi
3
PRAKTIKUM 1
”Mengenal perbedaan menggambar pada Image dan pada Paintbox
dalam Pemrograman DELPHI”
1. Deklarasi Pertama (awal)
Pada deklarasi awal dibuat tombol-tombol untuk Image dan Paintbox seperti
gambar di bawah ini :
Kemudian gambar di bawah ini merupakan kode-kode program pada Delphi.
Kode-Kode Program pada Delphi :
unit coba;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, Buttons;
type
TForm1 = class(TForm)
Image1: TImage;
PaintBox1: TPaintBox;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Edit2: TEdit;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
BitBtn3: TBitBtn;
4
BitBtn4: TBitBtn;
BitBtn5: TBitBtn;
BitBtn6: TBitBtn;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure PaintBox1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure PaintBox1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure Button4Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
procedure BitBtn4Click(Sender: TObject);
procedure BitBtn5Click(Sender: TObject);
procedure BitBtn6Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
Implementation
{$R *.dfm}
5
2. Tombol untuk menyimpan gambar ke komputer
procedure TForm1.BitBtn5Click(Sender: TObject);
begin
Image1.Picture.SaveToFile('d:\test.bmp');
end;
3. Tombol untuk meng-load gambar dari komputer
procedure TForm1.BitBtn5Click(Sender: TObject);
begin
Image1.Picture.SaveToFile('d:\test.bmp');
end;
4. Tombol untuk memulai pengetesan antara Image dan Paintbox
procedure TForm1.BitBtn2Click(Sender: TObject);
var t1,t2: LongInt;
i : Integer;
begin
image1.Canvas.pen.width := 2;
t1:=getTickCount;
for i := 1 to 9000 do image1.canvas.lineto(random(300),random(300));
t2 := getTickCount;
label1.caption := intTostr(t2-t1) +'ms';
paintbox1.canvas.pen.width := 2;
t1:=getTickCount;
for i := 1 to 9000 do paintbox1.canvas.lineto(random(300),random(300));
t2 := getTickCount;
label2.caption := IntToStr(t2-t1) +'ms';
end;
6
5. Tombol untuk menghentikan pengetesan
procedure TForm1.BitBtn3Click(Sender: TObject);
begin
close;
end;
6. Tombol untuk menghapus Image dan menggantinya dengan warna biru
procedure TForm1.BitBtn1Click(Sender: TObject);
var rect: TRect;
begin
rect:= Bounds(0,0,image1.width,image1.height);
image1.Canvas.Brush.Color := clblue;
image1.canvas.FillRect(rect);
7
end;
7. Tombol untuk menghapus Paintbox dan menggantinya dengan warna merah
procedure TForm1.BitBtn6Click(Sender: TObject);
var rect: TRect;
begin
rect:= Bounds(0,0,image1.width,image1.height);
PaintBox1.Canvas.Brush.Color := clRED;
PaintBox1.canvas.FillRect(rect);
end;
8
8. Fungsi untuk membuat garis lurus di Image dan mengukur posisi mouse
procedure Tform1.Image1MouseDown(Sender: Tobject; Button: TmouseButton;
Shift: TshiftState; X, Y: Integer);
begin
if shift = [ssright] then begin
image1.Canvas.TextOut(x,y,IntToStr(x) + ‘:’ + IntToStr(y));
end;
end;
procedure Tform1.Image1MouseMove(Sender: Tobject; Shift: TshiftState; X,
Y: Integer);
begin
if shift = [ssleft] then image1.Canvas.LineTo(x,y);
end;
9. Fungsi untuk membuat garis lurus di Paintbox dan mengukur posisi mouse
procedure Tform1.PaintBox1MouseDown(Sender: Tobject; Button: TmouseButton;
Shift: TshiftState; X, Y: Integer);
begin
if shift = [ssright] then begin
PaintBox1.Canvas.TextOut(x,y,IntToStr(x) + ‘:’ + IntToStr(y))
end;
end;
procedure Tform1.PaintBox1MouseMove(Sender: Tobject; Shift: TshiftState; X,
Y: Integer);
begin
if shift = [ssleft] then PaintBox1.Canvas.LineTo(x,y);
end;
9
10. Tampilan Program
a. Perbandingan antara Image dan Paintbox
b. Hasil Perbandingan
Percobaan ke Image Paintbox
1.
2.
3.
4.
5.
c. Hasil Perbandingan Setelah gambar di simpan di komputer dan dipanggil
kembali adalah
Percobaan ke Image Paintbox
1.
2.
3.
4.
5.
d. Gambar di Image maupun di PaintBox dihapus, lantas dengan
menggunakan mouse kita dapat membuat garis dan mengetahui posisi (x,y)
11. Analisa dan Kesimpulan
a. ...
b. ...
c. ...
10
PRAKTIKUM 2
“ Membuat Vektor Grafik 2 Dimensi dengan Pemrograman DELPHI“
1. Deklarasi Pertama (awal)
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
Timer1: TTimer;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Button5: TButton;
Button6: TButton;
Button7: TButton;
Button8: TButton;
Button9: TButton;
Panel1: TPanel;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button9Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure Button7Click(Sender: TObject);
procedure Button8Click(Sender: TObject);
procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
private
{ Private declarations }
public
{ Public declarations }
11
end;
var
Form1: TForm1;
alf, { Sudutputar }
si,co, { Sinus dan Kosinus }
mf, { factor Skala }
x0,y0: single; { Basis koordinat absolut }
sf : integer; { factor Cerminan }
dirFlg : boolean; { flag arah }
var x1,y1,x2,y2 :Integer;
mausTaste :Boolean;
implementation
{$R *.dfm}
2. Deklarasi Prosedur untuk desain bentuk rumah
procedure dwc (dx1,dy1,R : single); { gambar lingkaran relatif }
var x1,y1 : single;
begin
dx1 := mf * dx1;
dy1 := mf * dy1;
R := mf * R;
x1 := x0 + dx1 * co - sf * dy1 * si;
y1 := y0 - sf * dy1 * co - dx1 * si;
form1.canvas.ellipse(round(x1-r),round(y1-r),round(x1+r),round(y1+r));
End;
procedure dwl (dx1,dy1 : single); { gambar garis relatif }
var x1,y1 : single;
begin
dx1 := mf * dx1;
dy1 := mf * dy1;
x1 := x0 + dx1 * co - sf * dy1 * si;
y1 := y0 - sf * dy1 * co - dx1 * si;
form1.canvas.Lineto(round(x1),round(y1));
End;
procedure dwp (dx1,dy1:single); { gambar titik relatif }
var x1,y1 : single;
begin
dx1 := mf * dx1;
dy1 := mf * dy1;
x1 := x0 + dx1 * co - sf * dy1 * si;
y1 := y0 - sf * dy1 * co - dx1 * si;
form1.canvas.moveto(round(x1),round(y1));
End;
12
procedure drawHouse; { gambar rumah }
begin
dwp(0, 10); { sisi depan }
dwl(10, 10); dwl(10, 0); dwl(0, 0); dwl(0, 10);
dwp(1, 8); { jendela }
dwl(4, 8); dwl(4, 4); dwl(1, 4); dwl(1, 8);
dwp(6, 0); { Pintu }
dwl(6, 8); dwl(9, 8); dwl(9, 0); dwl(6, 0);
dwp(-1, 9); { Atap }
dwl(5, 15); dwl(11, 9);
dwc(5, 12, 1); { fentilasi }
dwp(7, 13); { pondasi Antena }
dwl(7, 16); dwl(9, 16); dwl(9, 11);
End;
3. Prosedur untuk mengatur tampilan gambar
procedure TForm1.FormCreate(Sender: TObject);
begin
x0 := clientWidth / 2;
y0 := clientHeight / 2;
alf := 0;
sf := 1;
mf := 20;
canvas.brush.style:= bsclear;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
mf := mf + 1; { Perbesar Gambar }
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
mf := mf - 1; { Perkecil Gambar }
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
sf := -sf; { Cerminan Gambar }
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
13
dirFlg := Not dirFlg; { arah putaran }
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
form1.refresh;
If dirFlg Then
alf := alf + Pi / 100 { putaran sesuai dengan arah jarum jam }
Else
alf := alf - Pi / 100; { putaran melawan arah jarum jam }
si := Sin(alf);
co := Cos(alf);
drawHouse;
end;
4. Source Code pengembangan
procedure TForm1.FormCreate(Sender: TObject);
begin
mausTaste := False;
Canvas.Pen.Mode := pmNotXor;
Canvas.Pen.Style := psdash;
end;
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; x, y: Integer);
begin
Canvas.Brush.Style:=bsClear;
x1 := x; y1 := y;
x2 := x; y2 := y;
Canvas.Rectangle (x1, y1,x2, y2);
mausTaste := True
end;
5. Prosedur untuk mengulang tampilan output grafik
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
Panel1.Caption := IntToStr(x)+ ':' + IntToStr(y);
if not mausTaste then exit;
Canvas.Rectangle (x1, y1,x2, y2);
x2 := x; y2 := y;
Canvas.Rectangle (x1, y1,x2, y2)
end;
14
procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin mausTaste := False end;
6. Tampilan Program
Sesudah program dijalankan gambar berputar melawan arah jarum jam (dengan
lebar langkah sebesar 1/8 derajat). Dengan bantuan tombol-tombol gambar dapat
dimanipulasi secara Online.
Sebagai dasar pengembangan adalah dengan 2 kali pemakaian XOR dengan 2 Nilai
(dalam hal ini adalah Warna) akan kembali ke bentuk awal. Mode XOR-dapat
dicapai dengan melalui Mode-Property dariObjek Pen. Cara ini juga dapat untuk
membentuk Windows.
7. Analisa dan Kesimpulan
15
A. PRAKTIKUM 3
”Membuat Vektor Grafik 3 Dimensi
dengan Pemrograman DELPHI“
1. Deklarasi Pertama (awal)
Kode-kode Program Delphi :
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Buttons, StdCtrls;
type
TForm1 = class(TForm)
Button3: TButton;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
BitBtn3: TBitBtn;
BitBtn4: TBitBtn;
BitBtn5: TBitBtn;
BitBtn6: TBitBtn;
BitBtn7: TBitBtn;
BitBtn8: TBitBtn;
BitBtn9: TBitBtn;
BitBtn10: TBitBtn;
BitBtn11: TBitBtn;
16
BitBtn12: TBitBtn;
BitBtn13: TBitBtn;
BitBtn14: TBitBtn;
procedure FormCreate(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure BitBtn1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure BitBtn1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure BitBtn2MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure BitBtn3MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure BitBtn4MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure BitBtn5MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure BitBtn6MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure BitBtn7MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure BitBtn8MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure BitBtn9MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure BitBtn10MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure BitBtn11MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure BitBtn12MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure BitBtn13Click(Sender: TObject);
procedure BitBtn14Click(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
17
implementation
uses unit2,unit3;
{$R *.dfm}
var form2 : TForm2;
ok : boolean;
perintah : integer;
procedure TForm1.FormCreate(Sender: TObject);
begin
form2 := tform2.Create(Self);
form2.Show;
left := screen.width-width;
top := screen.height-height;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
ok := false;
close
end;
procedure TForm1.BitBtn1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
perintah :=1;
end;
procedure TForm1.BitBtn1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
perintah :=0;
end;
procedure TForm1.BitBtn2MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
perintah := 2;
end;
procedure TForm1.BitBtn3MouseDown(Sender: TObject; Button: TMouseButton;
18
Shift: TShiftState; X, Y: Integer);
begin
perintah :=3;
end;
procedure TForm1.BitBtn4MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
perintah :=4;
end;
procedure TForm1.BitBtn5MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
perintah :=5;
end;
procedure TForm1.BitBtn6MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
perintah := 6;
end;
procedure TForm1.BitBtn7MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
perintah :=7;
end;
procedure TForm1.BitBtn8MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
perintah := 8;
end;
procedure TForm1.BitBtn9MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
perintah:=9;
end;
procedure TForm1.BitBtn10MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
perintah:=10;
19
end;
procedure TForm1.BitBtn11MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
perintah:=11;
end;
procedure TForm1.BitBtn12MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
perintah:=12;
end;
procedure TForm1.BitBtn13Click(Sender: TObject);
var lop:integer;
begin
ok := true;
init(form2);
gambar(figur1);
while ok do begin
case perintah of
1 : scaling(figur1,1.04);
2 : scaling(figur1,0.96);
3 : rotasi(figur1,0,1,0);
4 : rotasi(figur1,0,-1,0);
5 : rotasi(figur1,1,0,0);
6 : rotasi(figur1,-1,0,0);
7 : rotasi(figur1,0,0,1);
8 : rotasi(figur1,0,0,-1);
9 : translasi(figur1,0,1,0);
10 : translasi(figur1,-2,0,0);
11 : translasi(figur1,2,0,0);
12 : translasi(figur1,0,-2,0);
end;
if perintah <> 0 then gambar(figur1);
//for ax := 1 to 1000000 do begin
application.processMessages;
//a :=Sin(ax) + a;
for lop:=1 to 100000000 do;
//end;
end;
end;