Disusun Oleh :
TGL PRAKTIKUM
NAMA
NRP
KELAS/KELOMPOK
DOSEN PENGAMPU
ASISTEN
:
:
:
:
:
07 Mei 2015
Novia Faizatin Nurikha
130411100070
C2
Disetujui : .....././../Bangkalan
(ABDUL KHOLIK)
120411100013
LABORATORIUM
TEKNOLOGI INFORMASI DAN APLIKASI
JURUSAN TEKNIK INFORMATIKA
FAKULTAS TEKNIK
UNIVERSITAS TRUNOJOYO MADURA
2015
BAB I
PENDAHULUAN
1.1
Latar Belakang
Alam fisik dalam persepsi manusia adalah sebuah ruang yang berformat
3 dimensi.
Dimana benda-benda
yang ada di
dalamnya umum
Tujuan
Tujuan dari Praktikum tiga dimensi pada modul 3 ini antara lain:
1. Mampu memanfaatkan gambar tiga dimensi dalam Open GL
2. Mampu mengimplementasikan kegiatan praktikum gambar tiga dimensi
dalam tugas praktikum.
BAB II
DASAR TEORI
2.1 PENGANTAR
Alam fisik dalam persepsi manusia adalah sebuah ruang yang berformat 3
dimensi. Dimana benda-benda yang ada di dalamnya umum direpresentasikan
menggunakan format 3 dimensi: panjang, lebar, dan tinggi.
Dalam matematika, 3 dimensi ini biasa dinyatakan dalam sistem koordinat
kartesian. Koordinat kartesian 3 dimensi memiliki 3 bidang yang saling tegak
lurus satu dengan yang lainnya. Tiap bidang memiliki sumbu yang koordinat
yang biasa disebut sumbu x, y, dan z.
2.2 Tiga dimensi di OpenGL
OpenGL
menggunakan
matrix
sebagai
komponen
dasar
untuk
glutSolidCube(GLdouble size);
glutSolidTeapot(GLdouble size);
glutSolidTetrahedron(void)
6. glutWireOctahedron(void)
glutSolidOctahedron(void)
Jika dicoba, obyek-obyek ini tampak tidak jelas bentuknya di layar. Yang
tampak hanyalah blok berwarna putih. Ini wajar. Di modul 6, pencahayaan
yang benar akan menampilkan bentuk obyek-obyek ini dengan baik.
Ada kalanya obyek yang ingin dibuat/ditampilkan tidak tersedia dalam library
bawaan glut. Untuk kasus seperti ini, programmer perlu membuat sendiri
obyek tersebut. Di OpenGL, untuk membuat obyek 3 dimensi, salah satu
caranya adalah dengan membuat tiap sisi obyek dari polygon 2 dimensi.
Berikut contoh program kubus 3 dimensi dimana tiap sisinya dibuat dari
persegi 2 dimensi.
void display(){
glClear(GL_COLOR_BUFFER_BIT| GL_DEPTH_BUFFER_BIT);
glRotated(-35, 1,1,1);
//depan
glColor3f(0.0,0.0,1.0);
glBegin(GL_POLYGON);
glVertex3f(-1.0, -1.0, 1.0);
glVertex3f(1.0, -1.0, 1.0);
glVertex3f(1.0, 1.0, 1.0);
glVertex3f(-1.0, 1.0, 1.0);
glEnd();
//belakang
glColor3f(0.0,1.0,0.0);
glBegin(GL_POLYGON);
glVertex3f(1.0, -1.0, -1.0);
glVertex3f(-1.0, -1.0, -1.0);
glVertex3f(-1.0, 1.0, -1.0);
glVertex3f(1.0, 1.0, -1.0);
glEnd();
//kiri
glColor3f(1.0,0.0,0.0);
glBegin(GL_POLYGON);
glVertex3f(-1.0, -1.0, -1.0);
glVertex3f(-1.0, -1.0, 1.0);
glVertex3f(-1.0, 1.0, 1.0);
glVertex3f(-1.0, 1.0, -1.0);
glEnd();
//kanan
glColor3f(0.0,1.0,1.0);
glBegin(GL_POLYGON);
glVertex3f(1.0, -1.0, -1.0);
glVertex3f(1.0, 1.0, -1.0);
glVertex3f(1.0, 1.0, 1.0);
glVertex3f(1.0, -1.0, 1.0);
glEnd();
//bawah
glColor3f(1.0,0.0,1.0);
glBegin(GL_POLYGON);
glVertex3f(1.0, -1.0, 1.0);
glVertex3f(-1.0, -1.0, 1.0);
BAB IV
IMPLEMENTASI
glRotated(15,2,1,2);
glutWireCube(2);
glutSolidCube(2);
glRotated(15,2,1,1);
glutWireTeapot(2);
glutSolidTeapot (2);
glutWire Sphere(2,30,30);
glutSolidSphere(2,30,30);
glRotated(90,2,1,1);
glutWireCone(2,4,30,30);
glRotated(90,2,1,1);
glutSolidCone(2,4,30,30);
glRotated(15,2,1,1);
glutWireTeapot(4);
glutSolidTeapot (4);
glutWireSphere(3,8,20);
glutSolidSphere(3,8,20);
glRotated(90,2,1,1);
glRotated(90,2,1,1);
glutWireCone(3,1,20,20);
glutSolidCone(2,4,30,30);
glRotated(-45, 1,2,3);
1. Buat frame yang terdiri dari 4 buah balok sebagai berikut. Gunakan
glutWireCube.
2. Buat frame yang terdiri dari 4 buah balok seperti soal pertama secara
manual menggunakan kumpulan polygon.
3. Buat 4 obyek 3 dimensi yang dibahas di modul ini dalam satu tampilan.
Keempat obyek tersebut diletakkan dalam 4 kotak terususun sebagai
berikut:
4.2.2. Jawaban :
1. Program
void gambar(){
//depan
glColor3f(1.0,1.0,1.0);//biru
glBegin(GL_LINE_LOOP);
glVertex3f(-1.0, -1.0, 1.0);
glVertex3f(1.0, -1.0, 1.0);
glVertex3f(1.0, 1.0, 1.0);
glVertex3f(-1.0, 1.0, 1.0);
glEnd();
//belakang
glBegin(GL_LINE_LOOP);
10
11
gambar();
glPopMatrix();
glPushMatrix();
glScaled(1,4,1);
glTranslated(-3,0,0);
gambar();
glPopMatrix();
glFlush();
}
void myinit(){
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(-10.0,10.0,-10.0,10.0,-10.0,10.0);
glMatrixMode(GL_MODELVIEW);
glClearColor(0.0,0.0,0.0,1.0);
glColor3f(0.0,0.0,0.0);
glShadeModel(GL_FLAT);
glEnable(GL_DEPTH_TEST);
}
int main(int argc, char* argv[]){
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH);
glutInitWindowSize(400,400);
glutInitWindowPosition(100,100);
glutCreateWindow("Kotak");
glutDisplayFunc(display);
myinit();
glutMainLoop();
return 0;
}
Hasil :
2. Program :
void gambar(){
//depan
glColor3f(0.0,0.0,1.0);//biru
12
glBegin(GL_POLYGON);
glVertex3f(-1.0, -1.0, 1.0);
glVertex3f(1.0, -1.0, 1.0);
glVertex3f(1.0, 1.0, 1.0);
glVertex3f(-1.0, 1.0, 1.0);
glEnd();
//belakang
glBegin(GL_POLYGON);
glVertex3f(1.0, -1.0, -1.0);
glVertex3f(-1.0, -1.0, -1.0);
glVertex3f(-1.0, 1.0, -1.0);
glVertex3f(1.0, 1.0, -1.0);
glEnd();
//kiri
glColor3f(1.0,0.0,0.0); //merah
glBegin(GL_POLYGON);
glVertex3f(-1.0, -1.0, -1.0);
glVertex3f(-1.0, -1.0, 1.0);
glVertex3f(-1.0, 1.0, 1.0);
glVertex3f(-1.0, 1.0, -1.0);
glEnd();
//kanan
glColor3f(0.0,1.0,1.0); //biru muda
glBegin(GL_POLYGON);
glVertex3f(1.0, -1.0, -1.0);
glVertex3f(1.0, 1.0, -1.0);
glVertex3f(1.0, 1.0, 1.0);
glVertex3f(1.0, -1.0, 1.0);
glEnd();
//bawah
glColor3f(1.0,0.0,1.0);//pink
glBegin(GL_POLYGON);
glVertex3f(1.0, -1.0, 1.0);
glVertex3f(-1.0, -1.0, 1.0);
glVertex3f(-1.0, -1.0, -1.0);
glVertex3f(1.0, -1.0, -1.0);
glEnd();
//atas
glColor3f(1.0,1.0,0.0); //kuning
glBegin(GL_POLYGON);
glVertex3f(-1.0, 1.0, 1.0);
glVertex3f(1.0, 1.0, 1.0);
glVertex3f(1.0, 1.0, -1.0);
glVertex3f(-1.0, 1.0, -1.0);
glEnd();
}
void display(){
glClear(GL_COLOR_BUFFER_BIT| GL_DEPTH_BUFFER_BIT);
glRotated(-35,1,4,0);
13
glPushMatrix();
glScaled(4,1,1);
glTranslated(0,3,0);
gambar();
glPopMatrix();
glPushMatrix();
glScaled(1,4,1);
glTranslated(3,0,0);
gambar();
glPopMatrix();
glPushMatrix();
glScaled(4,1,1);
glTranslated(0,-3,0);
gambar();
glPopMatrix();
glPushMatrix();
glScaled(1,4,1);
glTranslated(-3,0,0);
gambar();
glPopMatrix();
glFlush();
}
void myinit(){
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(-10.0,10.0,-10.0,10.0,-10.0,10.0);
glMatrixMode(GL_MODELVIEW);
glClearColor(0.0,0.0,0.0,1.0);
glColor3f(0.0,0.0,0.0);
glShadeModel(GL_FLAT);
glEnable(GL_DEPTH_TEST);
}
int main(int argc, char* argv[]){
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH);
glutInitWindowSize(400,400);
glutInitWindowPosition(100,100);
glutCreateWindow("Kotak");
glutDisplayFunc(display);
myinit();
glutMainLoop();
return 0;
}
Hasil :
14
glRotated(-35,1,1,-4);
glRotated(-35,1,4,0);
3. Program :
#include<windows.h>
#ifdef __APPLE__
#include <GLUT/glut.h>
#else
#include <GL/glut.h>
#endif
#include <stdlib.h>
void gambar(){
//depan
glColor3f(1.0,1.0,1.0);//biru
glBegin(GL_LINE_LOOP);
glColor3f(1,1,1);//
glVertex3f(-1.0, -1.0, 1.0);
glVertex3f(1.0, -1.0, 1.0);
glVertex3f(1.0, 1.0, 1.0);
glVertex3f(-1.0, 1.0, 1.0);
glEnd();
glBegin(GL_LINE_LOOP);
glColor3f(1,0,1);//kotak pink
glVertex3f(1.0, -1.0, -1.0);
glVertex3f(-1.0, -1.0, -1.0);
glVertex3f(-1.0, 1.0, -1.0);
glVertex3f(1.0, 1.0, -1.0);
glEnd();
15
glBegin(GL_LINE_LOOP);
glColor3f(1,1,0);//miring kiri kuning atas 1+3
glVertex3f(-1.0, -1.0, -1.0);
glVertex3f(-1.0, -1.0, 1.0);
glVertex3f(-1.0, 1.0, 1.0);
glVertex3f(-1.0, 1.0, -1.0);
glEnd();
glBegin(GL_LINE_LOOP);
glColor3f(0,1,0);//miring kiri biru cerah 2+4
glVertex3f(1.0, -1.0, -1.0);
glVertex3f(1.0, 1.0, -1.0);
glVertex3f(1.0, 1.0, 1.0);
glVertex3f(1.0, -1.0, 1.0);
glEnd();
glBegin(GL_LINE_LOOP);
glColor3f(0,1,0);//miring tengah ijo kanan
glVertex3f(1.0, -1.0, 1.0);
glVertex3f(-1.0, -1.0, 1.0);
glVertex3f(-1.0, -1.0, -1.0);
glVertex3f(1.0, -1.0, -1.0);
glEnd();
glTranslated(0,-3,0);
gambar();
glPopMatrix();
glPushMatrix();
glScaled(1,4,1);
glTranslated(-3,0,0);
gambar();
glPopMatrix();
glPushMatrix(); //ceret kiri bawah
glTranslated(-1.5,-2,-0.5);
glColor3f(1.0,1.0,1.0);
glutWireTeapot(1.5);
glPopMatrix();
glPushMatrix(); // bulat bawah kanan
glTranslated(2,-2,-0.5);
glColor3f(1.0,1.0,0.0);
glutWireSphere(1.5,10,10);
glPopMatrix();
glPushMatrix();// kerucut atas kanan
glRotated(-90,1,1,1);
glTranslated(0,2.5,0);
glColor3f(0.0,1.0,1.0);
glutWireCone(1.5,3,10,10);
glPopMatrix();
glPushMatrix();// limas atas kiri
glRotated(-30,1,20,1);
glTranslated(-2,1,-0.5);
glColor3f(1.0,0.0,0.0);
glutWireCone(2,4,3,1);
glPopMatrix();
glFlush();
}
void myinit()
{
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(-10.0,10.0,-10.0,10.0,-10.0,10.0);
glMatrixMode(GL_MODELVIEW);
glClearColor(0.0,0.0,0.0,1.0);
glColor3f(0.0,0.0,0.0);
glShadeModel(GL_FLAT);
glEnable(GL_DEPTH_TEST);
}
int main(int argc, char* argv[])
{
glutInit(&argc,argv);
17
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB |
GLUT_DEPTH);
glutInitWindowSize(400,400);
glutInitWindowPosition(100,100);
glutCreateWindow("Kotak");
glutDisplayFunc(display);
myinit();
glutMainLoop();
return 0;
}
Hasil :
18
BAB V
PENUTUP
5.1 Kesimpulan
Dari modul 4 ini dapat disimpulkan OpenGl juga memiliki fungsi lain
diantaranya fovy : nilai fovy kita perbesar gambar itu semakin kecil
rasio : semakin tinggi nilainya gambar itu semakin tinggi tapi kalau kecil nilai
gambarnya akan lebar.
5.2 Saran
Dalam kegiatan praktikum ini pembelajaran lebih logika dan harus bisa
memahami secara detail
19