Polygon 3D Bertransformasi pada Pelles C

Listing

#include <windows.h>

#include <GL/gl.h>

#include <GL/glu.h>

#include <GL/glfw.h>

void mulaiOpenGL(void);

int main(void)

{

// mRunning = TRUE, aplikasi masih berjalan

// mRunning = FALSE, ??? :p

GLuint mRunning = GL_TRUE;

// inisialisasi GLFW

if( glfwInit() == GL_FALSE )

{

MessageBox( NULL, “ERROR :: gagal menginisialisasi GLFW”, “Error!”, MB_OK);

return(0);

}

// buat sebuah window yang akan digunakan untuk menggambar.

if( glfwOpenWindow( 640, 480, 0, 0, 0, 0, 24, 0, GLFW_WINDOW ) == GL_FALSE )

{

MessageBox( NULL, “ERROR :: gagal membuat window”, “Error!”, MB_OK );

glfwTerminate();

return(0);

}

// Set judul yang ada di window dan Swap interval.

glfwSetWindowTitle( “Praktikum Grafik Komputer @dearresa: Polygon 3D Muter-muter” );

glfwSwapInterval( 1 );

// mulai OpenGL (melakukan setting awal OpenGL)

mulaiOpenGL();

float sudut = 0;

// mulai looping utama program

while( mRunning )

{

//

// bersihkan layar dan depth buffer

glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );

glLoadIdentity();

//

// lakukan penggambaran di sini

//————————————————————————————

gluLookAt(10,10,20,

0,0,0,

0,1,0);

glRotatef(sudut,0,1,1);

glTranslatef(5,5,5);

glBegin(GL_QUADS);

glColor3f(1,1,1);

glVertex3f(0,0,4);

glVertex3f(4,0,4);

glColor3f(0,1,1);

glVertex3f(4,0,0);

glVertex3f(0,0,0);

glEnd;

//bagian atas

glBegin(GL_TRIANGLES);

glColor3f(0,0,1);

glVertex3f(4,0,4);

glVertex3f(2,4,2);

glVertex3f(0,0,4);

 

glColor3f(0,1,0);

glVertex3f(4,0,4);

glVertex3f(4,0,0);

glVertex3f(2,4,2);

 

glColor3f(1,1,0);

glVertex3f(0,0,0);

glVertex3f(4,0,0);

glVertex3f(2,4,2);

 

glColor3f(1,0,0);

glVertex3f(0,0,4);

glVertex3f(0,0,0);

glVertex3f(2,4,2);

glEnd();

//bagian bawah

glBegin(GL_TRIANGLES);

glColor3f(1,0,1);

glVertex3f(4,0,4);

glVertex3f(2,-4,2);

glVertex3f(0,0,4);

 

glColor3f(1,1,1);

glVertex3f(4,0,4);

glVertex3f(4,0,0);

glVertex3f(2,-4,2);

 

glColor3f(1,1,0);

glVertex3f(0,0,0);

glVertex3f(4,0,0);

glVertex3f(2,-4,2);

 

glColor3f(0,1,1);

glVertex3f(0,0,4);

glVertex3f(0,0,0);

glVertex3f(2,-4,2);

glEnd();

sudut +=0.3;

//————————————————————————————

//

// tampilkan ke layar (swap double buffer)

glfwSwapBuffers();

// check input , apakah tombol esc ditekan atau tombol “close” diclick

mRunning = !glfwGetKey( GLFW_KEY_ESC ) && glfwGetWindowParam( GLFW_OPENED );

}

glfwTerminate();

return(0);

}

void mulaiOpenGL(void)

{               // Set viewport ke resolusi 640×480 viewport bisa diibaratkan

// layar monitor anda

glViewport( 0, 0, 640, 480 );

// Set mode OpenGL ke mode pryeksi (Projection) dan set proyeksi

// menggunakan proyeksi perspective, dengan sudut pandang (Field Of

// View) 60 derajat

glMatrixMode( GL_PROJECTION );

glLoadIdentity();

gluPerspective( 60.0f, 640.0f/480.0f, 0.1f, 1000.0f );

glMatrixMode( GL_MODELVIEW );

glLoadIdentity();

// Set mode gradasi warna halus (Smooth)

glShadeModel( GL_SMOOTH );

// warna yang digunakan untuk membersihkan layar

glClearColor( 0.0f, 0.0f, 0.0f, 0.0f );

// nilai untuk membersihkan depth buffer.

glClearDepth( 1.0f );

// Depth test digunakan untuk menghindari polygon yang

// tumpang tindih.

glEnable( GL_DEPTH_TEST );

glDepthFunc( GL_LEQUAL );

// beritahu OpenGL untuk menggunakan perhitungan perspective

// yang terbaik (perhitungan ini tidak bisa selalu 100% akurat)

glHint( GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST );

}

Penjelasan

Transformasi adalah perubahan bentuk. Macam-macam transformasi:

  1. Translasi : pergeseran objek secara sejajar
  2. Rotasi : perputaran objek dengan pusat 0
  3. Dilatasi : perbesaran atau penyekalaan objek terhadap titik pusat.

 

Pada praktikum kali ini, praktikan akan membuat benda berrotasi dan bertranslasi. Pada pelles C, untuk membuat objek bertransformasi, perintah-perintahnya sebagai berikut:

  • glTranslate(f){x,y,z}: untuk membuat benda bertranslasi. (f) merupakan tipe data yang digunakan yaitu berupa Float, tipe data ini dapat diubah menjadi integer atau yang lain. {x,y,z} merupakan titik-titik skala pada sumbu x,y,dan z.
  • glRotate(f){besar_sudut,x,y,z}: untuk membuat benda berotasi. 9f0 merupakan tipe data yang digunakan, {x,y,z} merupakan titik putar atau poros rotasi objek.
  • glScale(f){x,y,z}: untuk memperbesar atau memperkecil objek berdasarkan skala tertentu, menciptakan matriks S yang menskala object berdasarkan pada vektor arah x, y, and z.

 

    Agar objek dapat berputar, maka tentukan dulu besar sudutnya. Tanda (+) untuk perputaran berlawanan arah jarum jam, dan tanda (-) untuk perputaran searah jarum jam. Dan (0.3) merupakan ukuran seberapa cepat perputaran dilakukan, angka ini tentunya dapat diubah sesuai keinginan praktikan.

    OUTPUT



    About resariski

    me - Resa - a girl who was born at December 16th is the youngest daughter (from 4 brothers) in my family. This is my official weblog. View all posts by resariski

    2 responses to “Polygon 3D Bertransformasi pada Pelles C

    Leave a Reply

    Fill in your details below or click an icon to log in:

    WordPress.com Logo

    You are commenting using your WordPress.com account. Log Out / Change )

    Twitter picture

    You are commenting using your Twitter account. Log Out / Change )

    Facebook photo

    You are commenting using your Facebook account. Log Out / Change )

    Google+ photo

    You are commenting using your Google+ account. Log Out / Change )

    Connecting to %s

    %d bloggers like this: