BAB I
PENDAHULUAN
1.1
Latar Belakang
Pada bidang ilmu Grafika Komputer tentunya tidak
dapat terlepas dari pembuatan dan manipulasi gambar (visual) secara digital.
Bentuk sederhana dari grafika komputer adalah grafika komputer 2D yang kemudian
berkembang menjadi grafika komputer 3D, pemrosesan citra (image processing),
dan pengenalan pola (pattern recognition). Grafika komputer sering dikenal juga
dengan istilah visualisasi data.
Dalam pemodelan objek dua dimensi (2D),
didapati berbagai objek dapat dimodelkan menurut kondisi tertentu, objek yang dimodelkan
itu perlu dimodifikasi. Pemodifikasian objek ini dapat dilakukan dengan melakukan
berbagai operasi fungsi atau operasi transformasi geometri. Transformasi ini dapat berupa
transformasi dasar ataupun gabungan dari berbagai transformasi geometri. Contoh transformasi
geometri adalah translasi, penskalaan, putaran (rotasi), balikan, shearing dan gabungan.
Transformasi ini dikenal dengan transformasi affine. Pada dasarnya, transformasi ini adalah
memindahkan objek tanpa merusak bentuk.
1.2
Tujuan
1. Mahasiswa
dapat mengerti dan mengetahui Tranformasi 2D translasi.
2. Mahasiswa
dapat melihat objek dari sudut pandang yang berbeda.
3. Mahasiswa
dapat menginplementasikan tranformasi 2D mengunakan open GL
BAB II
LANDASAN TEORI
2.1 Transformasi
Transformasi merupakan suatu metode
untuk mengubah lokasi suatu titik pembentuk objek, sehingga objek tersebut
mengalami perubahan. Perubahan objek dengan mengubah koodinat dan ukuran suatu
objek di sebut denga transformasi geometri komputer merupakan salah satu
transdirmator yang cukup ideal pada grafika komputer kemungkinan untuk mengubah
bentuk atau penampilan dari suatu obek sangat luas bahkan untuk mengganti objek
itu sendiri secarra permanen.
Transformasi di perlukan untuk mengubah
( Transform) posisis suatu objek dari tempat asal ke posisi elemen grafik,
transformasi juga di perlukan untuk memutarkan posisi suatu objek pada titik pusat,
mengubah ukuran objek dan menarik sebagian objek sehingga tampak terdistorsi.ada
dua cara yang dapat di gunakan untuk mentransformasi gambar yaitu:
·
Transformasi objek
Didefinisikan
untuk mengubah koordinat – koordinat dari tiap titik di objek dengan beberapa
aturan, meninggalkan underlying sistem koordinat yang tidak bisa di ubah lagi.
·
Transformasi koordinat
Didefinisikan
system koordinat yang baru dibuat sebelumnya merupakan perwakilan dari seua
titik objek dalam sistem yang baru.
Bentuk-bentuk
transformasi secara umum adalah sebagai berikut :
·
Translasi ( mengeser )
·
Skala ( merubah ukuran )
·
Rotasi ( memutar )
2.1.1
Translasi
Translasi merupakan suatu operasi yang menyebabkan perpindahan objek 2D dari
satu tempat ke tempat yang lain. Perubahan ini berlaku dalam arah yang sejajar
dengan sumbu X dan sumbu Y. Translasi dilakukan dengan penambahan translasi
pada suatu titik koordinat dengan translation vector, yaitu (tx,ty), dimana tx
adalah translasi menurut sumbu x dan ty adalah translasi menurut sumbu y.
Koorinat baru titik yang ditranslasi dapat diperoleh dengan menggunakan rumus :
·
X” = x + tx (x,y) = titik asal sebelum
translasi
·
Y”= y + ty (x‟,y‟) = titik baru hasil
translasi
Adapun pengertian yang
lain bahwa Translasi merupakan bentuk transformasi yang memindahkan posisi
suatu objek, baik pada sumbu x, sumbu y, maupun sumbu z. dalam translasi
dua dimensi diperlukaan dua parameter, yaitu pemindahan kearah sumbux dan ke
arah sumbu y. Fungsi yang di gunakan adalah :
·
glTranslatef (Tx,Ty,Tz)
·
glTranslated (Tx,Ty,Tz)
parameter Tx digunakan
untuk menentukan arah dan seberapa jauh suatu benda akan dipindahkan
berdasarkan sumbu x. Ty digunakan untuk menentukan arah dan seberapajauh suatu
benda akan dipindahkan berdasarkan sumbu y. Sedangkan parameter Tz digunakan
untuk menentukan arah dan seberapajauh suatu benda akan dipindahkan berdasarkan
sumbu z(berlaku pada model 3D)
Gambar 2.1.1.1 Ilustrasi Tranlasi
2.1.2
Skala
Penskalaan
adalah suatu operasi yang membuat suatu objek berubah ukurannya baik menjadi
mengecil ataupun membesar secara seragam atau tidak seragam tergantung pada
faktor penskalaan (scalling factor) yaitu (sx,sy) yang diberikan. sx adalah
faktor penskalaan menurut sumbu x dan sy faktor penskalaan menurut sumbu y.
Koordinat baru diperoleh dengan
·
X” = x + sx (x,y) = titik asal sebelum
diskala
·
y”= y + sy (x‟,y‟) = titik setelah
diskala
Nilai lebih dari 1 menyebabkan objek
diperbesar, sebaliknya bila nilai lebih kecil dari 1, maka objek akan
diperkecil. Bila (sx,sy) mempunyai nilai yang sama, maka skala disebut dengan
uniform scalling. Fungsi yang digunakan untuk melakukan skala iadalah :
·
glScalef(Sx, Sy, Sz)
·
glScaled(Sx, Sy, Sz)
Berbeda
dengan transformasi translasi yang tidak mengubah bentuk objek, transformasi
skala akan mengubah bentuk objek sebesat skala Sx dab Sy’ , sehingga :
(Qx,Qy)=
(Px*Sy*Sy)
Transformasi
skala dilakukan terhadap titik pusat (0,) karena setiap titil p akan digeser
sebesar Sx dari titik pusat dalam sumbu x dan sejauh Sy dalam sumbu Y. Apabila
matrik M berisi nilai negative maka akan diperoleh pencerminan terdahap sumbu v
dan Y.jika kedua factor skala berisi nilai yang sama, Sx=Sy=s maka akan
diperoleh uniform scaling, dimana objek akan diperbesar pada kedua sumbu besar,
jika 0<s<1 maka akandiperoleh objek yang diperkecil (demagnification).
Jika factor skala tidak sama , maka akan diperoleh penskalaan defernsial. Jika
salah satu dari factor skala sama dengan 1 maka akan diperoleh transfornasi
strain.
2.1.3
Rotasi
Putaran
adalah suatu operasi yang menyebabkan objek bergerak berputar pada titik pusat
atau pada sumbu putar yang dipilih berdasarkan sudut putaran tertentu. Untu
melakukan rotasi diperlukan sudut rotasi dan pivot point (xp,yp) dimana objek
akan dirotasi. Putaran biasa dilakukan pada satu titik terhadap sesuatu sumbu
tertentu misalnya sumbu x, sumbu y atau garis tertentu yang sejajar dengan
sembarang sumbu tersebut. Titik acuan putaran dapat sembarang baik di titik
pusat atau pada titik yang lain. Aturan dalam geometri, jika putaran dilakukan
searah jarum jam, maka nilai sudutnya adalah negatif. fungsi yang digunakan
untuk melakukan rotasi adalah
·
glRotatef(Ѳ, Rx, Ry, Rz)
·
glRotated(Ѳ, Rx, Ry, Rz)
Parameter
yang dibutuhkan pada fungsi tersebut ada 4 macam, yaitu parameter Ѳ untuk besar
sudut putaran. Sudut rotasi adalah besaran yang menentukan seberapa jauh
sebuah
titik
akan diputar. Parameter Rx untuk putaran berdasarkan sumbu x, parameter Ry
untuk putaran berdasarkan sumbu y, parameter Rz untuk putaran berdasarkan sumbu
z. Jika parameter Ѳ bernilai positif, maka objek akan diputar berlawanan arah
jarum jam, sedangkan jika parameter Ѳ bernilai negatif, maka akan diputar
searah jarum jam.
Operasi
rotasi dapat diuraikan sebagai berikut :
a) Rotasi
dari titik P yang berada di sumbu x, P(x, 0) menjadi P’(x’, y’) dapat
digambarkan dengan :
·
x’ = x .cos θ
·
y’ = x.sin θ
b) Rotasi
dari titik P yang berada di sumbu y, P(y, 0) menjadi P’(x’, y’) dapat
digambarkan dengan :
·
x’ = -y .cos θ
·
y’ = y.sin θ
c) Rotasi
dari titik P(x, y) menjadi P’(x’, y’) merupakan kombinasi dari kedua macam
transformasi di atas :
·
R = Rx + Ry.
·
X’ = xp +(x - xp) cos θ – (y - yp)
sin θ
·
Y’ = yp + (x – xp) sin θ + (y – yp)
cos θ
Gambar
2.1.3.1 Ilustrasi Rotasi
BAB III
SOURCE CODE
#include<gl/glut.h>
GLfloat xRotated, yRotated, zRotated ;
//deklarasi
void Display(void)//menampilkan
{
glClear(GL_COLOR_BUFFER_BIT);
glLoadIdentity();
glTranslatef(-1.00,-1.00,-0.0);
glTranslatef(xRotated,yRotated,zRotated);//tranformasi
//glRotatef(xRotated,1.0,0.0,0.0);
//glRotatef(yRotated,0.0,1.0,0.0);
//glRotatef(zRotated,0.0,0.0,1.0);
//glScalef(2.0,1.0,1.0) ; //skala
(besar kecilnya)
glBegin(GL_LINES);
glColor3f(1.0f, 0.0f, 1.0f);
//
untuk menentukan titik K :
glVertex3f(-0.60, 0.00, 0.00);
glVertex3f(-0.60, 0.50,
0.00);
glVertex3f(-0.60, 0.00,
0.00);
glVertex3f(-0.60, 0.30,
0.00);
glVertex3f(-0.60, 0.30,
0.00);
glVertex3f(-0.50, 0.50,
0.00);
glVertex3f(-0.60, 0.30, 0.00);
glVertex3f(-0.50, 0.00,
0.00);
// Untuk
menentukan titk E:
glVertex3f(-0.45, 0.00,
0.00);
glVertex3f(-0.45, 0.50,
0.00);
glVertex3f(-0.45, 0.50,
0.00);
glVertex3f(-0.35, 0.50,
0.00);
glVertex3f(-0.45, 0.00,
0.00);
glVertex3f(-0.35, 0.00,
0.00);
glVertex3f(-0.45, 0.00,
0.00);
glVertex3f(-0.45, 0.25,
0.00);
glVertex3f(-0.45, 0.25,
0.00);
glVertex3f(-0.35, 0.25,
0.00);
//
Untuk menentukan titik L :
glVertex3f(-0.30, 0.00,
0.00);
glVertex3f(-0.30, 0.50, 0.00);
glVertex3f(-0.30, 0.00,
0.00);
glVertex3f(-0.20, 0.00,
0.00);
//untuk menentukan titik O :
glVertex3f(-0.15 , 0.00,
0.00);
glVertex3f(-0.15 , 0.50,
0.00);
glVertex3f(-0.15 , 0.50, 0.00);
glVertex3f(-0.05 , 0.50,
0.00);
glVertex3f(-0.05 , 0.50, 0.00);
glVertex3f(-0.05 , 0.00,
0.00);
glVertex3f(-0.05 , 0.00,
0.00);
glVertex3f(-0.15 , 0.00,
0.00);
// Untuk
menentukan titik M :
glVertex3f(0.00 , 0.00, 0.00);
glVertex3f(0.00 , 0.50,
0.00);
glVertex3f(0.00 , 0.50, 0.00);
glVertex3f(0.10 , 0.00,
0.00);
glVertex3f(0.10 , 0.00, 0.00);
glVertex3f(0.20 , 0.50,
0.00);
glVertex3f(0.20 , 0.00,
0.00);
glVertex3f(0.20 , 0.50,
0.00);
//Untuk menentukan titik P :
glVertex3f(0.25 , 0.00,
0.00);
glVertex3f(0.25 , 0.50,
0.00);
glVertex3f(0.25 , 0.50,
0.00);
glVertex3f(0.40 , 0.50,
0.00);
glVertex3f(0.40 , 0.50,
0.00);
glVertex3f(0.40 , 0.30,
0.00);
glVertex3f(0.40 , 0.30,
0.00);
glVertex3f(0.25 , 0.30,
0.00);
// Untuk menentukantitik O :
glVertex3f(0.45 , 0.00,
0.00);
glVertex3f(0.45 , 0.50,
0.00);
glVertex3f(0.45 , 0.50,
0.00);
glVertex3f(0.55 , 0.50,
0.00);
glVertex3f(0.55 , 0.50,
0.00);
glVertex3f(0.55 , 0.00,
0.00);
glVertex3f(0.55 , 0.00,
0.00);
glVertex3f(0.45 , 0.00,
0.00);
// Untuk menentukan titik K :
glVertex3f(0.60, 0.00,
0.00);
glVertex3f(0.60, 0.50,
0.00);
glVertex3f(0.60, 0.00, 0.00);
glVertex3f(0.60, 0.30,
0.00);
glVertex3f(0.60, 0.30,
0.00);
glVertex3f(0.70, 0.50,
0.00);
glVertex3f(0.60, 0.30,
0.00);
glVertex3f(0.70, 0.00,
0.00);
// Untuk menentukan titik 1 :
glVertex3f(0.80, 0.00,
0.00);
glVertex3f(0.80, 0.50,
0.00);
glVertex3f(0.80, 0.50,
0.00);
glVertex3f(0.75, 0.30,
0.00);
glVertex3f(0.80, 0.00,
0.00);
glVertex3f(0.80, 0.50,
0.00);
glVertex3f(0.80, 0.00,
0.00);
glVertex3f(0.75, 0.00,
0.00);
glVertex3f(0.80, 0.00,
0.00);
glVertex3f(0.85, 0.00,
0.00);
glEnd();
glFlush();
glutSwapBuffers();
}
void Idle (void)
{
xRotated +=0.0001; //mengukur
kecepatan
yRotated +=0.0001;
zRotated +=0.0001;
Display();
}
nt
main(int argc, char **argv )
{
glutInit(&argc, argv);
glutInitWindowSize(1080, 720);
glutInitDisplayMode(GLUT_DOUBLE |
GLUT_RGB);
glutCreateWindow("A N I M A S I
");
glPolygonMode(GL_FRONT_AND_BACK,GL_LINE);
xRotated,yRotated,zRotated =0;
glClearColor (0.0,0.0,0.0,0.0);
glutDisplayFunc(Display);
glutIdleFunc(Idle);
glutMainLoop();
return 0;
}
DAFTAR
PUSTAKA
Fatima
, 2013 , open gl glut , https://fatimatuspendtium.wordpress.com , (diakses
pada 13 juni 2016).
Fikri
Muhammad, 2012, membuat animasi garis dengan open GL, http://mufiks.blogspot.co.id/ , (diakses pada 13 juni 2016).
Heriady,
2015, Pengantar Komputer grafis http://heriadyblog.blogspot.co.id/, (diakses pada 13 juni 2016).
Rosyidah
Bintih , 2013 Transformasi Objek , http://rosyidah-binti.blogspot.co.id/, (diakses pada 13 juni 2016).
untuk full laporannya anda dapat mengunduh di link berikut :
https://drive.google.com/drive/u/0/folders/0BxxR7alBb2h_bGVrdHhua3ZVd1k
No comments:
Post a Comment