• Tidak ada hasil yang ditemukan

876b4 bab iii transformasi 2d

N/A
N/A
Protected

Academic year: 2018

Membagikan "876b4 bab iii transformasi 2d"

Copied!
39
0
0

Teks penuh

(1)
(2)

3.1 Konsep Transformasi

Transformasi artinya menggerakkan obyek. Ada 2 macam transformasi, yaitu:

1. Transformasi geometri sistem koordinat diam & obyek bergerak (gerak obyek secara umum).

2. Transformasi koordinat sistem koordinat bergerak & obyek diam (pembuatan film, kamera digerakkan

di atas rel, pemainnya diam).

Kedua transformasi ini saling inverse

Cukup dibahas satu tipe saja yaitu transformasi geometri

Transformasi koordinat sebagai inverse.

3.1 Konsep Transformasi

Transformasi artinya menggerakkan obyek. Ada 2 macam transformasi, yaitu:

1. Transformasi geometri sistem koordinat diam & obyek bergerak (gerak obyek secara umum).

2. Transformasi koordinat sistem koordinat bergerak & obyek diam (pembuatan film, kamera digerakkan

di atas rel, pemainnya diam).

Kedua transformasi ini saling inverse

Cukup dibahas satu tipe saja yaitu transformasi geometri

Transformasi koordinat sebagai inverse.

(3)

Transformasi dibagi 2 kelompok besar:

1. Transformasi Dasar yang terdiri dari:

Translasi dengan vektor arah v = ai + bjRotasi terhadap titik (0,0)

Scaling terhadap titik (0,0)

Pencerminan terhadap sumbu x atau sumbu yShearing/Deformasi

2. Transformasi Lanjut yang terdiri dari:

Rotasi terhadap titik (a,b)Scaling terhadap titik (a,b)

Pencerminan terhadap garis y = a, x = a atau y = mx + b

Catatan:

Transformasi lanjut dicirikan tersusun dari beberapa

Transformasi dibagi 2 kelompok besar:

1. Transformasi Dasar yang terdiri dari:

Translasi dengan vektor arah v = ai + bjRotasi terhadap titik (0,0)

Scaling terhadap titik (0,0)

Pencerminan terhadap sumbu x atau sumbu yShearing/Deformasi

2. Transformasi Lanjut yang terdiri dari:

Rotasi terhadap titik (a,b)Scaling terhadap titik (a,b)

Pencerminan terhadap garis y = a, x = a atau y = mx + b

Catatan:

(4)

Transformasi sebenarnya adalah operasi vektor.

Vektor dapat alih-alih sebagai matrik

So: Transformasi direpresentasikan sebagai operasi matrik.

Penyeragaman bentuk matrik.

- Semua operasi transformasi 2 dimensi direprsentasikan dengan matrik 3x3,

T11 T12 T13

T21 T22 T23

x

y

1 T21 T22 T23

T31 T32 T33

- koordinat titik (x,y) direpresentasikan

dengan matri 3 x 1:

Prinsip operasi transformasi adalah perkalian matrik,

kolom matrik pertama harus sama dgn baris matrik kedua.

(5)

3.2 Konsep Obyek 2 Dimensi

Obyek adalah kumpulan dari koordinat titik. Ada 2 macam obyek, yaitu:

Obyek bersegi-N yaitu obyek yang berbentuk segi-N.

Obyek ini dapat diwakili oleh koordinat titik-titik sudutnya Direpresentasikan dengan matrik 3 x N

X1 X2 …. Xn X1 X2 …. Xn

Y1 Y2 …. Yn

1 1 1 1

Type obyek adalah:

Matrik3N = array[1..3, 1..N] of real

Data obyek diisikan dalam StringGrid dengan FixedCol = 1, FixedRow = 0, RowCount = 2 dan ColCount = N+1

(6)

Agar dalam StringGrid tampak kata x dan y maka dibuat procedure FormCreate pada Form1.

Klik 2 kali pada tempat kosong Form dan ketikkan:

procedure TForm1.FormShow(Sender: TObject); begin

StringGrid1.Cells[0,0] := ‘x’; StringGrid1.Cells[0,1] := ‘y’; end;

Kolom StringGrid menyatakan banyaknya titik sudut (segi N) Klik 2 kali StringGrid1 dan ketikkan

procedure TForm1.StringGrid1Click(Sender: TObject); begin

N := StrToInt(edN.Text);

StringGrid1.ColCount := N + 1; end;

Agar dalam StringGrid tampak kata x dan y maka dibuat procedure FormCreate pada Form1.

Klik 2 kali pada tempat kosong Form dan ketikkan:

procedure TForm1.FormShow(Sender: TObject); begin

StringGrid1.Cells[0,0] := ‘x’; StringGrid1.Cells[0,1] := ‘y’; end;

x

y

(7)

Procedure Obyek2D (var Obyek : matrik3N); Var

i, j : integer; Begin

N := StrToInt (Form1.edN.Text); For i := 1 to 2 do

For j := 1 to N do

Obyek [i,j] :=StrToFloat(Form1.StringGrid1.Cells[j,i-1]); For j := 1 to N do

Obyek [3, j ] := 1; End;

Untuk mengambil nilai obyek dari StringGrid digunakan procedure tak standar dengan nama Obyek2D.

Procedure Obyek2D (var Obyek : matrik3N); Var

i, j : integer; Begin

N := StrToInt (Form1.edN.Text); For i := 1 to 2 do

For j := 1 to N do

Obyek [i,j] :=StrToFloat(Form1.StringGrid1.Cells[j,i-1]); For j := 1 to N do

(8)

Untuk menggambar obyek dibentuk procedure tak standar sbb.

Form1.Canvas.MoveTo(trunc(X0 + Obyek[1,N]), trunc(Y0 - Obyek[2,N])); Form1.Canvas.LineTo(trunc(X0 + Obyek[1,1]),

trunc(Y0 - Obyek[2,1])); end;

Untuk menggambar obyek dibentuk procedure tak standar sbb.

procedure GambarObyek2D;

Form1.Canvas.MoveTo(trunc(X0 + Obyek[1,N]), trunc(Y0 - Obyek[2,N])); Form1.Canvas.LineTo(trunc(X0 + Obyek[1,1]),

trunc(Y0 - Obyek[2,1]));

(9)

Obyek kontinyu (lingkaran, ellips, bola, sinus, dan sebagainya).

Obyek ini harus diwakili oleh semua titik penyusun obyek.

Tidak dapat direpresentasikan dgn matrik obyek bersegi-N,

Direpresentasikan sebagai matrik dari semua titik penyusun

Cara pengoperasiannya dengan perulangan sepanjang keliling bangun tersebut.

Obyek kontinyu (lingkaran, ellips, bola, sinus, dan sebagainya).

Obyek ini harus diwakili oleh semua titik penyusun obyek.

Tidak dapat direpresentasikan dgn matrik obyek bersegi-N,

Direpresentasikan sebagai matrik dari semua titik penyusun

(10)

Dalam pemrograman grafik dikenal 2 jenis perkalian matrik:

Perkalian matrik 3 x 3 dengan matrik 3 x 3

(perkalian matrik antar operator transformasi)

Perkalian matrik 3 x 3 dengan matrik 3 x N

(perkalian matrik antara operator dengan obyek).

Perkalian antar operator ditulis dalam procedure tak standar tanpa Form1 karena tidak memanggil nilai komponen Delphi. Procedure ini tidak perlu didaftarkan di kelompok type.

3.3 PERKALIAN MATRIK 2 DIMENSI

Perkalian antar operator ditulis dalam procedure tak standar tanpa Form1 karena tidak memanggil nilai komponen Delphi. Procedure ini tidak perlu didaftarkan di kelompok type.

Operator transformasi bertype

matrik33 = array[1..3, 1..3] of real

(11)

Procedure MatrikKaliTransformasi2D (var Tr1 : matrik33; Tr2 : matrik33);

Var

i, j, k : integer; Hasil : matrik33; Begin

Hasil[i, k] := Hasil[i,k] + Tr1[i,j] * Tr2[j,k]; End;

Tr1 := Hasil; End;

Hasil perkalian Tr1 dengan Tr2 diletakkan di variable Tr1.

Procedure MatrikKaliTransformasi2D (var Tr1 : matrik33; Tr2 : matrik33);

Var

i, j, k : integer; Hasil : matrik33; Begin

Hasil[i, k] := Hasil[i,k] + Tr1[i,j] * Tr2[j,k]; End;

Tr1 := Hasil; End;

(12)

Perkalian antara operator dengan obyek ditulis dalam procedure tak standar tanpa Form1.

Procedure MatrikKaliTransforObyek2D(var Obyek : matrik3N; Tr : matrik33);

Var

i, j, k : integer; Hasil : matrik3N; Begin

Hasil[i,k] := Hasil[i,k] + Tr[i,j] * Obyek[j,k]; End;

Obyek := Hasil; End;

Hasil perkalian Tr dengan Obyek diletakkan di variable Obyek.

Perkalian antara operator dengan obyek ditulis dalam procedure tak standar tanpa Form1.

Procedure MatrikKaliTransforObyek2D(var Obyek : matrik3N; Tr : matrik33);

Var

