Rabu, 08 April 2015

PROGRAM ROTASI GRAFIKA KOMPUTER MEMBUAT KINCIR ANGIN



PRAKTIKUM GRAFIKA KOMPUTER DAN MULTIMEDIA








DI SUSUN
OLEH :
NAMA                                    : ISPANDI
NIM                                        : 1220305094
KELAS                                   : N3 SORE
DOSEN PEMBIMBING        : MURSYIDAH,S.T.,M.T


PROGRAM STUDI TEKNIK MULTIMEDIA DAN JARINGAN
JURUSAN TEKNIK ELEKTRO
POLITEKNIK NEGERI LHOKSEUMAWE
2015

LEMBAR PENGESAHAN

Judul Praktikum                                  : “Rotasi”      
No. Praktikum                                     : 07/N3/TMJ/2015      
Nama Pratikan                                                : ISPANDI
Nim                                                     : 1220305095
Kelas/Semester                                    : N3 / VI (Genap)
Jurusan/Prodi                                      : Teknik Elektro / TMJ
Tanggal Praktikum                              : 02 April 2015
Tanggal Pengesahan                            : 09 April 2015






                      Mengetahui,
                 Dosen Pembimbing                                                Praktikan                    


   MURSYIDAH, ST., M.T                                           ISPANDI
   NIP.                                                                               NIM.1220305094

PRAKTIKUM 7
ROTASI

I.                   TUJUAN
1.                  Mahasiswa dapat membuat program untuk membuat obek menjadi Berputar.
2.                  Mahasiswa mampu menjelaskan dan memahami setiap kode program

II.                DASAR TEORI
A.    Pengenalan Transformasi Dasar 2D
Setelah suatu objek grafis dibangun, kita dapat melakukan transformasi terhadap objek grafis tersebut dengan berbagai cara tanpa menambahkan komponen baru apapun pada objek grafis tersebut. Ada banyak cara untuk melakukan transformasi objek grafis, tapi beberapa cara transformasi yang  umum adalah :
1.      Translasi : objek dipindahkan ke lokasi baru tanpa mengubah bentuk, ukuran atau orientasinya.
2.      Rotasi : objek dirotasi (diputar) terhadap titik tertentu tanpa mengubah bentuk dan ukurannya
3.      Scalling : objek diperbesar atau diperkecil. objek dapat diskalakan menggunakan faktor yang sama baik secara horisontal maupun vertikal sehingga proporsinya tetap atau bisa menggunakan faktor yang berbeda yang akan menyebabkan objek tersebut menjadi lebih lebih tinggi, lebih pendek, lebih tipis atau lebih tebal.
Translasi dan rotasi disebut juga sebagai rigid body transformation yaitu transformasi yang hanya mengubah posisi objek, tanpa mengubah bentuknya




