Anda di halaman 1dari 8

Praktikum VI

TRANSLASI DAN ROTASI MENGGUNAKAN APLIKASI VISUAL


STUDIO

1. TUJUAN
Setelah mempelajari bab ini mahasiswa diharapkan:
- Memahami transformasi dasar rotasi
- Dapat memodifikasikan program hingga menghasilkan objek yang beraneka
ragam.

2. DASAR TEORI
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 :
 Translasi : objek dipindahkan ke lokasi baru tanpa mengubah bentuk, ukuran
atau orientasinya.
 Rotasi : objek dirotasi (diputar) terhadap titik tertentu tanpa mengubah bentuk
dan ukurannya
 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

 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.
 Rotasi
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.

3. PERALATAN
Pada praktikum ini saya menggunakan laptop dan software yaitu :
- 1 Unit Laptop Lenovo ZA75
- Microsoft Visual Studio 2010
- Contoh laporan yang telah di berikan sebelumnya

4. LANGKAH PERCOBAAN
Untuk melakukan praktikum dapat mengikuti langkah-langkah / perintah di bawah
ini :
1. Jalankan program visual studio 2010 pada komputer.
2. Tunggu hingga program terbuka.
3. Klik menu File > pilih New > Klik Project.

4. Setelah keluar jendela project pilih Visual C++ > Win32 Console Application.
5. Menuliskan Nama project dan pilih lokasi tempat menyimpan file project.
6. Pada Jendela perintah ini memilih Next.

7. Kemudian memilih Empty Project.


8. Dan klik Finish.
9. Lalu klik Kanan pada project dan memilih Add > New Item

10. Memilih Visual C++ > lalu klik C++ file(.cpp)


11. Menuliskan Nama file dan Pilih lokasi penyimpanan.
12. Klik finish.
5. DATA PROGRAM :

 MEMBUAT OBJEK BIANGLALA SEDERHANA


#include<stdlib.h>
#include<glut.h>
#include<math.h>

#define PI 3.1415926535 //pendeklarasian rumus PI


float sudut = 0; //pendeklarasian sudut 0
int i,n;

void tiang(int x, int y){ // void untuk objek


glBegin(GL_POLYGON);
glColor3f(0.8,0.3,0.1); // memberikan warna pada tiang
glVertex2i(20,-300); //menggaris berdasarkan garis x = 20 dan y = -300
glVertex2i(0,0); //menggambar garis berdasarkan titik x dan y 0
glVertex2i(5,20); //menggambar garis berdasarkan x = 5 da n y= 20

glVertex2i(60,-300);
glEnd();
}

void tiang2(int x, int y){ // void untuk objek


glBegin(GL_POLYGON);
glColor3f(0.8,0.3,0.1);
glVertex2i(-20,-300);
glVertex2i(0,0);
glVertex2i(-5,-20);

glVertex2i(-60,-300);
glEnd();
}

void lingkaranTENGAH() { //menggambar lingkaran tengah pada bianglala


glBegin(GL_POLYGON);
glColor3f(0.4,0.7,0.7); //emberikan warna pada objek
for (i=0;i<=360;i++){
float sudut=i*(2*PI/180);
float x=0+50*cos(sudut);
float y=0+50*sin(sudut);
glVertex2f(x,y);
}
glEnd();
}

//BIANGLALA
void lingkaran() {

glColor3f(0.3,0.4,0.4); //DONKER CERAH


glLineWidth(10.0);
glBegin(GL_LINE_STRIP);
for (i=180;i<=360;i++){
float sudut=i*(2*PI/90);
float x=0+240*cos(sudut);
float y=0+240*sin(sudut);
glVertex2f(x,y);
}
glEnd();
}
void lingkaran2() {
glBegin(GL_POLYGON);
glColor3f(1.1,0.0,1.5); //MAGENTA
for (i=0;i<=360;i++){
float sudut=i*(2*PI/180);
float x=10+50*cos(sudut);
float y=230+50*sin(sudut);
glVertex2f(x,y);
}
glEnd();
}

void lingkaran3() {
glBegin(GL_POLYGON);
glColor3f(1.3,0.0,0.1); //MERAH
for (i=0;i<=360;i++){
float sudut=i*(2*PI/180);
float x=10+50*cos(sudut);
float y=-230+50*sin(sudut);
glVertex2f(x,y);
}
glEnd();
}

void lingkaran4() {
glBegin(GL_POLYGON);
glColor3f(0.3,0.9,0.1); //HIJAU
for (i=0;i<=360;i++){
float sudut=i*(2*PI/180);
float x=240+50*cos(sudut);
float y=-10+50*sin(sudut);
glVertex2f(x,y);
}
glEnd();
}

void lingkaran5() {
glBegin(GL_POLYGON);
glColor3f(0.3,0.2,0.5); //ABU ROKOK
for (i=0;i<=360;i++){
float sudut=i*(2*PI/180);
float x=-240+50*cos(sudut);
float y=20+50*sin(sudut);
glVertex2f(x,y);
}
glEnd();
}

