Anda di halaman 1dari 28

LAPORAN PRAKTIKUM

KOMPUTER GRAFIK
TRANSFORMASI 2 DIMENSI

Disusun Oleh :
Nama

: Rauzana

NIM

: 1457301097

Kelas

: 2-5/T.Informatika

Pembimbing : Muliadi , S.S.T, M.T.

KEMENTERIAN PENDIDIKAN NASIONAL


POLITEKNIK NEGERI LHOKSEUMAWE
TAHUN AJARAN 2015/2016

LEMBAR PENGESAHAN
No Praktikum

: 03 / PKG / TI / 2016

Judul Praktikum

: Transformasi 2 Dimensi

Nama Praktikan

: Rauzana

NIM

: 1457301097

Kelas

:2-5

Jurusan

: TIK

Prodi

: Teknik Informatika

Tanggal Praktikum

: 21 April 2016

Tanggal Penyerahan

: 28 April 2016

Nilai

Keterangan

Buket Rata, 28 April 2016


Pembimbing

Muliadi , S.S.T , M.T.

DAFTAR ISI
Lembar Pengesahan.................................................................................................
.................................................................................................................................2
Daftar Isi..................................................................................................................

BAB I.......................................................................................................................

Pendahuluan.............................................................................................................

1.1.Latar Belakang...................................................................................................

1.2.Tujuan Masalah..................................................................................................

13

1.3.Alat dan Bahan Praktikum.................................................................................

13

BAB II......................................................................................................................

14

Isi.............................................................................................................................

14

2.1.Langkah Percobaan............................................................................................

14

2.2.Data Hasil Percobaan.........................................................................................

22

2.3.Analisa Data.......................................................................................................

24

BAB III....................................................................................................................

27

Penutup....................................................................................................................

27

3.1.Kesimpulan........................................................................................................

27

Daftar Pustaka..........................................................................................................

28

BAB I

PENDAHULUAN
1

Latar Belakang

1.Struktur Data Titik dan Vektor


Transformasi 2 dimensi adalah suatu model atau bentuk atau teknik
memindahkan atau mengubah nilai posisi obyek dalam sistem koordinat 2 dimensi.
Pemindahan obyek ini dapat diartikan sebagai pemindahan titik. Untuk dapat
melakukan pemindahan, maka digunakan dua variabel dasar di dalam matematika
yaitu vektor dan matrik, dimana vector menunjukkan titik atau obyek yang
dinyatakan dalam vector posisi v v , v , v . Sedangkan matrik adalah sebuah
operator y z yang akan memindahkan obyek. Dari matrik inilah, macam-macam
transformasi dapat dibentuk.

Sehingga dalam transformasi ini, adalah beberapa

struktur yang harus dibuat terlebih dahulu sebelum mengimplementasikannya ke


dalam program yaitu
(1)
(2)
(3)

Struktur data titik 2D


Struktur data vector 2D
Struktur data matrik 2D

Struktur data dari titik 2D dapat didefinisikan dengan:


typedef struct
{ float x,y;
} point2D_t;

Struktur data dari vektor 2D didefinisikan dengan;


typedef struct
{ float v[3];
} vector2D_t;

Struktur data dari matrik 2D didefinisikan dengan;

typedef
struct
{
float
m[3]
[3];
} matrix2D_t;

2.Perubahan Struktur Data


Struktur data titik 2D digunakan untuk keperluan menggambar obyek ke layar
komputer, karena nilainya sudah disesuaikan dengan sistem koordinat pada layar
komputer. Sedangkan struktur data vector digunakan untuk melakukan transformasi
terhadap obyek. Sehingga bila obyek gambar ditransformasikan, hal yang harus
dilakukan adalah:
(1)

Merubah struktur data titik ke struktur data vector

(2)

Menghitung transformasi

(3)

Merubah struktur data vector ke struktur data titik

(4)

Mengambar obyek

titik
2D
v[1] x
v[2] y
v[3] 1

Vector
2D

2.1.Fungsi Point2Vector
Fungsi ini digunakan untuk memindahkan tipe data titik menjadi tipe data
vektor. Hal ini sangat berguna untuk operasional matrik yang digunakan dalam
melakukan transformasi dan pengolahan matrik pada grafika komputer.
Implementasi dari fungsi Point2Vector adalah sebagai berikut:
vector2D_t point2vector(point2D_t pnt)
{
vector2D_t vec;
vec.v[0]=pnt.x;
vec.v[1]=pnt.y;
vec.v[2]=1.;
}

2.2.Fungsi Vector2Point
Fungsi ini digunakan untuk memindahkan tipe data vektor menjadi tipe data
titik. Hal ini sangat berguna untuk penyajian grafis setelah proses pengolahan matrik
yang dikenakan pada obyek 2D.