i, j, k : integer; Hasil : matrik3N; Begin

Hasil[i,k] := Hasil[i,k] + Tr[i,j] * Obyek[j,k]; End;

Obyek := Hasil; End;

Hasil perkalian Tr dengan Obyek diletakkan di variable Obyek.

(13)

Sifat translasi: x’ = x + a

y’ = y + b

3.4.1.Translasi 2D Tv

Perpindahan obyek dengan vektor arah v = a i + b j. a = besarnya perpindahan pada sumbu x b = besarnya perpindahan pada sumbu y

v = a i + b j

P’(x’, y’)

3.4 Transformasi Geometri Dasar

Sifat translasi: x’ = x + a

y’ = y + b

v = a i + b j

P(x, y)

(0,0)

x x’ x + a

P(x,y) = y P’(x’,y’) = y’ = y + b

1 1 1

(14)

Persamaan matriknya: P’ = Tv o P 3 x 1 3 x 3 3 x 1

x + a T11 T12 T13 x

y + b = T21 T22 T23 o y

1 T31 T32 T33 1

x + a T11. x + T12. y + T13. 1

y + b = T21. x + T22. y + T23. 1

1 T31. x + T32. y + T33. 1 1 T31. x + T32. y + T33. 1

Dari persamaan antar sel diperoleh nilai:

T11 = 1 T12 = 0 T13 = a

T21 = 0 T22 = 1 T23 = b

T31 = 0 T32 = 0 T33 = 1 1 0 a

Tv = 0 1 b

0 0 1

4/19/2013 14

Komputer grafik widjianto

(15)

Procedure MatrikTranslasi2D (var Tv : matrik33; a, b : real);

Sedang procedure translasi terhadap suatu obyek dituliskan:

Procedure TForm1.btTranslasiObyekClick(Sender: Tobject); Begin

a := StrToFloat(eNilaiA.Text); b := StrToFloat(eNilaiB.Text); Obyek2D(Obyek);

MatrikTranslasi2D(Tv, a, b);

MatrikKaliTransforObyek2D(Obyek,Tv); GambarObyek2D;

Procedure MatrikTranslasi2D (var Tv : matrik33; a, b : real); Begin

Tv[1,1] := 1 ; Tv[1,2] := 0 ; Tv[1,3] := a ; Tv[2,1] := 0 ; Tv[2,2] := 1 ; Tv[2,3] := b ; Tv[3,1] := 0 ; Tv[3,2] := 0 ; Tv[3,3] := 1 ;

End;

Sedang procedure translasi terhadap suatu obyek dituliskan:

Procedure TForm1.btTranslasiObyekClick(Sender: Tobject); Begin

a := StrToFloat(eNilaiA.Text); b := StrToFloat(eNilaiB.Text); Obyek2D(Obyek);

MatrikTranslasi2D(Tv, a, b);

(16)

Catatan:

-Translasi dari titik (x1, y1) ke titik (x2, y2) ditentukan oleh vektor arah

v = (x2 – x1) i + (y2 – y1) j dimana a = x2 – x1 dan b = y2 –y1.

-Translasi dari titik (0, 0) ke titik (x1, y1) ditentukan oleh vektor arah

v = (x1) i + (y1) j dimana a = x1 dan b = y1.

- Translasi dari titik (x1, y1) ke titik (0, 0) ditentukan oleh vektor arah

v = (-x1) i + (-y1) j dimana a = - x1 dan b = - y1.

Catatan:

-Translasi dari titik (x1, y1) ke titik (x2, y2) ditentukan oleh vektor arah

v = (x2 – x1) i + (y2 – y1) j dimana a = x2 – x1 dan b = y2 –y1.

-Translasi dari titik (0, 0) ke titik (x1, y1) ditentukan oleh vektor arah

v = (x1) i + (y1) j dimana a = x1 dan b = y1.

- Translasi dari titik (x1, y1) ke titik (0, 0) ditentukan oleh vektor arah

v = (-x1) i + (-y1) j dimana a = - x1 dan b = - y1.

(17)

3.4.2 Rotasi Terhadap Titik (0,0)

Ro,α

P’(x’,y’)

P(x,y)

Y

r r

y’

- Sudut rotasi positif jika unclockwise - Sudut putar diubah ke dalam radian.

P(x,y) dlm bentuk trigonometri:

x = r cos ∂ dan y = r sin ∂

- Memutar obyek dengan titik putar (0,0).

P(x,y)

X y

r

x (0,0) x’

α

Sedangkan titik P’(x’,y’) dalam bentuk trigonometri:

x’ = r cos (α + ∂) = r cos α cos ∂ - r sin α sin ∂ = x cos α - y sin α

