Anda di halaman 1dari 10

PANDUAN PRAKTIKUM

TRANSFORMASI TIGA DIMENSI

Course : Grafika Komputer


Course Code / (CCU) : TI2104 / (3 / 1)
Disusun oleh : Yulia Ery Kurniawati, S.Kom., M.Eng

INSTITUTE TEKNOLOGI DAN BISNIS KALBIS


Kurikulum 2017
Pertemuan ke-9

TRANSFORMASI TIGA DIMENSI

1. TUJUAN

Mahasiswa mampu memahami dan mengimplementasikan grafik, transformasi , viewing


dan clipping pada grafik 2 dan 3 Dimensi.

2. TEORI
Seperti halnya pada objek 2D, transformasi pada objek 3D sering dilakukan untuk
memperlihatkan realita dari objek yang ditinjau. Teknik-Teknik yang diperlukan untuk melakukan
transformasi objek 3D boleh dikatakan merupakan perluasan dari Teknik transformasi pada objek
2D. Dua aspek penting dalam transformasi objek 2D juga berlaku pada transformasi 3D. Dua aspek
tersebut adalah bahwa sembarang tansformasi bisa disajikan dalam suatu matriks transformasi.
Transformasi yang lebih rumit bisa dinyatakan dengan sebuah matriks transformasi yang
merupakan gabungan dari matriks- matriks transformasi dasar yang ada. Seperti halnya
transformasi objek 2D, transformasi objek 3D juga dikenal sebagai transformasi Afin yang terdiri
dari penggeseran, penskalaan, dan pemutaran.
Translasi 3D

Dalam bentuk matriks homogen


Penskalaan 3D

Dalam bentuk matriks homogen

Rotasi 3D
a. Rotasi terhadap sumbu z sebesar θ

Dalam bentuk matriks homogen Rotasi terhadap sumbu z sebesar θ

b. Rotasi terhadap sumbu x sebesar θ


Dalam bentuk matriks homogen Rotasi terhadap sumbu x sebesar θ

c. Rotasi terhadap sumbu y sebesar θ

Dalam bentuk matriks homogen Rotasi terhadap sumbu y sebesar θ

3. PELAKSANAAN PRAKTIKUM

Langkah-langkah Praktikum
1) Download DevC++ TDM-GCC
2) Download freeglut MinGW
3) Exctract folder freeglut MinGW
4) Copy file dalam folder freeglut\include\GL ke C:\Program Files (x86)\Dev-
Cpp\MinGW64\x86_64-w64-mingw32\include\GL
5) Copy file dalam folder freeglut\lib\x64 ke C:\Program Files (x86)\Dev-
Cpp\MinGW64\x86_64-w64-mingw32\lib
6) Copy file dalam folder freeglut\bin\x64 ke C:\Windows\System32
7) Pilih DevC++
8) Buat project baru File>New>Project

Gambar 1. Membuat project baru


9) Pilih Console Aplication, kemudian beri nama OK

Gambar 2. Membuat Console Application

10) Pilik Save

Gambar 3. Menyimpan project

11) Jika sudah selesai maka akan muncul layar seperti ini

Gambar 4. Tampilan DevC++ setelah project selesai dibuat


12) Klik kanan pada project pilih Project Options

Gambar 5. Memilih Project Options

13) Pilih Paramaters kemudian ketikkan pada Linker seperti di Gambar 2.6

Gambar 6. Mengubah Parameter pada Linker

14) Ketikkan contoh program berikut:


Code dengan warna merah merupakan code tambahan dari modul pertemuan ke-8
#include <GL/glut.h>

char title[] = "TRANSFORMASI 3D";


GLfloat anglePyramid = 0.0f;
GLfloat angleCube = 0.0f;
int refreshMills = 15;

void initGL() {
glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
glClearDepth(1.0f);
glEnable(GL_DEPTH_TEST);
glDepthFunc(GL_LEQUAL);
glShadeModel(GL_SMOOTH);
glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
}