Implementasi dari fungsi Vector2Point adalah sebagai berikut:


point2D_t vector2point(vector2D_t vec)
{
point2D_t pnt;
pnt.x=vec.v[0];
pnt.y=vec.v[1];
}

3.Transformasi 2D
Macam-macam transformasi 2D yang dapat digunakan untuk keperluan grafika

komputer antara lain:


1. Translasi
2. Scaling
3. Rotasi
3.1.Matrik Transformasi 2D
Matrik transformasi adalah matrik yang membuat sebuah obyek mengalami perubahan
baik berupa perubahan posisi, maupun perubahan ukuran. Matrik transformasi 2D
dinyatakan dalam ukuran 3x3, dimana kolom ke-3 digunakan untuk menyediakan
tempat untuk proses translasi.
3.2.Operasional Transformasi
Transformasi 2D dapat dilakukan dengan menggunakan perkalian antara matrik
transformasi dan vector posisi dari setiap titik pada obyek. Hasil transformasi ini
masih berupa vector. Operasional ini dituliskan dengan:

vhasil A.vposisi

4.Translasi
Translasi adalah perpindahan obyek dari titik P(x,y) ke titik P(x,y) secara
linier. Dalam translasi 2D diperlukan dua paramater yaitu pemindahan ke arah sumbu
x dan pemindahan ke arah sumbu y.
Implementasi fungsi untuk membuat matrik tranformasi translasi adalah sebagai
berikut:
matrix2D_t translationMTX(float dx,float dy)
{
matrix2D_t trans=createIdentity();
trans.m[0][2]=dx;
trans.m[1][2]=dy;
return trans;
}

Dalam implementasi fungsi transformasi di atas terlihat ada fungsi createIdentity(),


fungsi ini digunakan untuk membuat matrik identitas.
Matrik Identitas
Matrik identitas adalah matrik yang nilai diagonal utamanya sama dengan satu dan
lainnya nol.
Implementasi fungsi untuk membuat matrik identitas adalah:

matrix2D_t createIdentity(void)
{ matrix2D_t u;
int i,j;
for (i=0;i<3;i++) {
for(j=0;j<3;j++) u.m[i][j]=0.; u.m[i]
[i]=1.;
}
return u;
}

5. Scaling
Scaling m adalah perpindahan obyek dari titik P ke titik P, dimana jarak titik P
adalah m kali titik P.

y
P(x,y)

my.y

P(x,y)

mx.x

Matrik Transformasi dari Scaling.


Implementasi matrik tranformasi untuk scaling adalah sebagai berikut:
matrix2D_t scalingMTX(float mx,float my)
{
matrix2D_t scale=createIdentity();
scale.m[0][0]=mx;
scale.m[1][1]=my;
return scale;
}

6. Rotasi
Rotasi adalah perpindahan obyek dari titik P(x,y) ke titik P(x,y), yang berupa
pemindahan berputar sebesar sudut
y
P(x,y)

P(x,y)

7.Perkalian Matrik
Dalam transformasi posisi, selaian menyediakan fungsi-fungsi untuk
transformasi juga diperlukan beberapa pengolahan matrik, seperti penjumlahan matrik
dan perkalian matrik. Perkalian matrik merupakan hal yang penting saat dilakukan
operasional transformasi. Perkalian matrik yang dibahas dalam buku ini adalah:
(1)

Perkalian matrik dengan matrik menghasilkan matrik

(2)

Perkalian matrik dengan vektor menghasilkan vector.

8.Perkalian Matrik dengan Matrik


Perkalian matrik ini digunakan untuk operasional transformasi dari obyek 2D
dan untuk komposisi (menggabungkan) tranformasi. Perkalian matrik a dan matrik b
menghasilkan matrik c yang dirumuskan dengan:
2

cij

ik

bkj

10

dimana i dan j bernilai 0 s/d 2.


9.Perkalian Matrik dengan Vektor
Perkalian matrik ini digunakan untuk operasional transformasi dari obyek 2D
dalam menghasilkan vector baru dari titik obyek yang ditransformasikan. Perkalian
matrik a dan vector b menghasilkan vektor c yang dirumuskan dengan:
2

ci

aikbk
dimana i bernilai 0 s/d 2

10.Komposisi Transformasi
Komposisi transformasi adalah menggabungkan beberapa tranformasi,
sehingga dapat menghasilkan bentuk transformasi yang lebih kompleks. Komposisi
tranformasi dapat dilakukan dengan mengalikan matrik-matrik transformasi
Contoh Komposisi Tranformasi:

Rotasi

Translasi(d,0)

11

Komposisi transformasi dinyatakan dengan :


Rotasi().Translasi(d,0)
Dalam hal ini obyek ditranslasikan ke arah sumbu x sebesar d terlebih dahulu
kemudian diputar sebesar.
Rotasi

Translasi(d,0)

Komposisi transformasi dinyatakan dengan :


Translasi(d,0). Rotasi()
Dalam hal ini obyek diputar sebesar terlebih
ditranslasikan ke arah sumbu x sebesar d.

12

dahulu

kemudian

1.2.Tujuan Masalah
(1) Mengenal dan mengerti prinsip-prinsip transformasi 2D dalam grafika komputer
(2) Dapat mengimplementasikan transformasi 2D sebagai gerakan obyek grafik
(3) Dapat mengimplementasikan komposisi datau gabungan beberapa transformasi 2D
sebagai gerakan obyek grafik yang lebih baik.

1.3.Alat dan Bahan Praktikum


Alat

: Komputer

Bahan Praktikum : Software

13

BAB II
ISI
2.1. Langkah Percobaan
1.Percobaan Translasi

14

15

16

2.Percobaan Rotasi

17

18

19

20

21

2.2. Data Hasil Percobaan


1.Percobaan Translasi

2.Percobaan Rotasi

22

23

2.3. Analisa Data


1. pada program ini #include<stdio.h> , #include<math.h> , #include<GL/glut.h>
yaitu suatu library matematika dan opengl dalam program agar dapat
dieksekusi saat program dijalankan . typedef struct{ float x; float y;} point2D_t; yaitu
untuk digunakan bila titik didefenisikan dalam sistem koordinat dengan type data float
(pecahan). typedef struct{ float r,g,b; }color_t; yaitu untuk memberi warna pada objek
grafik . matrix2D_t createIdentity(void){matrix2D_t u;int i,j;for (i=0;i<3;i++){for
(j=0;j<3;j++) u.m[i][j]=0.;u.m[i][i]=1.;}return u;} yaitu untuk mendefinisikan dan
mengolah matrik agar dapat menampilkan sesuai dengan keinginan. matrix2D_t
translationMTX(float

dx,floatdy){matrix2D_t

trans=createIdentity();trans.m[0]

[2]=dx;trans.m[1][2]=dy;return trans;} yaitu untuk membuat gambar menjadi


bergerak

dengan

translasi.

matrix2D_trotationMTX(floattheta)

