Monday, February 13, 2017

TRANFORMASI ANIMASI MENGUNAKAN TRANSLASI

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

PERKEMBANGAN JARINGAN FIBER OPTIK

PERKEMBANGAN JARINGAN FIBER OPTIK Disusun Oleh : Dejan Habiburrahman NPM:065114353; Kelas:  Universitas Pakuan Abstrak Ja...