Grafika Tugas Membuat Rumah 3 Dimensi

by

helmy

Tampilan Rumah 1 :

Membuat Rumah 3Dimensi
CODING LENGKAP : 

#include <stdlib.h>
#include <GL/glut.h>
#include <windows.h>
int w=480, h=480, z=-20;
int x1=0, y1=0, sudut=0, z1=0, skalaX=0, skalaY=0;
float lx=10.0f, ly =10.0f;
void renderScene(void){
       GLfloat LightPosition[] = {lx, ly, 10.0f, 0.0f};
       glLightfv(GL_LIGHT0, GL_POSITION, LightPosition);
       glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
 glLoadIdentity();
//supaya bisa di ubah”
 glTranslatef(0,0,z);
 glRotatef(sudut,x1,y1,z1);
  //Tanah
 glPushMatrix();
 glEnable(GL_COLOR_MATERIAL);
 glRotatef(90,0,0,1);
 glTranslatef(-6.6,-1.5,0);
 glColor3f(0,1,0);
 glScalef(0.11,7,7);
 glutSolidCube(4.);
 glDisable(GL_COLOR_MATERIAL);
 glPopMatrix();
 //bangunan bawah
 glPushMatrix();
 glEnable(GL_COLOR_MATERIAL);
 glTranslatef(0,-2.75,0);
 glColor3f(0.8,0.6,0.3);
 glScalef(9,4,4);
 glutSolidCube(2);
 glDisable(GL_COLOR_MATERIAL);
 glPopMatrix();
 //bangunan atas
 glPushMatrix();
 glEnable(GL_COLOR_MATERIAL);
 glTranslatef(-4,2.75,-1);
 glColor3f(0.8,0.6,0.3);
 glScalef(5,3,3);
 glutSolidCube(2);
 glDisable(GL_COLOR_MATERIAL);
 glPopMatrix();
 //lawang bawah
 glPushMatrix();
 glEnable(GL_COLOR_MATERIAL);
 glTranslatef(-2,-3,2.01);
 glColor3f(0,0,1);
 glScalef(2,3,2);
 glutSolidCube(2);
 glDisable(GL_COLOR_MATERIAL);
 glPopMatrix();
 //lawang atas
 glPushMatrix();
 glEnable(GL_COLOR_MATERIAL);
 glTranslatef(-7,3,1.1);
 glColor3f(0,0,1);
 glScalef(1,1.5,1);
 glutSolidCube(2);
 glDisable(GL_COLOR_MATERIAL);
 glPopMatrix();
 //engsel atas
 glPushMatrix();
 glEnable(GL_COLOR_MATERIAL);
 glTranslatef(-7.5,2.75,2.1);
 glColor3f(1,1,1);
 glutSolidSphere(0.2,100,100);
 glDisable(GL_COLOR_MATERIAL);
 glPopMatrix();
 //engsel bawah
 glPushMatrix();
 glEnable(GL_COLOR_MATERIAL);
 glTranslatef(-3.25,-3,4);
 glColor3f(1,1,1);
 glutSolidSphere(0.2,100,100);
 glDisable(GL_COLOR_MATERIAL);
 glPopMatrix();
 //jendela atas
 glPushMatrix();
 glEnable(GL_COLOR_MATERIAL);
 glTranslatef(-2,3.2,1.1);
 glColor3f(1,2,0);
 glScalef(2,1,1);
 glutSolidCube(2);
 glDisable(GL_COLOR_MATERIAL);
 glPopMatrix();
 //jendela bawah
 glPushMatrix();
 glEnable(GL_COLOR_MATERIAL);
 glTranslatef(2,-2,2.01);
 glColor3f(1,2,0);
 glScalef(1.5,1,2);
 glutSolidCube(2);
 glDisable(GL_COLOR_MATERIAL);
 glPopMatrix();
 //jendela bawah
 glPushMatrix();
 glEnable(GL_COLOR_MATERIAL);
 glTranslatef(7,-2,2.01);
 glColor3f(1,2,0);
 glScalef(1.5,1,2);
 glutSolidCube(2);
 glDisable(GL_COLOR_MATERIAL);
 glPopMatrix();
  //pager depan kanan
 glPushMatrix();
 glEnable(GL_COLOR_MATERIAL);
              glTranslatef(7,-5.5,13);
              glColor3f(1,0,0);
              glScalef(15.75,0.5,0.75);
              glutSolidCube(1);
              glDisable(GL_COLOR_MATERIAL);
              glPopMatrix();
      
 for (int dep=0.5;dep<13;dep+=2)
       {
              glPushMatrix();
              glEnable(GL_COLOR_MATERIAL);
              glTranslatef(dep,-5.5,13);
              glColor3f(1,1,1);
              glScalef(1,2,0.5);
              glutSolidCube(1);
              glDisable(GL_COLOR_MATERIAL);
              glPopMatrix();
       }
 //pager depan kiri
              glPushMatrix();
              glEnable(GL_COLOR_MATERIAL);
              glTranslatef(-8,-5.5,13);
              glColor3f(1,0,0);
              glScalef(9.5,0.5,0.75);
              glutSolidCube(1);
              glDisable(GL_COLOR_MATERIAL);
              glPopMatrix();
      
  for (int dep2=-4;dep2>-12;dep2-=2)
       {
              glPushMatrix();
              glEnable(GL_COLOR_MATERIAL);
              glTranslatef(dep2,-5.5,13);
              glColor3f(1,1,1);
              glScalef(1,2,0.5);
              glutSolidCube(1);
              glDisable(GL_COLOR_MATERIAL);
              glPopMatrix();
       }
  //pagar belakang
              glPushMatrix();
              glEnable(GL_COLOR_MATERIAL);
              glTranslatef(1.2,-5.5,-13);
              glColor3f(1,0,0);
              glScalef(27.8,0.5,0.75);
              glutSolidCube(1);
              glDisable(GL_COLOR_MATERIAL);
              glPopMatrix();
      
  for (int dep=-10;dep<13;dep+=2)
       {
              glPushMatrix();
              glEnable(GL_COLOR_MATERIAL);
              glTranslatef(dep,-5.5,-13);
              glColor3f(1,1,1);
              glScalef(1,2,0.5);
              glutSolidCube(1);
              glDisable(GL_COLOR_MATERIAL);
              glPopMatrix();
       }
 //pagar samping kanan
              glPushMatrix();
              glEnable(GL_COLOR_MATERIAL);
              glTranslatef(14.2,-5.5,0);
              glColor3f(1,0,0);
              glScalef(0.75,0.5,28);
              glutSolidCube(1);
              glDisable(GL_COLOR_MATERIAL);
              glPopMatrix();
      
  for (int samp=-13;samp<15;samp+=2)
       {
              glPushMatrix();
              glEnable(GL_COLOR_MATERIAL);
              glTranslatef(14.2,-5.5,samp);
              glColor3f(1,1,1);
              glScalef(0.5,2,1);
              glutSolidCube(1);
              glDisable(GL_COLOR_MATERIAL);
              glPopMatrix();
  }
//pagar samping
              glPushMatrix();
              glEnable(GL_COLOR_MATERIAL);
              glTranslatef(-12,-5.5,0);
              glColor3f(1,0,0);
              glScalef(0.75,0.5,28);
              glutSolidCube(1);
              glDisable(GL_COLOR_MATERIAL);
              glPopMatrix();
      
  for (int samp=-13;samp<15;samp+=2)
       {
              glPushMatrix();
              glEnable(GL_COLOR_MATERIAL);
              glTranslatef(-12,-5.5,samp);
              glColor3f(1,1,1);
              glScalef(0.5,2,1);
              glutSolidCube(1);
              glDisable(GL_COLOR_MATERIAL);
              glPopMatrix();
  }
//atap
 glPushMatrix();
 glEnable(GL_COLOR_MATERIAL);
 glRotatef(-90,1,0,0);
 glTranslatef(-4,1,4.75);
 glScalef(0.3,0.3,0.3);
 glColor3f(1,0,0);
 glutSolidCone(25,15,100,4);
 glDisable(GL_COLOR_MATERIAL);
 glPopMatrix();
  glutSwapBuffers();
}
void resize(int w1,int h1){
 glViewport(0,0,w1,h1);
 glMatrixMode(GL_PROJECTION);
 glLoadIdentity();
 gluPerspective(45.0,(float) w1/(float) h1, 1.0,300.0);
 glMatrixMode(GL_MODELVIEW);
 glLoadIdentity();
}
void myKeyboard(unsigned char key, int x, int y){
 if (key == ‘x’) {
  x1=1;
  y1=0;
  z1=0;
  sudut+=10;
 }
 if (key == ‘c’) {
  x1=1;
  y1=0;
  z1=0;
  sudut-=10;
 }
 else if (key == ‘z’) {
  y1=0;
  x1=0;
  z1=1;
  sudut+=-10;
 }
 else if (key == ‘a’) {
  y1=0;
  x1=0;
  z1=1;
  sudut+=+10;
 }
}
void mySpecialKeyboard(int key, int x, int y){
 switch(key){
  case GLUT_KEY_UP:
   z+=5;
  break;
  case GLUT_KEY_DOWN:
   z-=5;
  break;
  case GLUT_KEY_RIGHT:
  y1=1;
  x1=0;
  z1=0;
  sudut+=-10;
  break;
  case GLUT_KEY_LEFT:
  y1=1;
  x1=0;
  z1=0;
  sudut+=+10;
  break;
 }
}
void mouse(int tombol, int state, int x, int y){
 lx = x-(w/2);
 ly = (h/2)-y;
}
void motion (int x, int y){
 lx = x-(w/2);
 ly = (h/2)-y;
}
void init(){
       GLfloat LightPosition[] = {10.0f, 10.0f, 30.0f, 0.0f};
       GLfloat LightAmbient[] = {0.0f, 1.0f, 0.0f, 1.0f};
       GLfloat LightDiffuse[] = {0.7f, 0.7f, 0.7f, 1.0f};
       GLfloat LightSpecular[] = {1.0f, 1.0f, 1.0f, 1.0f};
       GLfloat Shine[] = {100};
       glShadeModel(GL_SMOOTH);
       glClearColor(0.0f, 0.0f, 0.0f, 0.5f);
       glClearDepth(1.0f);
       glEnable(GL_DEPTH_TEST);
       glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
       glColorMaterial(GL_FRONT, GL_COLOR_INDEXES);
       glMaterialfv(GL_FRONT, GL_SPECULAR, LightSpecular);
       glMaterialfv(GL_FRONT, GL_SHININESS, Shine);
       glLightfv(GL_LIGHT0, GL_SHININESS, Shine);
      
       glEnable(GL_LIGHTING);
       glEnable(GL_LIGHT0);
       return;
}
void timer(int value){
 glutPostRedisplay();
 glutTimerFunc(50,timer,0);
}
void main (int argc, char **argv){
 glutInit(&argc, argv);
 glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH | GLUT_RGBA);
 glutInitWindowPosition(100,100);
 glutInitWindowSize(w,h);
 glutCreateWindow(“kelompok 3 | UTS GRAFIKA”);
 gluOrtho2D(-w/2,w/2,-h/2,h/2);
 glutDisplayFunc(renderScene);
 glutReshapeFunc(resize);
 glutKeyboardFunc(myKeyboard);
 glutSpecialFunc(mySpecialKeyboard);
       glutMouseFunc(mouse);
       glutPassiveMotionFunc(motion);
 glutTimerFunc(1,timer,0);
 init();
 glutMainLoop();
}