(18)

Persamaan matriknya: P’ = Ro,α o P 3 x 1 3 x 3 3 x 1

x cos α - y sin α R11 R12 R13 x

x sin α + y cos α = R21 R22 R23 o y

1 R31 R32 R33 1

x cos α - y sin α R11. x + R12. y + R13. 1

x sinα + y cos α = R21. x + R22. y + R23. 1

1 R31. x + R32. y + R33. 1 1 R31. x + R32. y + R33. 1

Dari persamaan antar sel diperoleh:

R11 = cos α R12 = - sin α R13 = 0 R21 = sin α R22 = cos α R23 = 0

R31 = 0 R32 = 0 R33 = 1 Ro,α = cos αsin α cos α- sin α 00

0 0 1

Sehingga matrik rotasi:

(19)

procedure MatrikRotasi2D (var R : matrik33; sudut : real);

var

Radian : real;

begin

procedure TForm1.btRotasiObyekClick(Sender: Tobject); Begin

Sudut := StrToFloat(eSudut.Text); Obyek2D(Obyek);

MatrikRotasi2D(R, sudut);

MatrikKaliTransforObyek2D(Obyek , R); GambarObyek2D;

procedure MatrikRotasi2D (var R : matrik33; sudut : real);

var

Radian : real;

begin

procedure TForm1.btRotasiObyekClick(Sender: Tobject); Begin

Sudut := StrToFloat(eSudut.Text); Obyek2D(Obyek);

MatrikRotasi2D(R, sudut);

MatrikKaliTransforObyek2D(Obyek , R); GambarObyek2D;

(20)

P(x’,y’) Y

So,sx,sy

3.4.3 Scaling Terhadap Titik (0,0)

So,sx,sy

- Mengubah ukuran obyek dengan acuan titik (0,0). - sx = faktor scaling pada sumbu x

- sy = faktor scaling pada sumbu y

Sifat scaling

x’ = sx . x & y’ = sy. y

X (0,0)

P(x,y)

So,sx,sy

Persamaan matriknya: P’ = So,sx,sy o P 3 x 1 3 x 3 3 x 1

Sifat scaling

x’ = sx . x & y’ = sy. y

(21)

sx . x S11 S12 S13 x

sy . y = S21 S22 S23 o y

1 S31 S32 S33 1

sx . x S11. x + S12. y + S13. 1

sy . y = S21. x + S22. y + S23. 1

1 S31. x + S32. y + S33. 1

Dari persamaan antar sel diperoleh:

S11 = sx S12 = 0 S13 = 0

S21 = 0 S22 = sy S23 = 0

S31 = 0 S32 = 0 S33 = 1

sx 0 0

So,sx,sy = 0 sy 0

0 0 1

(22)

procedure MatrikScaling2D (var S : matrik33; sx, sy : real);

Sedangkan procedure scaling terhadap suatu obyek:

procedure TForm1.btScalingObyekClick(Sender: Tobject); Begin

Sx := StrToFloat(eSkalaX.Text); Sy := StrToFloat(eSkalaY.Text); Obyek2D(Obyek);

MatrikScaling2D(S, sx, sy);

MatrikKaliTransforObyek2D(Obyek , S); GambarObyek2D;

end;

procedure MatrikScaling2D (var S : matrik33; sx, sy : real);

begin

S[1,1] := sx ; S[1,2] := 0 ; S[1,3] := 0 ; S[2,1] := 0 ; S[2,2] := sy ;S[2,3] := 0 ; S[3,1] := 0 ; S[3,2] := 0 ; S[3,3] := 1 ; end;

Sedangkan procedure scaling terhadap suatu obyek:

procedure TForm1.btScalingObyekClick(Sender: Tobject); Begin

Sx := StrToFloat(eSkalaX.Text); Sy := StrToFloat(eSkalaY.Text); Obyek2D(Obyek);

MatrikScaling2D(S, sx, sy);

MatrikKaliTransforObyek2D(Obyek , S); GambarObyek2D;

end;

(23)

3.4.4 Pencerminan

:

P(x, y)

P’(x’, y’)

X Y

(0,0)

Sifat pencerminan terhadap sb x: x’ = x dan y’ = -y

Persamaan matriknya: P’ = Mx o P

3 x 1 3 x 3 3 x 1 Pencerminan terhadap sumbu x : Mx

x Mx11 Mx12 Mx13 x

- y = Mx21 Mx22 Mx23 o y

1 Mx31 Mx32 Mx33 1

x Mx11. x + Mx12. y + Mx13. 1

(24)

Dari persamaan antar sel diperoleh:

procedure MatrikPencerminanSumbuX (var Mx : matrik33);