void display() {
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glMatrixMode(GL_MODELVIEW);

// Render CUBE
glLoadIdentity();
glTranslatef(1.5f, 0.0f, -7.0f);
glRotatef(angleCube, 1.0f, 1.0f, 1.0f);

glBegin(GL_QUADS);
// mendefinisikan vertex secara counter-clockwise (CCW)
glColor3f(0.0f, 1.0f, 0.0f); // Green
glVertex3f( 1.0f, 1.0f, -1.0f);
glVertex3f(-1.0f, 1.0f, -1.0f);
glVertex3f(-1.0f, 1.0f, 1.0f);
glVertex3f( 1.0f, 1.0f, 1.0f);

// Bottom face (y = -1.0f)


glColor3f(1.0f, 0.5f, 0.0f); // Orange
glVertex3f( 1.0f, -1.0f, 1.0f);
glVertex3f(-1.0f, -1.0f, 1.0f);
glVertex3f(-1.0f, -1.0f, -1.0f);
glVertex3f( 1.0f, -1.0f, -1.0f);

// Front face (z = 1.0f)


glColor3f(1.0f, 0.0f, 0.0f); // Red
glVertex3f( 1.0f, 1.0f, 1.0f);
glVertex3f(-1.0f, 1.0f, 1.0f);
glVertex3f(-1.0f, -1.0f, 1.0f);
glVertex3f( 1.0f, -1.0f, 1.0f);

// Back face (z = -1.0f)


glColor3f(1.0f, 1.0f, 0.0f); // Yellow
glVertex3f( 1.0f, -1.0f, -1.0f);
glVertex3f(-1.0f, -1.0f, -1.0f);
glVertex3f(-1.0f, 1.0f, -1.0f);
glVertex3f( 1.0f, 1.0f, -1.0f);

// Left face (x = -1.0f)


glColor3f(0.0f, 0.0f, 1.0f); // Blue
glVertex3f(-1.0f, 1.0f, 1.0f);
glVertex3f(-1.0f, 1.0f, -1.0f);
glVertex3f(-1.0f, -1.0f, -1.0f);
glVertex3f(-1.0f, -1.0f, 1.0f);

// Right face (x = 1.0f)


glColor3f(1.0f, 0.0f, 1.0f); // Magenta
glVertex3f(1.0f, 1.0f, -1.0f);
glVertex3f(1.0f, 1.0f, 1.0f);
glVertex3f(1.0f, -1.0f, 1.0f);
glVertex3f(1.0f, -1.0f, -1.0f);
glEnd();

// Render a pyramid
glLoadIdentity();
glTranslatef(-1.5f, 0.0f, -6.0f);
glRotatef(anglePyramid, 1.0f, 1.0f, 0.0f);
glBegin(GL_TRIANGLES);
// Front
glColor3f(1.0f, 0.0f, 0.0f); // Red
glVertex3f( 0.0f, 1.0f, 0.0f);
glColor3f(0.0f, 1.0f, 0.0f); // Green
glVertex3f(-1.0f, -1.0f, 1.0f);
glColor3f(0.0f, 0.0f, 1.0f); // Blue
glVertex3f(1.0f, -1.0f, 1.0f);

// Right
glColor3f(1.0f, 0.0f, 0.0f); // Red
glVertex3f(0.0f, 1.0f, 0.0f);
glColor3f(0.0f, 0.0f, 1.0f); // Blue
glVertex3f(1.0f, -1.0f, 1.0f);
glColor3f(0.0f, 1.0f, 0.0f); // Green
glVertex3f(1.0f, -1.0f, -1.0f);

// Back
glColor3f(1.0f, 0.0f, 0.0f); // Red
glVertex3f(0.0f, 1.0f, 0.0f);
glColor3f(0.0f, 1.0f, 0.0f); // Green
glVertex3f(1.0f, -1.0f, -1.0f);
glColor3f(0.0f, 0.0f, 1.0f); // Blue
glVertex3f(-1.0f, -1.0f, -1.0f);

// Left
glColor3f(1.0f,0.0f,0.0f); // Red
glVertex3f( 0.0f, 1.0f, 0.0f);
glColor3f(0.0f,0.0f,1.0f); // Blue
glVertex3f(-1.0f,-1.0f,-1.0f);
glColor3f(0.0f,1.0f,0.0f); // Green
glVertex3f(-1.0f,-1.0f, 1.0f);
glEnd();

glutSwapBuffers();

anglePyramid += 0.2f;
angleCube -= 0.15f;
}

void timer(int value) {


glutPostRedisplay();
glutTimerFunc(refreshMills, timer, 0);
}

void reshape(GLsizei width, GLsizei height) {


if (height == 0) height = 1;
GLfloat aspect = (GLfloat)width / (GLfloat)height;
glViewport(0, 0, width, height);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(45.0f, aspect, 0.1f, 100.0f);
}

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


glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE);
glutInitWindowSize(640, 480);
glutInitWindowPosition(50, 50);
glutCreateWindow(title);
glutDisplayFunc(display);
glutReshapeFunc(reshape);
initGL();
glutTimerFunc(0, timer, 0);
glutMainLoop();
return 0;
}

Hasil:

4. TUGAS
1) Modifikasilah code di atas untuk dapat menampilkan objek kubus dan priramid yang
bergeser (translasi) kemudian analisislah!
2) Laporan berisi
a) Analisa percobaan: berisi tentang penjelasan praktikum/percobaan yang
dilakukan.
b) Kesimpulan: berisi tentang kesimpulan dari praktikum/percobaan yang dilakukan,
bila terjadi eror jelaskan kenapa eror itu terjadi.
c) Lampiran Program: berisi print screen/gambar dari source code program dan
juga hasil eksekusinya.
3) Laporan dikumpul di Edmodo dengan lama pengerjaan laporan 1 minggu.

5. DAFTAR RUJUKAN

[1] D. D. Hearn and M. P. Baker, Computer Graphics with OpenGL, 3rd ed. New Jersey:
Pearson Prentice Hall, 2004.
[2] A. Basuki and N. Ramadijanti, Grafika Komputer Teori dan Implementasi. Yogyakarta:
Penerbit Andi, 2006.
[3] E. Nugroho, Teori & Praktek Grafika Komputer Menggunakan DELPHI dan OpenGL, 2nd
ed. Yogyakarta: Graha Ilmu, 2005.
[4] P. N. Andono and T. Sutojo, Konsep Grafika Komputer, 1st ed. Yogyakarta: Penerbit Andi,
2016.
[5] J. Simarmata and T. Candra, Grafika Komputer. Yogyakarta: Penerbit Andi, 2007.

Anda mungkin juga menyukai