Apa tujuan transformasi geometri 2d

Dalam aplikasi grafik diperlukan perubahan bentuk, ukuran dan posisi suatu gambar yang disebut dengan manipulasi. Perubahan gambar dengan mengubah koordinat dan ukuran suatu objek disebut dengan Transformasi Geometri.

Transformasi Dasar

1. Translasi

Adalah memindahkan suatu objek sepanjang garis lurus dari suatu lokasi koordinat tertentu ke lokasi yang lain. Translasi dilakukan dengan penambahan translasi pada suatu titik koordinat dengan translation vector atau shift, yaitu(tx, ty), dimana :

tx : translasi vector sumbu x

ty : translasi vector sumbu y

      Koordinat baru titik yang ditranslasi dapat diperoleh dengan menggunakan rumus :

Dimana (x, y) adalah koordinat asal suatu objek sedangkan (x’, y’) koordinat baru objek setelah ditranslasi.

      Untuk menggambarkan translasi suatu objek yang berupa segitiga dengan koordinat   A(5,6), B(8,9), dan C(4,7) dengan translation vector (2,3), pertama-tama dihitung koordinat hasil translasi satu demi satu.

      Titik A (5,6)             Vektor (2,3)

Hasil translasi titik A’ (7,9)

Titik B (8,9)             Vektor (2,3)

= 8 + 2                =  9 + 3

Hasil translasi titik B’ (10,12)

Titik C (4,7)             Vektor (2,3)

Hasil translasi titik C’ (6,10)

Dengan demikian hasil translasi segitiga dengan koordinat A’(7,9) B’(10,12)  C’(6,10).  Segitiga yang baru sama bentuknya dengan segitiga yang lama.

Contoh prosedur algoritma translasi dalam Borland Delphi

Procedure Tfrom1.GambarClick(Sender.Tobject);

if ((IsiX1.Text=”)or(IsiX2.Text=”)or(IsiY1.Text=”)or(IsiY2.Text=”)or(IsiX1.Text=”)or

(IsiX2.Text=”)or(IsiY1.Text=”)or(IsiY2.Text=”))then

messageDlg(‘X1,Y1,X2 dan Y2 harus diisi’,mtWarning, [mbOk],0)

x1:=strtoint(isiX1.Text);

y1:=strtoint(isiY1.Text);

x3:=strtoint(isiX2.Text);

y3:=strtoint(isiY2.Text);

PainBox1.Canvas.Brush.Color:=claqua;

PainBox1.Canvas.Polygon([Ponit(x1,y1),Point(x2,y2),Point(x3,y3)]);

Transformasi skala adalah perubahan ukuran suatu objek. Koordinat baru diperoleh  dengan   melakukan  perkalian nilai koordinat dengan skala factor, yaitu (sx,sy) dimana

sx  = skala factor untuk sumbu x

sy  = skala factor untuk sumbu y.

Koordinat  baru titik yang diskala dapat diperoleh dengan :

      Skala factor sx dan sy dapat diberikan sembarang nilai positif.  Nilai lebih dari 1 menandakan bahwa sebuah objek diperbesar sedangkan nilai-nilai kurang dari 1 menunjukkan bahwa objek diperkecil.

     Untuk menggambarkan skala suatu objek yang merupakan segi empat dengan koordinat A(3,4), B(6,4), C(3,3), D(6,3) diskala dengan skala faktor (2,2), pertama-tama dihitung koordinat hasil skala satu demi satu.

      Titik A (3,4)             S.Vektor (2,2)

Hasil skala titik A’ (6,8)

Titik B (6,4)             S.Vektor   (2,2)

Hasil skala titik B’ (12,8)

Titik C (3,3)             S.Vektor (2,2)

Hasil skala titik C’ (6,6)

Titik D (6,3)             S.Vektor (2,2)

Hasil skala titik D’ (12,6)

Dengan demikian hasil skala persegi panjang dengan koordinat A’(6,8) B’(12,8) C’(6,6) D’ (12,6). Persegi panjang yang baru sama bentuknya dengan persegi panjang yang lama.

Contoh prosedur algoritma skala dalam Borland Delphi

Procedure Tfrom1.GambarClick(Sender.Tobject);

if ((IsiX1.Text=”)or(IsiX2.Text=”)or(IsiY1.Text=”)or(IsiY2.Text=”)or(IsiX1.Text=”)or

(IsiX2.Text=”)or(IsiY1.Text=”)or(IsiY2.Text=”))then

messageDlg(‘X1,Y1,X2 dan Y2 harus diisi’,mtWarning, [mbOk],0)

{transformasi untuk memperbesar dan memperkecil}