begin

Mx[1,1] := 1 ; Mx[1,2] := 0 ; Mx[1,3] := 0 ; Mx[2,1] := 0 ; Mx[2,2] := -1 ; Mx[2,3] := 0 ; Mx[3,1] := 0 ; Mx[3,2] := 0 ; Mx[3,3] := 1 ; end;

procedure TForm1.btCerminXObyekClick(Sender: Tobject);

begin

Obyek2D (Obyek);

MatrikPencerminanSumbuX (Mx);

MatrikKaliTransforObyek2D (Obyek , Mx); GambarObyek2D;

end;

procedure MatrikPencerminanSumbuX (var Mx : matrik33);

begin

Mx[1,1] := 1 ; Mx[1,2] := 0 ; Mx[1,3] := 0 ; Mx[2,1] := 0 ; Mx[2,2] := -1 ; Mx[2,3] := 0 ; Mx[3,1] := 0 ; Mx[3,2] := 0 ; Mx[3,3] := 1 ; end;

procedure TForm1.btCerminXObyekClick(Sender: Tobject);

begin

Obyek2D (Obyek);

MatrikPencerminanSumbuX (Mx);

MatrikKaliTransforObyek2D (Obyek , Mx); GambarObyek2D;

(25)

-

Pencerminan terhadap sumbu y : My

P(x, y) P’(x’, y’)

X Y

(0,0)

Sifat pencerminan terhadap sumbu y: x’ = - x dan y’ = y

Persamaan matriknya: P’ = My o P

3 x 1 3 x 3 3 x 1

- x My11 My12 My13 x

- x My11 My12 My13 x

y = My21 My22 My23 o y

1 My31 My32 My33 1

-x My11. x + My12. y + My13. 1

y = My21. x + My22. y + My23. 1

(26)

procedure MatrikPencerminanSumbuY (var My : matrik33);

procedure Form1.btCerminYObyekClick(Sender: Tobject);

begin

Obyek2D (Obyek);

MatrikPencerminanSumbuY (My);

MatrikKaliTransforObyek2D (Obyek , My); GambarObyek2D;

end;

Dari persamaan antar sel diperoleh:

My11 = -1 My12 = 0 My13 = 0

procedure MatrikPencerminanSumbuY (var My : matrik33);

begin

My[1,1] := - 1 ; My[1,2] := 0 ; My[1,3] := 0 ; My[2,1] := 0 ; My[2,2] := 1 ; My[2,3] := 0 ; My[3,1] := 0 ; My[3,2] := 0 ; My[3,3] := 1 ; end;

procedure Form1.btCerminYObyekClick(Sender: Tobject);

begin

Obyek2D (Obyek);

MatrikPencerminanSumbuY (My);

MatrikKaliTransforObyek2D (Obyek , My); GambarObyek2D;

(27)

Shearing / Deformasi :

Sh, a, b

- mengubah bentuk bangun

- faktor perubah pada sumbu x - faktor perubah pada sumbu y

1 a 0

Sh,a,b = b 1 0

0 0 1

procedure MatrikShearing (var Sh : matrik33; a, b : real);

begin

Sh[1,1] := 1 ; Sh[1,2] := a ; Sh[1,3] := 0 ; Sh[2,1] := b ; Sh[2,2] := 1; Sh[2,3] := 0 ; Sh[3,1] := 0 ; Sh[3,2] := 0 ; Sh[3,3] := 1 ; end;

procedure TForm1.btSharingObyekClick(Sender: Tobject); Begin

a := StrToFloat(eNilaiA.Text);b := StrToFloat(eNilaiB.Text); Obyek2D (Obyek);

MatrikShearing (Sh, a, b);

MatrikKaliTransforObyek2D (Obyek , Sh); GambarObyek2D;

procedure MatrikShearing (var Sh : matrik33; a, b : real);

begin

Sh[1,1] := 1 ; Sh[1,2] := a ; Sh[1,3] := 0 ; Sh[2,1] := b ; Sh[2,2] := 1; Sh[2,3] := 0 ; Sh[3,1] := 0 ; Sh[3,2] := 0 ; Sh[3,3] := 1 ; end;

procedure TForm1.btSharingObyekClick(Sender: Tobject); Begin

a := StrToFloat(eNilaiA.Text);b := StrToFloat(eNilaiB.Text); Obyek2D (Obyek);

MatrikShearing (Sh, a, b);

MatrikKaliTransforObyek2D (Obyek , Sh);

GambarObyek2D;4/19/2013 27

(28)

Transformasi Obyek Kontinyu (Ellips atau Lingkaran)

Semua titik harus ditransformasikan.