Pembahasan : 
“stdlib” : digunakan untuk membersihkan layar
GLfloat LightPosition : untuk pencahayaan bangunan rumah
glLightfv : digunakan untuk mengatur berbagai parameter karena mereka sedang digunakan untuk menentukan nilai default untuk GL_LIGHT0
GLclear : digunakan untuk membersihkan semua pixel
glLoadIdentity : digunakan untuk memanggil matriks identitas dan dijadikan status matriks (proyeksi) saat ini
Glrotatef : digunakan untuk memutar objek
glEnable(GL_COLOR_MATERIAL) : perlu memanggil glEnable dengan GL_COLOR_MATERIAL sebagai parameter kemudian kemudian anda dapat mengubah warna dengan glcolor
GlTranslatef : digunakan untuk memindahkah objek
GlColor3f  : menentukan warna yang mengacu pada warna RGB
glutSolidCube(4.) : menyatakan ketebalan dari objek yang kita buat seperti halnya menginputkan volumen objek dengan tipe data integer
glPopMatrix : panggilan untuk mengisolasi, melihat , dan pemodelan transformasi
Coding untuk membuat bangunan bawah, bangunan atas dan pintu bawah:
glEnable(GL_COLOR_MATERIAL) : perlu memanggil glEnable dengan GL_COLOR_MATERIAL sebagai parameter kemudian kemudian anda dapat mengubah warna dengan glcolor
glutSolidCube : fungsi untuk menggambar ketebalan kubus
glScalef : untuk memperbesar dan memperkecil objek, disini kita menggunakan ukuran tidak harus seragam antara lebar, panjang dan tingginya sehingga kita bebas meresize objek yang kita buat
GlColor3f  : menentukan warna yang mengacu pada warna RGB
glPopMatrix : panggilan untuk mengisolasi, melihat , dan pemodelan transformasi
Coding untuk membuat pintu atas, engsel atas dan engsel bawah:
glEnable(GL_COLOR_MATERIAL) : perlu memanggil glEnable dengan GL_COLOR_MATERIAL sebagai parameter kemudian kemudian anda dapat mengubah warna dengan glcolor
GlTranslatef : digunakan untuk memindahkah objek
glutSolidSphere : menampilkan objek berupa bola
glScalef : untuk memperbesar dan memperkecil objek, disini kita menggunakan ukuran tidak harus seragam antara lebar, panjang dan tingginya sehingga kita bebas meresize objek yang kita buat
GlColor3f  : menentukan warna yang mengacu pada warna RGB
glPopMatrix : panggilan untuk mengisolasi, melihat , dan pemodelan transformasi
Coding untuk membuat jendela atas dan jendela bawah:
glEnable(GL_COLOR_MATERIAL) : perlu memanggil glEnable dengan GL_COLOR_MATERIAL sebagai parameter kemudian kemudian anda dapat mengubah warna dengan glcolor
GlTranslatef : digunakan untuk memindahkah objek
glutSolidSphere : menampilkan objek berupa bola
glScalef : untuk memperbesar dan memperkecil objek, disini kita menggunakan ukuran tidak harus seragam antara lebar, panjang dan tingginya sehingga kita bebas meresize objek yang kita buat
GlColor3f  : menentukan warna yang mengacu pada warna RGB
glPopMatrix : panggilan untuk mengisolasi, melihat , dan pemodelan transformasi
Coding untuk membuat pagar depan kanan dan pagar depan kiri :
glEnable(GL_COLOR_MATERIAL) : perlu memanggil glEnable dengan GL_COLOR_MATERIAL sebagai parameter kemudian kemudian anda dapat mengubah warna dengan glcolor
GlTranslatef : digunakan untuk memindahkah objek
glutSolidSphere : menampilkan objek berupa bola
glScalef : untuk memperbesar dan memperkecil objek, disini kita menggunakan ukuran tidak harus seragam antara lebar, panjang dan tingginya sehingga kita bebas meresize objek yang kita buat
GlColor3f  : menentukan warna yang mengacu pada warna RGB
glPopMatrix : panggilan untuk mengisolasi, melihat , dan pemodelan transformasi
Coding untuk membuat pagar belakang dan pagar samping kanan:
int dep=-10 dep<13 dep+=2 : variabel dep dideklarasikan dalam tipe data integer , untuk mengatur fungsi perulangan
glTranslatef(dep,-5.5, -13) : mengatur tampilan perpindahan objek mulai dari dep pada skala -13 mula-mula sebelum perulangan
int sam=-13 sam<15 sam+=2 : variabel sam dideklarasikan dalam tipe data integer , untuk mengatur fungsi perulangan
gltranslatef (14.2, -5.5, samp) : mengatur tampilan perpindahan objek mula-mula pada skala 14.2 , -5.5 hingga ke perulangan dengan variable sam
glutsolidCube : mengatur ketebalan objek, semakin besar angkanya semakin tebal
Coding untuk membuat pagar samping dan atap:
int sam=-13 sam<15 sam+=2 : variabel sam dideklarasikan dalam tipe data integer , untuk mengatur fungsi perulangan
gltranslatef (14.2, -5.5, samp) : mengatur tampilan perpindahan objek mula-mula pada skala 14.2 , -5.5 hingga ke perulangan dengan variable sam
glutsolidCube : mengatur ketebalan objek, semakin besar angkanya semakin tebal
Coding untuk menampilkan objek rumah:
void resize() : untuk menampilkan objek rumah yang telah kita buat
void myKeyboard : fungsi keyboard
Baris 248 – 253 : jika kita tekan keyboard x 1 kali maka dia akan memutar ke kanan sudut 10
Baris 256 – 259 : jika kita tekan keyboard c 1 kali maka dia akan memutar ke atas sudut -10
Baris 262 – 267 : jika kita tekan keyboard c 1 kali maka dia akan memutar berlawanan sudut -10
Coding untuk menekan arah atas, bawah, kanan dan kiri pada keyboard:
Void mySpecialKeyboard : Untuk menerima inputan dari keyboard
Glut_key_up : Untuk merotasi objek kearah atas
Glut_key_down : Untuk merotasi objek kearah bawah
Glut_key_right : Untuk merotasi objek kearah kanan
Glut_key_left : Untuk merotasi objek kearah kiri
Coding untuk Pengaturan Pencahayaan:
void mouse(int tombol, int state, int x, int y) : hasil pengubahan pencahayaan pada bangunan rumah menggunakan void mouse
void motion (int x, int y) : hasil pengubahan pencahayaan menggunakan void mouse
void init() : posisi cahaya di deklarasikan dalam init
GLfloat LightPosition[] : x, y, z , v posisi cahaya
GLfloat LightAmbient[] : Intensitas RGBA ambient cahaya
GLfloat LightDiffuse[] : intensitas RGBA menyebar cahaya
GLfloat LightSpecular[] : intensitas RGBA specular cahaya
glShadeModel(GL_SMOOTH) : untuk gouraud shading kita tentukan normal
glClearColor(0.0f, 0.0f, 0.0f, 0.5f) : warna latar belakang dengan 4 komponen RGBA-alpha
glEnable(GL_DEPTH_TEST) : untuk mengaktifkan setiap cahaya dengan glEnable
glMaterialfv(GL_FRONT, GL_SPECULAR, LightSpecular) : untuk mengatur properti material dari GL_FRONT, GL_SPECULAR, LightSpecular
glMaterialfv(GL_FRONT, GL_SHININESS, Shine) : untuk mengatur properti material dari GL_FRONT, GL_SHININESS, Shine
glLightfv(GL_LIGHT0, GL_SHININESS, Shine) : untuk mengatur properti material dari GL_LIGHT0, GL_SHININESS, Shine
void timer(int value) : waktu atau kecepatan pengubah dari fungsi void mouse
Coding untuk menampilkan windows:
glutInit : memberi tahu MS VC++ bahwa OpenGL library dipakai kedalam program, format fungsi yang dipakai void main (int argc, char **argv)
glutDisplayFunc(renderscene) : fungsinya untuk memanggil jendela display apabila dihilangkan maka jendela akan muncul kemudian akan menghilang
glutInitWindowPosition : fungsinya merubah posisi kordinat munculnya layar display, tergantung lcd layar laptop yang digunakan. Pada ukuran 90.90 layar display akan muncul di kiri layar atas
glutClear(GL_COLOR_BUFFER_BIT) : fungsinya untuk mendeskripsikan warna tampilan windows yang dibuat
glutCreateWindow : untuk memberi nama pada jendela display yang muncul
glutMainLoop : untuk melooping perulangan display agar tidak berhenti
glutKeyboardFunc(myKeyboard) : mengaktifkan fungsi keyboard x , y , z , a
glutMouseFunc  : mengaktifkan void mouse untuk mengubah pencahayaan
Tampilan Rumah 2 :