{matrix2D_trotate=createIdentity();floatcs=cos(theta);float

sn=sin(theta);rotate.m[0]

[0]=cs; rotate.m[0][1]=-sn;rotate.m[1][0]=sn; rotate.m[1][1]=cs; return rotate; yaitu


untuk membuat gambar menjadi berputar dengan menggunakan rotasi. matrix2D_t
scallingMTX(float

factorx,

float

factory){matrix2D_t

scale=createIdentity();

scale.m[0][0]=factorx; scale.m[1][1]=factory; return scale;} yaitu untuk mengubah


ukuran sesuai dengan keinginan. point2D_t Vector2Point(vector2D_t vec){ point2D_t
pnt; pnt.x=vec.v[0]; pnt.y=vec.v[1]; return pnt; yaitu untuk mendeklarasikan
vector2point yang digunakan untuk mengubah tipe data vektor menjadi tipe data
titik. }vector2D_t Point2Vector(point2D_t pnt){ vector2D_t vec; vec.v[0]=pnt.x;
vec.v[1]=pnt.y; vec.v[2]=1.; return vec; } yaitu untuk mendeklarasikan point2vektor
pada program. void setColor(color_t col){glColor3f(col.r, col.g, col.b); yaitu untuk
Mendefenisikan Object Grafik 2D. void drawLine(float x1, float y1, float x2, float y2)
{glBegin(GL_LINES);glVertex2f(x1, y1);glVertex2f(x2, y2);glEnd(); yaitu untuk
menggambar garis dengan titik x1,y1,x2 dan y2 dan menggambar titik 2 dimensi
dengan titik koordinat x1,y1 dan menggunakan tipe data float atau pecahan.

24

voiddrawPolygon(point2D_tpnt[],intn){int
i;glBegin(GL_LINE_LOOP);for(i=0;i<n;i++){ glVertex2f(pnt[i].x, pnt[i].y);}glEnd();
yaitu untuk menghubungkan satu garis dengan yang lainnya untuk membuat sebuah
bangun 2 dimensi. void userdraw(void); void display(void) yaitu untuk menggambar
objek

dan

glClear(GL_COLOR_BUFFER_BIT);userdraw();glutSwapBuffers();

dimensi.
yaitu

untuk

menghapus window dan memberi warna yang telah kita definisi pada glclearcolor dan
untuk memastikan gambar di eksekusi atau tidak . glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB);; untuk membuat tipe mode
pada window. glutInitWindowSize(640, 480); glutInitWindowPosition(100, 100);
glutCreateWindow("Translasi"); yaitu untuk Membuat windows dengan ukuran
(640,480) dengan titik kiri atas jendela diletakkan pada posisi(100,100) dilayar
komputer dan Memberi judul pada windows dengan Translasi. glClearColor(0.0,
0.0, 0.0, 0.0); yaitu Mendefinisikan warna dari windows yang dibuat dengan
warna(0,0,0) yaitu warna putih . gluOrtho2D(-320., 320., -240.0., 240.); yaitu
Mendefinisikan besarnya sistem koordinat dengan range sumbux adalah[-320,320]
dan range untuk sumbuy adalah[-240,240]. glutDisplayFunc(display); yaitu untuk
memanggil method display fungsi pada objek primitif. glutMainLoop(); yaitu untuk
mengulang fungsi atau method main yang membuat pemrosesan glut terjadi pada
program ini. return 0;} yaitu untuk membuat operasi program sudah berakhir dan
mengakhiri program tersebut .
2. pada program ini sama dengan program sebelumnya yaitu untuk menampilkan
huruf f dengan menggambar ulang huruf ef yang telah dirotasikan sebanyak 4 kali .
hanya saja berbeda kalau pada program ini menggunakan rotasi yang akan
menampilkan perputaran pada huruf f . point2D_t ef[10]={ {10,100},{10,10},
{30,10},{30,40},{60,40}, {60,60},{30,60},{30,80},{70,80},{70,100} }; yaitu untuk
mendefinisikan obyek f dengan titik yang sudah ditentukan. vector2D_t vec[10]; yaitu
untuk mendefinisikan vector obyek f. matrix2D_t rot; yaitu untuk mengoperasikan
matrik rotasi. int i, loop; yaitu untuk mendefinisikan variabel i dan loop dengan tipe

25

data integer . setColor(0,1,1); drawAxes(); yaitu untuk menentukan gambar garis yang
kita inginkan .
setColor(0,0,1);

drawPolygon(ef,10);

yaitu

untuk

menggambar

asal

rot=rotationMTX(1.); yaitu untuk parameter rotasi yang kita inginkan . for


(loop=0;loop<4;loop++){ for(i=0;i<10;i++){ yaitu dengan mengulang huruf f
sebanyak 4 dengan mendefinisikan nilai loop = 0 . vec[i]=Point2Vector(ef[i]);
vec[i]=multiply(rot, vec[i]); ef[i]=Vector2Point(vec[i]); } yaitu untuk memproses
transformasi pada rotasi yang kita tentukan . drawPolygon(ef,10); yaitu untuk
menggambar f setelah kita rotasikan huruf f tersebut . dengan program rotasi ini dapat
berpindah objek dari titik x,y ke titik xy dengan memindah sebesar sudut yang kita
inginkan .

26

BAB III
PENUTUP
3.1. KESIMPULAN
1. Transformasi 2 dimensi adalah suatu model atau bentuk atau teknik memindahkan
atau mengubah nilai posisi obyek dalam sistem koordinat 2 dimensi
2. Matrik transformasi adalah matrik yang membuat sebuah obyek mengalami
perubahan baik berupa perubahan posisi, maupun perubahan ukuran.
3. Translasi adalah perpindahan obyek dari titik P(x,y) ke titik P(x,y) secara linier.
Dalam translasi 2D diperlukan dua paramater yaitu pemindahan ke arah sumbu x dan
pemindahan ke arah sumbu y.
4. Matrik identitas adalah matrik yang nilai diagonal utamanya sama dengan satu dan
lainnya nol.
5. Scaling m adalah perpindahan obyek dari titik P ke titik P, dimana jarak titik P
adalah m kali titik P.
6. Rotasi adalah perpindahan obyek dari titik P(x,y) ke titik P(x,y).
7. Komposisi transformasi adalah menggabungkan beberapa tranformasi, sehingga
dapat menghasilkan bentuk transformasi yang lebih kompleks.

27

DAFTAR PUSTAKA
1. 2016. Modul Teori Transformasi 2 Dimensi. Politeknik Negeri Lhokseumawe.
2. 2009.

Transformasi

Obyek

Dua

Dimensi.

http://dazako.blogspot.in/2009/05/transformasi-obyek-duadimensi.html. Diakses : 24 April 2016.

28

(Online)