Misal sebuah lingkaran dengan pusat (a,b) dan radius r akan diputar dengan sudut α terhadap titik (0,0).

Dipilih lingkaran dalam koordinat trigonometri dengan:

x = x0 + r. cos α + a

y = y0 – r. sin α + b Perkalian matriknya:P’ = Ro,α o P

Transformasi Obyek Kontinyu (Ellips atau Lingkaran)

Semua titik harus ditransformasikan.

Misal sebuah lingkaran dengan pusat (a,b) dan radius r akan diputar dengan sudut α terhadap titik (0,0).

Dipilih lingkaran dalam koordinat trigonometri dengan:

x = x0 + r. cos α + a y = y0 – r. sin α + b

cos α - sin α 0 x0 + r. cos α + a

P’ = sin α cos α 0 o y0 - r. sin α + b

0 0 1 1

4/19/2013 Komputer grafik widjianto 28

Perkalian matriknya: P’ = Ro,α o P

Hasil perkalian matrik adalah:

(29)

Procedurenya sebagai berikut.

procedure RotasiLingkaran; var

Sudut, Rad, Xhasil, YHasil : real; begin

Sudut := 0;

While sudut <= 360 do begin

Rad := sudut/180 *3.14;

Xhasil : = cos(Rad)*(x0 +r * cos(Rad)+a) - sin(Rad)* (y0 - r* sin(Rad) + b);

Yhasil : = sin(Rad)*(x0 +r * cos(Rad)+a) + cos(Rad)* (y0 - r* sin(Rad) + b);

Canvas.Pixels[trunc(Xhasil), trunc(Yhasil)] := clColor; Sudut := Sudut + 0.05;

end;

Procedurenya sebagai berikut.

procedure RotasiLingkaran; var

Sudut, Rad, Xhasil, YHasil : real; begin

Sudut := 0;

While sudut <= 360 do begin

Rad := sudut/180 *3.14;

Xhasil : = cos(Rad)*(x0 +r * cos(Rad)+a) - sin(Rad)* (y0 - r* sin(Rad) + b);

Yhasil : = sin(Rad)*(x0 +r * cos(Rad)+a) + cos(Rad)* (y0 - r* sin(Rad) + b);

Canvas.Pixels[trunc(Xhasil), trunc(Yhasil)] := clColor; Sudut := Sudut + 0.05;

(30)
(31)

3.5 Transformasi Lanjut

Trnasformasi lanjut umumnya

- Tidak mengacu pada titik (0,0), sumbu x atau sumbu y.

- Dapat berbentuk komposisi fungsi transformasi dasar.

- Bentuk transformasi lanjut biasanya rumit.

Transformasi lanjut terdiri dari:

- rotasi terhadap titik (a,b),

- scaling terhadap titik (a,b),

- pencerminan terhadap garis x = a, y = a atau y = mx + b.

3.5 Transformasi Lanjut

Trnasformasi lanjut umumnya

- Tidak mengacu pada titik (0,0), sumbu x atau sumbu y.

- Dapat berbentuk komposisi fungsi transformasi dasar.

- Bentuk transformasi lanjut biasanya rumit.

Transformasi lanjut terdiri dari:

- rotasi terhadap titik (a,b),

- scaling terhadap titik (a,b),

(32)

(0,0) Y

A(a,b)

X P(x,y)

P’(x’,y’)

r

r

α

3.5.1 Rotasi Terhadap Titik A(a,b) : Ra, α

Penurunan secara geometri sukar dilakukan.

Dipermudah dengan transformasi komposisi dari transformasi dasar.

Langkah-langkahnya sebagai berikut.

- Translasikan titik A(a,b) ke titik (0,0) Tv dengan v = -ai -bj

- Rotasikan obyek terhadap titik (0,0) Ro, α

- Translasi balik dari titik (0,0) ke titik A(a,b) T-v Langkah-langkahnya sebagai berikut.

- Translasikan titik A(a,b) ke titik (0,0) Tv dengan v = -ai -bj

- Rotasikan obyek terhadap titik (0,0) Ro, α

- Translasi balik dari titik (0,0) ke titik A(a,b) T-v

Bentuk komposisi transformasinya: Ra, α = T-v o Ro, α o Tv

(33)

cos α -sin α -a . cos α + b. sin α + a

Ra, α = sin α cos α -a . sin α - b. cos α + b

1 0 a cos α - sin α 0 1 0 -a

Ra, α = 0 1 b o sin α cos α 0 o 0 1 -b

0 0 1 0 0 1 0 0 1

Ra, α = sin α cos α -a . sin α - b. cos α + b

0 0 1

(34)

Terlebih dahulu dibuat procedure tak standar pendukung yaitu:

Procedure MatrikObyek2D (var Obyek : matrik3N);

Procedure MatrikTranslasi2D (var Tv: matrik33; a,b : real); Procedure MatrikRotasi2D (var R: matrik33; sudut : real);

Procedure MatrikKaliTransformasi2D (var Tr1: matrik33; Tr2 : matrik33);

Procedure MatrikKaliTransformasiObyek2D (var Obyek : matrik3N; Tr : matrik33); Procedure GambarObyek(Obyek);

Procedure Rotasi Obyek terhadap titik A(a,b) dapat ditulis:

Procedure Form1.btRotasiObyekAClick(Sender: Tobject);

Begin

Sudut := StrToFloat(edSudut.Text);

a:= strToFloat(eA.Text); b := StrToFloat(eB.Text); MatrikObyek2D(Obyek);

MatrikTranslasi2D(Tv1, -a, -b); MatrikTranslasi2D(Tv, a, b); MatrikRotasi2D(R, sudut);

Procedure Rotasi Obyek terhadap titik A(a,b) dapat ditulis:

Procedure Form1.btRotasiObyekAClick(Sender: Tobject);

Begin

Sudut := StrToFloat(edSudut.Text);

a:= strToFloat(eA.Text); b := StrToFloat(eB.Text); MatrikObyek2D(Obyek);

MatrikTranslasi2D(Tv1, -a, -b); MatrikTranslasi2D(Tv, a, b); MatrikRotasi2D(R, sudut);

MatrikKaliTransformasi2D(Tv, R); MatrikKaliTransformasi2D(Tv, Tv1);

MatrikKaliTransformasiObyek2D(Obyek, Tv); GambarObyek2D;

(35)

3.5.2 Scaling Terhadap Titik A(a,b) : SA,sx,sy

Langkah-langkahnya sebagai berikut.

- Translasikan titik A(a,b) ke titik (0,0) Tv v = -ai - bj - Scaling obyek terhadap titik (0,0) So,sx,sy

- Translasi balik dari titik (0,0) ke titik A(a,b) T-v

Bentuk komposisi transformasinya:

SA,sx,sy = T-v o So,sx,sy o Tv

Penurunan rumus secara geometri sukar dilakukan.

Dapat dipermudah dengan memandang transformasi sebagai komposisi dari beberapa transformasi dasar.

Langkah-langkahnya sebagai berikut.

- Translasikan titik A(a,b) ke titik (0,0) Tv v = -ai - bj - Scaling obyek terhadap titik (0,0) So,sx,sy

- Translasi balik dari titik (0,0) ke titik A(a,b) T-v

Bentuk komposisi transformasinya:

(36)

Untuk membuat procedure transformasi ini terlebih dahulu dibuat procedure tak standar pendukung yaitu:

Procedure MatrikObyek2D (var Obyek : matrik3N);

Procedure MatrikTranslasi2D (var Tv: matrik33; a,b : integer); Procedure .MatrikScaling2D (var S: matrik33; sx, sy : real);

Procedure MatrikKaliTransformasi2D(var Tr1: matrik33; Tr2 : matrik33);

Procedure MatrikKaliTransformasiObyek2D (var Obyek : matrik3N; Tr : matrik33);

Sehingga procedure Scaling Obyek terhadap titik A(a,b) dapat ditulis:

Procedure Form1.btScalingAObyek(Sender: Tobject); Begin

Sx := StrToFloat(edit1.Text); Sy := StrToFloat(edit2.Text); MatrikObyek2D (Obyek);

MatrikTranslasi2D(Tv1, -a, -b); MatrikTranslasi2D (Tv, a, b); MatrikScaling2D (S, sx, sy);

MatrikKaliTransformasi2D(S, Tv); MatrikKaliTransformasi2D(S; Tv1);

MatrikKaliTransformasiObyek2D (Obyek, S); GambarObyek2D;

End;

Sehingga procedure Scaling Obyek terhadap titik A(a,b) dapat ditulis:

Procedure Form1.btScalingAObyek(Sender: Tobject); Begin

Sx := StrToFloat(edit1.Text); Sy := StrToFloat(edit2.Text); MatrikObyek2D (Obyek);

MatrikTranslasi2D(Tv1, -a, -b); MatrikTranslasi2D (Tv, a, b); MatrikScaling2D (S, sx, sy);

MatrikKaliTransformasi2D(S, Tv); MatrikKaliTransformasi2D(S; Tv1);

MatrikKaliTransformasiObyek2D (Obyek, S); GambarObyek2D;

(37)

3.5.3 Pencerminan Terhadap Garis y = mx + b Mymxb

Dari gambar disamping m = slope garis y = mx + b,