void lingkaran6() {
glBegin(GL_POLYGON);
glColor3f(1.2,1.0,0.5);
for (i=0;i<=360;i++){
float sudut=i*(2*PI/180);
float x=180+50*cos(sudut);
float y=160+50*sin(sudut);
glVertex2f(x,y);
}
glEnd();
}
void lingkaran8() {
glBegin(GL_POLYGON);
glColor3f(0.0,0.8,0.7); //CYAN
for (i=0;i<=360;i++){
float sudut=i*(2*PI/180);
float x=180+50*cos(sudut);
float y=-160+50*sin(sudut);
glVertex2f(x,y);
}
glEnd();
}

void lingkaran9() {
glBegin(GL_POLYGON);
glColor3f(0.8,0.8,0.1); //KUNYIT
for (i=0;i<=360;i++){
float sudut=i*(2*PI/180);
float x=-150+50*cos(sudut);
float y=190+50*sin(sudut);
glVertex2f(x,y);
}
glEnd();
}

void lingkaran7() {
glBegin(GL_POLYGON);
glColor3f(0.7,0.6,0.5);
for (i=0;i<=360;i++){
float sudut=i*(2*PI/180);
float x=-180+50*cos(sudut);
float y=-160+50*sin(sudut);
glVertex2f(x,y);
}
glEnd();
}

void jarijari3(){ // void untuk objek garis jari jari


glLineWidth(4.0);
glBegin(GL_LINE_LOOP);
glColor3f(1.6,1.2,0.0);
glVertex2i(-180,-190);

glColor3f(0.6,1.2,0.3);
glVertex2i(180,160);

glColor3f(0.0,0.4,0.9);
glVertex2i(180,-160);

glColor3f(0.4,0.4,0.6);
glVertex2i(-150,190);
glEnd();
}
void jarijari2(){ // void untuk objek
glLineWidth(4.0);
glBegin(GL_LINE_LOOP);
glColor3f(1.6,1.2,0.0);
glVertex2i(0,240);
glColor3f(0.6,1.2,0.3);
glVertex2i(240,5);
glColor3f(0.0,0.4,0.9);
glVertex2i(-240,0);
glColor3f(0.4,0.4,0.6);
glVertex2i(5,-240);
glEnd();
}

void renderScene(void){
glClear(GL_COLOR_BUFFER_BIT);
glClearColor(1,1,1,0);

glPushMatrix();//berfungsi untuk menyimpan koordinat yang ada


glColor3f(0.7,0.7,0.7);

glRotatef(sudut,1,0,0); //disini letak fungsi utama untuk transformasi rotasi

glPopMatrix(); //memanggil suatu fungsi yang telah disimpan pada glPushMatrix


//UNTUK ROTASI
tiang2(100,10);
glPushMatrix();
glRotatef(sudut,0,0,1);//kecepatan rotasi

// pemanggilan void objek

jarijari2();
jarijari3();

lingkaran2();
lingkaran3();
lingkaran4();
lingkaran5();
lingkaran6();
lingkaran7();
lingkaran8();
lingkaran9();

lingkaran();
glPopMatrix();
glColor3f(0,0,0);

tiang(100,10);
lingkaranTENGAH();
glFlush();//untuk memastikan bahwa perintah objek di eksekusi
}

void timer(int value){


sudut-=6;
glutPostRedisplay();//Fungsi mengirimkan perintah untuk mengaktifkan display secara
berkala (looping).
//Kemudian pada main program perlu menambahkan fungsi untuk mengaktifkan timer
function.
glutTimerFunc(100,timer,0);//Dalam penggunaan glutTimerFunc dimungkinkan untuk
membuat sebuah animasi yang dikontrol oleh waktu.
}

void main (int argc, char **argv){


glutInit(&argc, argv);
glutInitWindowPosition(100,100);//perintah untuk memperbesar kecil posisi windows
glutInitWindowSize(600,600);//untuk setting ukuran windows
glutCreateWindow("BIANGLALA OLEH : MURNIATI ");//memberi judul pada sudut atas
windows
gluOrtho2D(-300.,300.,-300.,300.);/* Deklarasi window size, position, dan display
mode(single buffer and RGBA).
* Pemanggilan routin inisialisasi.
* Memanggil fungsi untuk menampilkan objek di layar
*/

glutDisplayFunc(renderScene); //glutDisplayFunc() adalah fungsi istimewa GLUT


//untuk memanggil fungsi yang akan menggambar seisi kanvas
glutTimerFunc(1,timer,0);
glutMainLoop();//event yang menandakan pemrosesan glut terjadi
}

6. HASIL GAMBAR :

7. HASIL BERDASARKAN VIDEO :

BIANGLALA.avi

Anda mungkin juga menyukai