Grafika Tugas Membuat Rumah 3 Dimensi


Source code full:
#include <stdlib.h>
#include <GL/glut.h>
#include <windows.h>
//deklarasi variabel dalam tipe data integer, fload
int w= 1200 ; int h=600;
int x1=0 , y1= 0, z1=0;
int sudut=0;
int cx, cy;
void init ()
{
       GLfloat LightPosition[] = {10.0f, 10.0f, 20.0f, 0.0f}; // pencahayaan untuk bangunan rumah
       GLfloat LightAmbient [] = {0.0f, 1.0f, 0.0f, 1.0f}; // glLightfv digunakan untuk mengatur berbagai parameter karena mereka sedang digunakan untuk menentukan nilai default untuk GL_LIGHT0
       GLfloat LightDiffuse [] = {0.7f, 0.7f, 0.7f, 1.0f};
       GLfloat LightSpecular[] = {0.5f, 0.5f, 0.5f, 1.0f};
       GLfloat Shine [] = { 80 };
       glShadeModel (GL_SMOOTH );
       glClearColor (0.0f, 0.0f, 0.0f, 0.5f);
       glClearDepth (1.0f);
       glEnable (GL_DEPTH_TEST );
       glHint (GL_PERSPECTIVE_CORRECTION_HINT , GL_NICEST );
//supaya bisa di ubah”
       glMaterialfv (GL_FRONT , GL_SPECULAR  , LightSpecular   );
       glMaterialfv (GL_FRONT , GL_SHININESS , Shine);
       glEnable (GL_LIGHTING );
       glEnable (GL_LIGHT0 );
       return;
}
void renderScene ()
{
       GLfloat LightPosition[] = {10.0f, 10.0f, 20.0f, 0.0f};
       glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
       glClearColor (0.3, 0, 6, 0);
       LightPosition[1] = cx;
       LightPosition[0] = cy;
       glLightfv (GL_LIGHT0 , GL_POSITION , LightPosition );
       glLoadIdentity ();
       glTranslatef (0, 0, -200);
       glRotatef (sudut, x1, y1 , z1);
       glEnable (GL_COLOR_MATERIAL );
       //tembok rumah
       glPushMatrix ();
              glColor3f (0 , 4., 2);
              glTranslatef (0 , 5, 0);
             
              glScalef (25, 18, 15);
              glutSolidCube(3);
       glPopMatrix ();
       //lantai 2
       glPushMatrix ();
              glColor3f (4 , 4, 4);
              glTranslatef (0 , 5.5, 0);
             
              glScalef (25.1, 0.25, 16);
              glutSolidCube(3);
       glPopMatrix ();
       //atap rumah
       glPushMatrix ();
              glColor3f (9 , 2, 1);
              glTranslatef (0 , 32.5, 0);
              glRotatef (45, 1, 0, 0);  
              glScalef (14.8, 7, 7);
              glutSolidCube(5);   
       glPopMatrix ();
       glPushMatrix ();
              glColor3f (3 , 1, 0);
              glTranslatef (0 , 35, 0);
              glRotatef (45, 1, 0, 0);  
              glScalef (14, 7, 7);
              glutSolidCube(5);   
       glPopMatrix ();
       //atap tambahan depan
       glPushMatrix ();
              glColor3f (1 , 1, 1);
              glTranslatef (0 , 30, 25);
              glRotatef (90, 0, 0, 1);
              glScalef (1 ,60 , 5);
              glutSolidCube(1.2);
       glPopMatrix ();
       //atap tambahan belakang
       glPushMatrix ();
              glColor3f (1 , 1, 1);
              glTranslatef (0 , 30, -25);
              glRotatef (90, 0, 0, 1);
              glScalef (1 ,60 , 5);
              glutSolidCube(1.2);
       glPopMatrix ();
       //pintu depan
       glPushMatrix ();
              glColor3f (4 , 0, 0);
              glTranslatef (6 , -10, 22.4);
              glRotatef (90, 0, 1, 0);
              glScalef (1, 20, 10);
              glutSolidCube(1.2);
       glPopMatrix ();
       //pintu depan 2
       glPushMatrix ();
              glColor3f (4 , 0, 0);
              glTranslatef (-6.25 , -10, 22.4);
              glRotatef (90, 0, 1, 0);
              glScalef (1, 20, 10);
              glutSolidCube(1.2);
       glPopMatrix ();
       //pintu belakang
       glPushMatrix ();
              glColor3f (4 , 0, 0);
              glTranslatef (-18 , -13, -22.4);
              glRotatef (90, 0, 1, 0);
              glScalef (1, 15, 8);
              glutSolidCube(1.2);
       glPopMatrix ();
       //jendela atas kanan
       glPushMatrix ();
              glColor3f (0 , 0, 0);
              glTranslatef (25 , 15, 22.4);
              glRotatef (90, 0, 1, 0);
              glScalef (1, 12, 6);
              glutSolidCube(1.2);
       glPopMatrix ();
       //jendela atas kiri
       glPushMatrix ();
              glColor3f (0 , 0, 0);
              glTranslatef (-25 , 15, 22.4);
              glRotatef (90, 0, 1, 0);
              glScalef (1, 12, 6);
              glutSolidCube(1.2);
       glPopMatrix ();
       //jendela atas samping kiri
       glPushMatrix ();
              glColor3f (0 , 0, 0);
              glTranslatef (-38 , 15, 15);
              glScalef (1, 12, 6);
              glutSolidCube(1.2);
       glPopMatrix ();
       //jendela atas samping kanan
       glPushMatrix ();
              glColor3f (4 , 8, 0);
              glTranslatef (38 , 15, -15);
              glScalef (1, 12, 6);
              glutSolidCube(1.2);
       glPopMatrix ();
      
       //jendela bawah kanan
       glPushMatrix ();
              glColor3f (4 , 8, 0);
              glTranslatef (30 , -7, 22);
              glRotatef (90, 0, 1, 0);
              glScalef (2, 9, 5);
              glutSolidCube(1.2);
       glPopMatrix ();
       //jendela bawah kiri
       glPushMatrix ();
              glColor3f (4 , 8, 0);
              glTranslatef (-30 , -7, 22);
              glRotatef (90, 0, 1, 0);
              glScalef (2, 9, 5);
              glutSolidCube(1.2);
       glPopMatrix ();
       //pagar depan kiri
       glPushMatrix ();
              glColor3f (8 , 0, 4);
              glTranslatef (-32 , -18, 60);
              glRotatef (90, 0, 1, 0);
              glScalef (1, 10, 36.5);
              glutSolidCube(1.2);
       glPopMatrix ();
       //pagar depan kanan
       glPushMatrix ();
              glColor3f (8 , 0, 4);
              glTranslatef (32 , -18, 60);
              glRotatef (90, 0, 1, 0);
              glScalef (1, 10, 36.5);
              glutSolidCube(1.2);
       glPopMatrix ();
       //pagar belakang
       glPushMatrix ();
              glColor3f (8 , 0, 4);
              glTranslatef (0 , -18, -60);
              glRotatef (90, 0, 1, 0);
              glScalef (1, 10, 90);
              glutSolidCube(1.2);
       glPopMatrix ();
       //pagar kiri
       glPushMatrix ();
              glColor3f (8 , 0, 4);
              glTranslatef (53.5 , -18, 0);
              glScalef (1, 10, 101);
              glutSolidCube(1.2);
       glPopMatrix ();
       //pagar kiri
       glPushMatrix ();
              glColor3f (8 , 0, 4);
              glTranslatef (-53.5 , -18, 0);
              glScalef (1, 10, 100);
              glutSolidCube(1.2);
       glPopMatrix ();
      
       //lampu pagar depan kiri
       glPushMatrix ();
              glColor3f (6 , 7, 0);
              glTranslatef (-51.5 , -9.5, 59.5);
              glRotatef (90, 0, 1, 0);
              glScalef (1, 1, 1);
              glutSolidSphere (3, 36, 36);
       glPopMatrix ();
       //lampu pagar belakang kiri
       glPushMatrix ();
              glColor3f (6 , 7, 0);
              glTranslatef (-51.5 , -9.5, -59.5);
              glRotatef (90, 0, 1, 0);
              glScalef (1, 1, 1);
              glutSolidSphere (3, 36, 36);
       glPopMatrix ();
       //lampu pagar depan kanan
       glPushMatrix ();
              glColor3f (6 , 7, 0);
              glTranslatef (51.5 , -9.5, 59.5);
              glRotatef (90, 0, 1, 0);
              glScalef (1, 1, 1);
              glutSolidSphere (3, 36, 36);
       glPopMatrix ();
       //lampu pagar belakang kanan
       glPushMatrix ();
              glColor3f (6 , 7, 0);
              glTranslatef (51.5 , -9.5, -59.5);
              glRotatef (90, 0, 1, 0);
              glScalef (1, 1, 1);
              glutSolidSphere (3, 36, 36);
       glPopMatrix ();
       //jalan depan pintu
       glPushMatrix ();
              glColor3f (0, 3, 0);
              glTranslatef (0 , -23.05, 40);
              glRotatef (90, 0, 0, 1);
              glScalef (1 ,15 , 30.5);
              glutSolidCube(1.2);
       glPopMatrix ();
       //jalan depan
       glPushMatrix ();
              glColor3f (1 , 1, 1);
              glTranslatef (0 , -25, 80);
              glRotatef (90, 0, 0, 1);
              glScalef (1, 400, 25);
              glutSolidCube(1.2);
       glPopMatrix ();
       //jalan belakang
       glPushMatrix ();
              glColor3f (1 , 1, 1);
              glTranslatef (0 , -25, -80);
              glRotatef (90, 0, 0, 1);
              glScalef (1, 400, 25);
              glutSolidCube(1.2);
       glPopMatrix ();
       //jalan samping kanan
       glPushMatrix ();
              glColor3f (1 , 1, 1);
              glTranslatef (80 , -25, 80);
              glRotatef (90, 0, 0, 1);
              glScalef (1,25 , 400);
              glutSolidCube(1.2);
       glPopMatrix ();
       //jalan samping kiri
       glPushMatrix ();
              glColor3f (1 , 1, 1);
              glTranslatef (-80 , -25, 80);
              glRotatef (90, 0, 0, 1);
              glScalef (1,25 , 400);
              glutSolidCube(1.2);
       glPopMatrix ();
//Bulan
       glPushMatrix ();
              glColor4f(1.0f, 1.0f, 1.0f, 0.0f);
              glTranslatef (55.5 , 29.5, 110.5);
              glRotatef (90, 0, 1, 0);
              glScalef (1, 1, 1);
              glutSolidSphere (3, 36, 36);
       glPopMatrix ();
       glDisable (GL_COLOR_MATERIAL );
       glutSwapBuffers ();
}
void resize (int w1, int h1)
{
       glViewport (0, 0 , w1, h1);
       glMatrixMode (GL_PROJECTION );
       glLoadIdentity ();
       gluPerspective (45.0 , (float) w1/ (float) h1, 1.0, 300.0);
       glMatrixMode (GL_MODELVIEW );
       glLoadIdentity ();
}
void myKeyboard (unsigned char  key, int x, int y)
{
       switch (key)
       {
              case ‘x’ :
                     x1 = 1;
                     y1 = 0;
                     z1 = 0;
                     sudut+=-10;
                     break ;
              case ‘y’ :
                     x1 = 0;
                     y1 = 1;
                     z1 = 0;
                     sudut+=-10;
                     break ;
              case ‘z’ :
                     x1 = 0;
                     y1 = 0;
                     z1 = 1;
                     sudut+=-10;
                     break ;
       }
}
void mouse(int tombol, int state, int x, int y){
 cx = x-(w/2);
 cy = (h/2)-y;
}
void motion (int x, int y)
{
 cx = x-(w/2);
 cy = (h/2)-y;
}
void update(int value)
{
       glutPostRedisplay ();
       glutTimerFunc (50 , update , 0);
}
void main (int argc, char **argv)
{
       glutInit (&argc, argv);
       glutInitDisplayMode (GLUT_DOUBLE | GLUT_DEPTH | GLUT_RGBA );
       glutInitWindowPosition (10, 10);
       glutInitWindowSize (w ,h);
       glutCreateWindow (“Helmykediri.com”);
       glutReshapeFunc (resize );
       glutDisplayFunc (renderScene );
       glutMouseFunc(mouse);
       glutMotionFunc(motion);
       glutTimerFunc (50, update , 0);
       glutKeyboardFunc (myKeyboard );
       init ();
       glutMainLoop ();
}
….helmykediricom

Related Post