a.      Translasi
Translasi adalah transformasi paling sederhana yang dapat diterapkan pada suatu objek grafis. Secara sederhana translasi adalah memindahkan objek grafis dari satu tempat ke tempat lain tanpa mengubah tampilan dan orientasi.
Untuk menghasilkan translasi dari suatu objek grafis, kita menambahkan konstanta Tx pada koordinat x dan konstanta Ty pada koordinat Y, formula ini diterapkan pada semua titik pada objek yang akan ditranslasikan.
Pada prakteknya untuk mentranslasikan objek grafis, tentu saja kita tidak harus
menghitung semua titik pada objek tersebut, tetapi cukup titik-titik pentingnya saja.
Contoh untuk memindahkan garis, cukup dihitung titik awal dan akhir saja kemudian
gambarkan garis dari kedua titik tersebut. Contoh kedua untuk memindahkan lingkaran
cukup menghitung titik pusat lingkaran kemudian dengan menggunakan algoritma penggambaran lingkaran, lingkaran dengan posisi baru bisa dibentuk.
b.       Rotasi
Diktat Kuliah Grafika Komputer  Rotasi suatu image adalah memutar objek terhadap titik tertentu di bidang xy. Bentuk dan ukuran objek tidak berubah. Untuk melakukan rotasi perlu diketahui sudut rotasi θ dan pivot point (Xp,Yp) atau titik rotasi dimana objek dirotasi. NIlai positif dari sudut rotasi menentukan arah rotasi berlawanan dengan jarum jam dan sebaliknya nilai negative akan memutar objek searah jarum jam
Rotasi yang paling sederhana adalah rotasi dengan pivot point di titik pusat koordinat sistem yaitu (0,0). Pada gambar 5.xx terlihat titik (x,y) dirotasi terhadap titik pusat koordinat sistem dengan sudut θ, sudut terhadap sumbu x adalah sebesar Ф. Dengan menggunakan trigonometri dasar dapat dihitung bahwa
GLUT (OpenGL Utility Toolkit) adalah hasil pengembangan dari openGL yang didesain dengan level kecil dan menengah yang menggunakan function untuk menambah interaksi dari user. GLUT dipilih karena di dalamnya telah terdapat banyak fungsi yang dapat dipakai untuk pembuatan application window. Disamping itu, windowing pada GLUT juga bersifat independen terhadap sistem operasi, sehingga user tidak perlu mengubah kode program jika diterapkan pada sistem operasi yang berbeda.
Tabel 1. Beberapa perintah GLUT
Perintah
Arti
Keterangan
glVertex2i(x,y);
Lokasi titik berada di (x,y)
Tipe argumennya adalah integer dan 2 dimensi yaitu x dan y
glVertex2f(x,y);
Lokasi titik berada di (x,y)
Tipe argumennya adalah float dan 2 dimensi yaitu x dan y
glVertex3i(x,y,z);
LoLokasi titik berada di (x,y,z)
Tipe argumennya adalah integer dan 2 dimensi yaitu x, y dan z
glVertex3f(x,y,z);
Lokasi titik berada di (x,y,z)
Tipe argumennya adalah float dan 2 dimensi yaitu x, y dan z
glClearColour(R, G, B, α);
Warna latar belakang
Empat komponen warna yaitu Red, Green, Blue dan alpha
glColor3f(R, G, B);
Warna lata rmuka (pena)
Tiga komponen warna yaitu Red, Green dan Blue
glColor4f(R, G, B, α);
Warna latar muka (pena)
Empat komponen warna yaitu Red, Green, Blue dan alpha
glPointSize(k);
Ukuran titik k piksel
Besar kecilnya ukuran titik tergantung pada k (integer)
glBegin(GL_POINTS);
Titik
Objek primitive
glBegin(GL_LINES);
Garis
Objek primitive
glBegin(GL_LINE_STRIP);
Poligaris
Objek primitive
glBegin(GL_LINE_LOOP);
Poligaris tertutup (polygon)
Objek primitive
glBegin(GL_TRIANGLES);
Segitiga
Objek primitive
glBegin(GL_TRIANGLE_STRIP);
Segitiga
Objek primitive
glBegin(GL_TRIANGLE_FAN);
Segitiga
Objek primitive
glBegin(GL_QUADS);
Segiempat
Objek primitive
glBegin(GL_QUAD_STRIP);
Segiempat
Objek primitive
glBegin(GL_POLYGON);
Poligon
Objek primitive
glBegin(GL_LINE_STIPPLE);
Garis putus-putus
Objek primitive
glBegin(GL_POLY_STIPPLE);
Poligon dengan polatertentu
Objek primitive
glRect(GLint x1, GLint y1, GLint x2, GLint y2);
Segiempat siku-siku
Objek primitive dan ukuran segiempat ditentukan oleh dua titik yaitu (x1,y1) dan (x2



III.             ALAT DAN BAHAN
1.      CPU
2.      Monitor
3.      Keyboard
4.      Mouse
5.      Job sheet praktikum
6.      Software Microsoft Visual Studio 2012


IV.             LANGKAH KERJA
1.      Menghidupkan komputer untuk menjalankan program visual studio
2.      Setelah itu membuka aplikasi microsoft visual studio 2012 dengan cara klik 2x  pada shortcut icon        microsoft visual studio 2012.
3.      Kemudian Membuat project baru dengan cara pilih menu File-->New-->Project
 
4.      Kemudian memilih Visual C++àEmpty Project, dan membuat nama project dengan nama Titik, dan menententukan tempat penyimpanan project, dengan cara klik Browse.. setelah it klik OK.

5.      Pada jendela Solution Explorer, klik kanan pada Source FilesàAddàNew Item.
6.      Setelah itu akan muncul jendela baru seperti gambar dibawah ini, pilih  Visual C++àC++ File (.cpp), buat nama file tersebut, jika sudah klik Add.

7.      Langkah selanjutnya mengetik program dibawah ini.

v  Program :
#include <stdlib.h>
#include <glut.h>

int x=0, y=0;
void Draw()
{
   glBegin(GL_TRIANGLES);
   glClear(GL_COLOR_BUFFER_BIT);
   glVertex2i(-50, 100);
   glColor3f(0,0,1);
   glVertex2i(50, 100);
   glColor3f(0,1,0);
   glVertex2i(0, 0);
   glColor3f(0,0,1);
   glVertex2i(0, 0);
   glVertex2i(-50, -100);
   glVertex2i(50, -100);
   glEnd();
   glFlush();
}
void display(void)
{
   glClear(GL_COLOR_BUFFER_BIT);
   glPushMatrix();
   glRotatef( x, 0, 0, 1);
   Draw();
   glPopMatrix();
   glPushMatrix();
   glRotatef( y, 0, 0, 1);
   Draw();
   glPopMatrix();
   glFlush();
  
}

void timer(int value)
{
   //tuliskan varibel yang berubah nilainya disini
   x +=15;
   y -=15;
   glutPostRedisplay();
   glutTimerFunc(500,timer,10);
}
void main(int argc, char **argv)
{
   glutInit(&argc, argv);
   glutInitDisplayMode(GLUT_DEPTH | GLUT_SINGLE | GLUT_RGBA);
   glutInitWindowPosition(100,100);
   glutInitWindowSize(640,480);

   glutCreateWindow("HASIL_ISPANDI");
   gluOrtho2D(-320.,320.,-320.,320.);
   glutDisplayFunc(display);
   glutTimerFunc(500, timer, 10);
   glutMainLoop();
}
                              
 Output:


VI.             KESIMPULAN
Setelah melakukan praktikum dapat disimpulkan bahwa membuat sebuah program pada visual studio harus sudah menggunakan glut. Karena jika glutnya tidak ada maka program yang dijalankan tidak bisa dibaca atau dikenali.
Pada program diatas yaitu untuk membuat sebuah objek rotasi dimana objek berputar untuk membuat objek berputar kita menggunakan perintah opengl yaitu glRotatef. Sebelum membuat objek berputar terlebih dahulu kita buat objek apa yang ingin kita gambarkan kemudian baru setelah itu baru kita beri sintak glRotatef untuk membuat rotasi pada gambar, kemudian tentaukan timer atau pun kecepatan rotasi pada objek x+1,z+1, atau pun x+5,z+5 agar perputaran objek semakin cepat.