Kali:=strtofloat(IsiPil.text);

PaintBox1.Canvas.Brush.Color:=clblue;

PaintBox1.Canvas.Polygon([Point(x1,y1),Point(x2,y2),Point(x3,y3),Point(x4,y4)]);

Rotasi dua dimensi pada suatu objek akan memindahkan objek tersebut menurut garis melingkar.  Untuk melakukan rotasi diperlukan sudut rotasi  θ dan pivot point (xp,yp).  Nilai positif dari sudut rotasi menentukan arah rotasi berlawanan dengan arah jarum jam.  Sedangkan sudut rotasi negatif menurut objek searah dengan jarum jam.  Rotasi suatu titik terhadap pivot point (xp, yp) menggunakan bentuk trigonemetri, sebagai berikut :

x’ = xp + (x – xp) cos θ – (y – yp) sin θ

y’ = yp + (x – xp) sin θ + (y – yp) cos θ

      Untuk menggambarkan rotasi suatu objek yang berupa segitiga dengan koordinat A(12,13) B(22,23) C(22,13) dengan sudut rotasi 300 terhadap titik pusat koordinat Cartesian (2,3), dilakukan dengan menghitung koordinat hasil rotasi tiap titik satu demi satu.

Titik A (12,13)             K. Cartesian (2,3)

x’  = xp + (x – xp) cos θ – (y – yp) sin θ

     = 2 + ( 12-2) cos 30 – (13-3) sin 30

     = 2 + 10 . 0,9 – 10 . 0,5

y’ = yp + (x – xp) sin θ + (y – yp) cos θ

     = 3 + (12-2) sin 30 + (13-3) cos 30

     = 3 + 10 . 0,5 + 10 . 0.9

Hasil rotasi titik A’ (6.17)

Titik B (22,23)             K. Cartesian (2,3)

x’ = xp + (x – xp) cos θ – (y – yp) sin θ

     = 2 + ( 22-2) cos 30 – (23-3) sin 30

     = 2 + 20 . 0,9 – 20 . 0,5

y’ = yp + (x – xp) sin θ + (y – yp) cos θ

     = 3 + (22-2) sin 30 + (23-3) cos 30

     = 3 + 20 . 0,5 + 20 . 0.9

Hasil rotasi titik B’ (10,31)

Titik C (22,13)             K. Cartesian (2,3)

x’ = xp + (x – xp) cos θ – (y – yp) sin θ

     = 2 + ( 22-2) cos 30 – (13-3) sin 30

     = 2 + 20 . 0,9 – 10 . 0,5

y’ = yp + (x – xp) sin θ + (y – yp) cos θ

    = 3 + (22-2) sin 30 + (13-3) cos 30

    = 3 + 20 . 0,5 + 10 . 0.9

Hasil rotasi titik C’ (15,22)

         Dengan demikian hasil rotasi segitiga dengan koordinat A’(6,17) B’(10,31) C’(15,22)

Segitiga yang baru sama bentuknya dengan segitiga yang lama.

Contoh prosedur algoritma rotasi dalam Borland Delphi

Procedure Tfrom1.TransformasiClick(Sender.Tobject);

{tranformasi untuk memutar}

if ((IsiX1.Text=”)or(IsiX2.Text=”)or(IsiY1.Text=”)or(IsiY2.Text=”)or(IsiX1.Text=”)or

(IsiX2.Text=”)or(IsiY1.Text=”)or(IsiY2.Text=”))then

messageDlg(‘X1,Y1,X2 dan Y2 Pengisian Data Belum Lengkap’,mtWarning, [mbOk],0)

if  radiotransformasi.itemindex=0 then

tet:=strtoint(IsiPil.text);

temp.x1:=xn+round((x1-xn)*(cos(s))-(y1-yn)*(sin(s)));

temp.x2:=xn+round((x2-xn)*(cos(s))-(y2-yn)*(sin(s)));

temp.x3:=xn+round((x3-xn)*(cos(s))-(y3-yn)*(sin(s)));

temp.y1:=yn+round((x1-xn)*(sin(s))-(y1-yn)*(cos(s)));

temp.y2:=yn+round((x2-xn)*(sin(s))-(y2-yn)*(cos(s)));

temp.y3:=yn+round((x3-xn)*(sin(s))-(y3-yn)*(cos(s)));

PaintBox1.Canvas.Bursh.Color:=clred;

Paintbox1.canvas.polygon([Point(x1,y1),Point(x2,y2),Point(x3,y3)]);

“Mudah-Mudahan Bermanfaat”

Video yang berhubungan

Postingan terbaru

LIHAT SEMUA