Penurunan rumus secara geometri sukar dilakukan. Dapat dipermudah dengan memandang transformasi sebagai komposisi dari beberapa transformasi dasar.

sin α = m/( √(m2 +1))

cos α = 1/( √(m2 +1))

Penurunan rumus secara geometri sukar dilakukan. Dapat dipermudah dengan memandang transformasi sebagai komposisi dari beberapa transformasi dasar.

- Translasikan titik (0,b) ke titik (0,0) Tv dengan v = 0i -bj

- Rotasikan obyek terhadap titik (0,0) dengan sudut putar - α Ro, -α - Pencerminan terhadap sumbu x Mx

- Rotasikan balik obyek terhadap titik (0,0) dengan sudut putar α Ro, α - Translasi balik dari titik (0,0) ke titik (0,b) T-v dengan v = 0i +bj

(38)

Untuk membuat procedure transformasi ini harus dibuat dulu procedure pendukung:

Procedure MatrikObyek2D (var Obyek : matrik3N);

Procedure MatrikTranslasi2D ( var Tv: matrik33; a,b : integer); Procedure MatrikRotasi2D (var R: matrik33; sudut : real);

Procedure MatrikPencerminanX (var Mx: matrik33);

Procedure MatrikKaliTransformasi2D(var Tr1: matrik33; Tr2 : matrik33);

Procedure MatrikKaliTransformasiObyek2D (var Obyek : matrik3N; Tr : matrik33); Sehingga procedure Pencerminan Obyek

terhadap garis y = mx + b dapat ditulis:

Procedure Form1.btPencerminanObyek(Sender: Tobject); Begin

m := StrToFloat(edM.Text); b := StrtoFloat(edB.Text); sudut := arctan(m);

Canvas. MoveTo(x0,trunc(y0 - b));

Canvas.LineTo(x0 + 200,trunc(y0 - 200* m - b)); MatrikObyek2D (Obyek);

MatrikTranslasi2D (Tv1, -a, -b); MatrikTranslasi2D (Tv, a, b); MatrikRotasi2D (R, sudut); MatrikRotasi2D (R1, -sudut);

Sehingga procedure Pencerminan Obyek terhadap garis y = mx + b dapat ditulis:

Procedure Form1.btPencerminanObyek(Sender: Tobject); Begin

m := StrToFloat(edM.Text); b := StrtoFloat(edB.Text); sudut := arctan(m);

Canvas. MoveTo(x0,trunc(y0 - b));

Canvas.LineTo(x0 + 200,trunc(y0 - 200* m - b)); MatrikObyek2D (Obyek);

MatrikTranslasi2D (Tv1, -a, -b); MatrikTranslasi2D (Tv, a, b); MatrikRotasi2D (R, sudut); MatrikRotasi2D (R1, -sudut);

MatrikCerminX(Mx);

MatrikKaliTransformasi2D (Tv, R); MatrikKaliTransformasi2D (Tv, Mx); MatrikKaliTransformasi2D (Tv, R1); MatrikKaliTransformasi2D (Tv, Tv1); MatrikKaliTransformasiObyek2D

(Obyek, Tv); GambarObyek2D;

End;

(39)

Referensi

Dokumen terkait

menganalisis konsep matriks dalam sistem persamaan linear dan transformasi dalam geometri koordinat serta menerapkannya dalam memecahkan masalah nyata yang berkaitan....

Diagram alir algoritma pemrograman transformasi koordinat geodetis ke sistem koordinat kartesian 3D ……….………... Diagram alir algoritma pemrograman transformasi koordinat

I Hubungan antara satu sistem koordinat dengan sistem lainnya diformulasikan dalam bentuk rumus atau persamaan yang disebut sebagai persamaan transformasi.. I Dalam

Diagram alir algoritma pemrograman transformasi koordinat geodetis ke sistem koordinat kartesian 3D ……….………... Diagram alir algoritma pemrograman transformasi koordinat

Bila ada kelebihan volume maka Kromatografi gas adalah sistem kromatografi yang menggunakan fase gerak berupa gas dan fase diam berupa padatan atau cairan yang

11.Siswa dapat merencanakan strategi yang efektif dalam mengaplikasikan konsep matriks dalam memecahkan masalah nyata terkait transformasi geometri

Tujuan penelitian ini adalah untuk menentukan parameter transformasi yang digunakan untuk proses perubahan koordinat dari sistem koordinat datum timbalai menjadi

3.2 PELAKSANAAN PEMBUATAN SOFTWARE Pelaksanaan pembuatan software dilakukan dengan penyesuaian perancangan mekanik dan rangkaian yaitu terutama pada sistem gerak, sistem control