DAFTAR PUSTAKA
Anonim. www.opengl.org (diakses pada tanggal 01 Juli 2015). Fadlisyah, et al. 2007. Pengantar Grafika Komputer. Yogyakarta: Andi. Haemel, Nicholas, et al. 2011 . OpenGL super bible : comprehensive tutorial and reference. USA: Pearson Education, Inc. Nugroho, Edhi. 2005. Teori & Praktek Grafika Komputer Menggunakan Delphi dan OpenGL. Yogyakarta: Graha Ilmu. Salahuddin, M dan Rosa A.S.. 2011. Rekayasa Perangkat Lunak (Terstruktur dan Berorientasi Obyek). Bandung: Modula. Shreiner, Dave, et al. 2013. OpenGL programming guide : the official guide to learning OpenGL, version 4.3. USA: Pearson Education, Inc. Watt, Alan. 2000. 3D Computer Graphics. USA: Pearson Education, Inc.
36
LAMPIRAN SOURCE CODE //Program ini untuk mensimulasikan transformasi 3 Dimensi. //Tekan x untuk putar dengan sumbu putar +x //Tekan n untuk putar dengan sumbu putar -x //Tekan y untuk putar dengan sumbu putar +y //Tekan m untuk putar dengan sumbu putar -y //Tekan z untuk putar dengan sumbu putar z //Tekan w untuk menambah nilai y //Tekan s untuk mengurangi nilai y //Tekan a untuk menambah nilai x //Tekan d untuk mengurangi nilai x //Tekan q untuk menambah nilai z //Tekan e untuk mengurangi nilai z //Tekan esc untuk keluar dari program #include <stdlib.h> #include
float angle = 0; static float xpoz = 0, ypoz = 0, zpoz = 0,d = -12, e = -5,f = -5, pintu=0; //float pintu = 0.0f;
void kotak(float x1,float y1,float z1,float x2,float y2,float z2) { //depan glVertex3f(x1,y1,z1); glVertex3f(x2,y1,z1); glVertex3f(x2,y2,z1); glVertex3f(x1,y2,z1); //atas glVertex3f(x1,y2,z1); glVertex3f(x2,y2,z1); glVertex3f(x2,y2,z2);
37
glVertex3f(x1,y2,z2); //belakang glVertex3f(x1,y2,z2); glVertex3f(x2,y2,z2); glVertex3f(x2,y1,z2); glVertex3f(x1,y1,z2); //bawah glVertex3f(x1,y1,z2); glVertex3f(x2,y1,z2); glVertex3f(x2,y1,z1); glVertex3f(x1,y1,z1); //samping kiri glVertex3f(x1,y1,z1); glVertex3f(x1,y2,z1); glVertex3f(x1,y2,z2); glVertex3f(x1,y1,z2); //samping kanan glVertex3f(x2,y1,z1); glVertex3f(x2,y2,z1); glVertex3f(x2,y2,z2); glVertex3f(x2,y1,z2); } void Kubus(float x1,float y1,float x2,float y2,float x3,float y3,float x4,float y4,float z1,float z2,float z3){ //sisi atas glVertex3d(x3,y3,z2); glVertex3d(x4,y4,z2); glVertex3d(x4,y4,z1); glVertex3d(x3,y3,z1); //sisi depan glVertex3d(x1,y1,z2); glVertex3d(x2,y2,z2);
38
glVertex3d(x3,y3,z2); glVertex3d(x4,y4,z2); //sisi kanan glVertex3d(x2,y2,z2); glVertex3d(x2,y2,z1); glVertex3d(x3,y3,z1); glVertex3d(x3,y3,z2); //sisi belakang glVertex3d(x1,y1,z1); glVertex3d(x2,y2,z1); glVertex3d(x3,y3,z1); glVertex3d(x4,y4,z1); //sisi kiri glVertex3d(x1,y1,z2); glVertex3d(x1,y1,z1); glVertex3d(x4,y4,z1); glVertex3d(x4,y4,z2); //sisi bawah glVertex3d(x1,y1,z2); glVertex3d(x2,y2,z2); glVertex3d(x2,y2,z1); glVertex3d(x1,y1,z1); }
void Atap1(float x1,float y1,float x2,float y2,float x3,float y3,float x4,float y4,float z1,float z2,float z3) { glColor3f(0.3,0.2,0.1);//sisi kanan; glVertex3d(x3,y3,z1); glVertex3d(x3,y3,z2); glVertex3d(x3,y1,z3);
39
glColor3f(0.3,0.2,0.1);//sisi kiri; glVertex3d(x4,y4,z2); glVertex3d(x4,y4,z1); glVertex3d(x4,y1,z3); } void Atap2(float x1,float y1,float x2,float y2,float x3,float y3,float x4,float y4,float z1,float z2,float z3) { glColor3f(0.4,0,0.6);//sisi belakang glVertex3d(x4,y4,z1); glVertex3d(x3,y3,z1); glVertex3d(x3,y1,z3); glVertex3d(x4,y1,z3);
glColor3f(0.4,0,0.6);//sisi depan; glVertex3d(x3,y3,z2); glVertex3d(x4,y4,z2); glVertex3d(x4,y1,z3); glVertex3d(x3,y1,z3); } void init(void) { glClearColor (0.0, 0.0, 1.0, 0.0); glOrtho(-12,12,-6,6,-35,35); glEnable(GL_DEPTH_TEST); glShadeModel (GL_SMOOTH); glMatrixMode (GL_PROJECTION); glLoadIdentity (); gluPerspective(80.0,2.2, 1.0, 100.0); glMatrixMode (GL_MODELVIEW); }
40
void display(void) {
glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glLoadIdentity (); //digunakan untuk me-nonaktifkan/me-reset transformasi sebelumnya glTranslatef(d,e,f); //digunakan untuk melakukan perpindahan posisi gelombang glRotatef(xpoz,0,1,0); glRotatef(ypoz,1,0,0); glRotatef(zpoz,0,0,1);
glPushMatrix(); glBegin(GL_QUADS); glColor3f(0.1,0.4,0); kotak(-0.5,-2,0,24.5,0,-33.5);//alas glColor3f(0,0,0); kotak(6,0,0,24,0.3,-9);//alas glColor3f(0.4613, 0.4627, 0.4174); kotak(0,0,-12.5,6,0.3,-29);//alas kotak(0.5,0,-12,3,0.3,-12.5); glEnd(); glPopMatrix();
glPushMatrix(); glBegin(GL_QUADS); glColor3f(0.3f,0.3f,0.3f); kotak(24,0,0,24.5,5,-33); //tembok kanan kotak(-0.5,0,0,0,5,-33); //tembok kiri kotak(-0.5,0,-33,24.5,5,-33.5); //tembok belakang Atap2(-0.5,9,24.5,0,24.5,5.2,-0.5,5.2,-33.5,-5,-20);//Atap glColor3f(1,1,1);//plafon depan glVertex3d(0,5.1,-33.5);
41
glVertex3d(24,5.1,-33.5); glVertex3d(24,5.1,-5); glVertex3d(0,5.1,-5); glVertex3d(0,5.1,-5); glVertex3d(24,5.1,-5); glVertex3d(24,5.2,-5); glVertex3d(0,5.2,-5); glEnd(); glBegin(GL_TRIANGLES); Atap1(-0.5,9,-0.5,8,-0.5,5,-0.5,5,-33.5,-4,-20);// sisi atap/genteng kiri Atap1(24.5,9,24.5,8,24.5,5,24.5,5,-33.5,-4,-20);// sisi atap/genteng kanan glEnd(); glPopMatrix();
glPushMatrix(); //objek kamar 1 glBegin(GL_QUADS); glColor3f(0.0f,0.6f,1.0f); kotak(21,0.5,-15.6,23.7,1,-17.4);//alas meja kotak(21,0,-15.6,21.5,1,-16.1);//kaki meja kotak(21,0,-16.9,21.5,1,-17.4); kotak(23,0,-15.6,23.7,1,-16.1); kotak(23,0,-16.9,23.7,1,-17.4); glColor3f(1.0f,1.0f,1.0f); kotak(21.5,1.3,-16.35,23.3,2.1,-16.3);;//layar LCD glColor3f(0.0f,0.0f,0.0f); kotak(21.5,1,-16.4,23.2,1.1,-16.6); //LCD kotak(22.3,1.1,-16.45,22.5,1.6,-16.55); kotak(21.5,1.3,-16.45,23.3,2.1,-16.4); kotak(21.4,1.2,-16.4,23.4,2.2,-16.35); glColor3f(0.5f,0.0f,0.0f); kotak(20.9,0,-10,23.9,0.5,-15.5); //Kasur glColor3f(0.0f,0.3f,0.0f);
42
kotak(20.8,0,-9.9,24,0.6,-14.5); //Selimut glColor3f(0.0f,1.0f,0.0f); kotak(21.1,0.5,-14.5,23.7,0.7,-15.5); //Bantal glColor3f(0.0f,0.0f,0.0f); kotak(21,3,-17.3,22,3.5,-17.5);//saklar glColor3f(1.0f,1.0f,1.0f); kotak(21.3,3.1,-17.2,21.7,3.4,-17.5); glColor3f(0.0f,0.0f,0.0f); kotak(16.2,0.3,-12.5,18.2,3,-14.5);//lemari kotak(16.2,0,-14.2,18.4,3,-14.5); //kanan kotak(16.2,0,-12.5,18.4,3,-12.8);//kiri glColor3f(0.4f,0.0f,0.0f); kotak(18.2,2.2,-12.8,18.4,2.7,-14.2); //pintu lemari kotak(18.2,1.4,-12.8,18.4,1.9,-14.2); kotak(18.2,0.6,-12.8,18.4,1.1,-14.2); glColor3f(1.2f,1.2f,1.2f); kotak(18.4,2.5,-12.8,18.5,2.6,-13); //pegangan lemari kotak(18.4,1.7,-12.8,18.5,1.8,-13); kotak(18.4,0.9,-12.8,18.5,1,-13); glEnd(); glPopMatrix();
glPushMatrix();//objek kamar 2 glBegin(GL_QUADS); glColor3f(0.3f,0.0f,0.0f); kotak(19.8,0.5,-19,23.8,1,-24); kotak(19.5,0,-18.9,20.1,1.5,-19.5);// kaki kasur kotak(23.4,0,-18.9,24,1.5,-19.5);// kaki kasur kotak(23.4,0,-23.7,24,1.5,-24.3);// kaki kasur kotak(19.5,0,-23.7,20.1,1.5,-24.3);// kaki kasur kotak(19.5,0.5,-18.9,24,1.5,-19.5); kotak(19.5,1,-23.7,24,1.2,-24.3);
43
glColor3f(0.0f,0.0f,0.3f); kotak(20.1,1,-19.5,23.4,1.5,-23.7);// kasur glColor3f(0.0f,0.3f,0.0f); kotak(20,1,-20.2,23.5,1.7,-23.7); //Selimut glColor3f(0.0f,1.0f,0.0f); kotak(20.6,1,-19.6,22.9,1.8,-20.1); //Bantal glColor3f(0.0f,0.0f,0.0f); kotak(16,0.3,-21.5,18,3,-24.5);//lemari kotak(16,0,-21.5,18.2,3,-21.7); //kanan kotak(16,0,-24.3,18.2,3,-24.5);//kiri glColor3f(0.4f,0.0f,0.0f); kotak(18,0.6,-21.7,18.2,2.7,-22.9); //pintu lemari kotak(18,0.6,-23.1,18.2,2.7,-24.3); glColor3f(1.2f,1.2f,1.2f); kotak(18.2,1.5,-22.6,18.3,1.8,-22.7); //pegangan lemari kotak(18.2,1.5,-23.3,18.3,1.8,-23.4); glEnd(); glPopMatrix();
glPushMatrix();// object kamar kiri glBegin(GL_QUADS); glColor3f(0.5f,0.0f,0.0f); kotak(0.1,0.3,-20.1,3.1,0.8,-25.5); //Kasur glColor3f(0.0f,0.3f,0.0f); kotak(0,0.3,-21.1,3.2,0.9,-25.6); //Selimut glColor3f(0.0f,1.0f,0.0f); kotak(0.3,0.8,-20.1,2.9,1,-21.1); //Bantak glColor3f(0.0f,0.0f,0.0f); kotak(0,0.6,-26.5,3,3.3,-28.5);//Lemari kotak(0,0.3,-26.3,0.2,3.3,-28.5);//kiri kotak(2.8,0.3,-26.3,3,3.3,-28.5);//kanan glColor3f(0.4f,0.0f,0.0f);
44
kotak(0.2,0.9,-26.3,1.4,3,-26.5);//pintu kotak(1.6,0.9,-26.3,2.8,3,-26.5); glColor3f(1.0f,1.0f,1.0f); kotak(1.1,1.8,-26.2,1.2,2.1,-26.3);//pegangan kotak(1.8,1.8,-26.2,1.9,2.1,-26.3); glColor3f(1.0f,0.1f,1.0f); kotak(0.4,0.5,-18,2.8,0.6,-20); kotak(0.4,1.1,-18,2.8,1.2,-20); kotak(0.4,1.7,-18,2.8,1.8,-20); kotak(0.2,0.3,-18,0.4,2,-20);//kiri kotak(2.8,0.3,-18,3,2,-20);//kanan glColor3f(0.0f,0.0f,0.0f); kotak(1,1.8,-18.9,2.2,1.9,-19.1); //LCD kotak(1.5,1.8,-18.95,1.7,2.3,-19.05); kotak(0.7,2.1,-19.05,2.5,2.9,-19.1); kotak(0.6,2,-19.1,2.6,3,-19.15); glColor3f(1.0f,1.0f,1.0f); kotak(0.7,2.1,-19.1,2.5,2.9,-19.15); //Layar LCD glEnd(); glPopMatrix();
glPushMatrix();//ruang utama glBegin(GL_QUADS); glColor3f(0.0f,0.0f,1.0f); kotak(10,0,-9.5,13,1,-11);//bangku kotak(10,0,-9.5,13,2,-10); glColor3f(0.0f,0.0f,0.5f); kotak(9.8,0,-9.5,10,1.4,-11); kotak(13,0,-9.5,13.2,1.4,-11);
glColor3f(0.0f,0.0f,1.0f); kotak(13.2,0,-11.2,15.7,1,-14.3);//bangku
45
kotak(15.2,0,-11.2,15.7,2,-14.3); glColor3f(0.0f,0.0f,0.5f); kotak(13.2,0,-11,15.7,1.4,-11.2); kotak(13.2,0,-14.3,15.7,1.4,-14.5);
glColor3f(1.0f,1.0f,1.0f); kotak(10.5,0.9,-11.5,12.5,1,-14);//meja kotak(11,0.4,-12,12,0.5,-13.5); kotak(11,0,-13.3,11.2,0.9,-13.5); kotak(11.8,0,-13.3,12,0.9,-13.5); kotak(11,0,-12,11.2,0.9,-12.2); kotak(11.8,0,-12,12,0.9,-12.2);
glColor3f(0.5450980392156863, 0.0745098039215686); kotak(7,0,-21,13,1.5,-24);//lemari kotak(7,2.5,-21.5,13,4,-24); kotak(7,4,-21,13,4.5,-24); kotak(7,0,-23.9,13,4.5,-24); glColor3f(0.0f,0.0f,0.0f); kotak(7,1.5,-21.5,7.1,2.5,-24);//tiang kotak(8.4,1.5,-21.5,8.5,2.5,-24); kotak(11.4,1.5,-21.5,11.5,2.5,-24); kotak(12.9,1.5,-21.5,13,2.5,-24); kotak(8.2,3,-20.8,8.3,3.1,-20.9);//pegangan kaca kotak(9.7,3,-20.8,9.8,3.1,-20.9); kotak(10.1,3,-20.8,10.2,3.1,-20.9); kotak(11.6,3,-20.8,11.7,3.1,-20.9); glColor3f(0.4f,0.0f,0.0f); kotak(7,0.1,-20.9,8.4,1.3,-21);//pintu lemari kotak(8.5,0.1,-20.9,9.9,1.3,-21); kotak(10,0.1,-20.9,11.4,1.3,-21);
46
0.2705882352941176,
kotak(11.5,0.1,-20.9,13,1.3,-21); glColor3f(1.0f,1.0f,1.0f); kotak(8.2,0.5,-20.8,8.3,1,-20.9);//pegangan kotak(8.6,0.5,-20.8,8.7,1,-20.9); kotak(11.2,0.5,-20.8,11.3,1,-20.9); kotak(11.6,0.5,-20.8,11.7,1,-20.9); kotak(7,2.5,-20.9,8.4,3.8,-21);//kaca kotak(8.5,2.7,-20.9,9.9,3.8,-21); kotak(10,2.7,-20.9,11.4,3.8,-21); kotak(11.5,2.5,-20.9,13,3.8,-21);
glColor3f(0.0f,0.0f,0.0f); kotak(9.4,1.5,-22,10.5,1.6,-23); //LCD kotak(9.8,1.6,-22.4,10,2,-22.6); kotak(8.7,1.7,-22.3,11.2,2.3,-22.4); kotak(8.6,1.6,-22.2,11.3,2.4,-22.3); glColor3f(1.0f,1.0f,1.0f); kotak(8.7,1.7,-22.1,11.2,2.3,-22.2); //Layar LCD glEnd(); glPopMatrix();
glPushMatrix();//dapur glBegin(GL_QUADS); glColor3f(0.5450980392156863, 0.2705882352941176, 0.0745098039215686); kotak(10,0,-30,18,1.5,-33);//lemari kotak(10,2.5,-30.5,18,4,-33); kotak(10,4,-30,18,4.5,-33); kotak(10,0,-32.9,18,4.5,-33); glColor3f(0.0f,0.0f,0.0f); kotak(10,1.5,-30.5,10.5,2.5,-33);//tiang kotak(17.5,1.5,-30.5,18,2.5,-33); glColor3f(0.4f,0.0f,0.0f);
47
kotak(10,0.1,-29.9,11.9,1.3,-30);//pintu lemari kotak(12.1,0.1,-29.9,13.9,1.3,-30); kotak(14.1,0.1,-29.9,15.9,1.3,-30); kotak(16.1,0.1,-29.9,18,1.3,-30); kotak(10,2.6,-30.4,11.9,3.9,-30.5);//pintu lemari kotak(12.1,2.6,-30.4,13.9,3.9,-30.5); kotak(14.1,2.6,-30.4,15.9,3.9,-30.5); kotak(16.1,2.6,-30.4,18,3.9,-30.5); glColor3f(1.0f,1.0f,1.0f); kotak(11.7,0.5,-29.8,11.8,1,-29.9);//pegangan bawah kotak(12.2,0.5,-29.8,12.3,1,-29.9); kotak(15.7,0.5,-29.8,15.8,1,-29.9); kotak(16.2,0.5,-29.8,16.3,1,-29.9); kotak(11.7,3.2,-30.3,11.8,3.3,-30.4);//pegangan atas kotak(12.2,3.2,-30.3,12.3,3.3,-30.4); kotak(15.7,3.2,-30.3,15.8,3.3,-30.4); kotak(16.2,3.2,-30.3,16.3,3.3,-30.4);
kotak(11.7,1.5,-29.9,12,1.8,-30);//kompor kotak(16,1.5,-29.9,16.3,1.8,-30); kotak(11.7,1.8,-30.5,12,1.9,-31.3);//kompor kotak(11.7,1.8,-31.7,12,1.9,-32.5); kotak(11,1.8,-31.4,11.7,1.9,-31.6); kotak(12,1.8,-31.4,12.7,1.9,-31.6);
kotak(16,1.8,-30.5,16.3,1.9,-31.3);//kompor kotak(16,1.8,-31.7,16.3,1.9,-32.5); kotak(15.3,1.8,-31.4,16,1.9,-31.6); kotak(16.3,1.8,-31.4,17,1.9,-31.6);
glColor3f(0.3f,0.3f,0.8f); kotak(10.7,1.5,-30,17.3,1.8,-33);
48
glEnd(); glPopMatrix();
glPushMatrix();//kamar mandi glBegin(GL_QUADS); glColor3f(0.9f,0.3f,0.0f); kotak(19,0,-32.8,24,2,-33);//bak kotak(19,0,-30,19.2,2,-32.8); kotak(19,0,-29.8,24,2,-30); kotak(23.8,0,-30,24,2,-32.8); kotak(21.2,2.6,-32.5,21.8,2.65,-32.6);//kran kotak(21.5,2.5,-32,21.7,2.6,-33); kotak(21.5,2.3,-32,21.7,2.5,-32.2); glEnd(); glPopMatrix();
glPushMatrix(); glBegin(GL_QUADS); glColor3f(0.9f,0.9f,0.0f); kotak(22.2,0,-9,24,5,-9.5);//tembok kamar 1 kotak(15.7,0,-9.5,16.2,5,-14.5);//tembok kamar 1 kotak(15.7,4,-14.5,16.2,5,-17.5);// atas kotak(15,0,-17.5,24,5,-18.5);//tembok kamar 1 dan 2 kotak(15,4.5,-18.5,16,5,-21);//atas kotak(15,0,-21,16,5,-26);//tembok kamar 2 kotak(15,0,-25,24,5,-26);//tembok kamar 2 dan kamar mandi kotak(18,4,-26,19,5,-28.5);//atas kotak(18,0,-28.5,19,5,-33); //tembok kamar mandi kotak(13,0,-9,20,0.3,-9.5);//tembok bawah jendela
49
kotak(13,4,-9,22.2,5,-9.5);//tembok atas jendela kotak(6,0,-9,13.6,5,-9.5);//tembok tengah kotak(6,4,-9,7,5,-12);//tembok tengah sisi atas kotak(6,0,-12,7,5,-29);//tembok kiri tengah kotak(0,4,-12,6,5,-12.5);//kiri atas kotak(0,0,-12,0.3,5,-12.5);//kiri kotak(5,0,-12,6,5,-12.5);//kiri depan kotak(3.2,0,-12,5,1,-12.5);//kiri bawah kotak(0,0,-17.5,3.5,5,-18); kotak(0,4,-17.5,6,5,-18); kotak(0,0,-28.5,3.5,5,-29); kotak(0,4,-28.5,6,5,-29); glEnd(); glPopMatrix();
glPushMatrix(); glRotatef(pintu,1.0f,0.0f,0.0f); glTranslatef(pintu,0.0f,0.0f); glBegin(GL_QUADS); glColor3f(0.5f,0.5f,0.9f); kotak(20,0,-9,22,3.5,-9.5);//Pintu kanan depan kotak(6,0,-9.7,7,3.5,-11.8);//pintu tengah depan kotak(0.5,0.3,-12,3,3.5,-12.5);//pintu kiri depan kotak(15.7,0,-14.5,16.2,4,-17.3);//pintu dalam depan kotak(15,0,-18.7,16,3.8,-20.8);//pintu dalam belakang kotak(18,0,-26.2,19,3.8,-28.3);//pintu kamar mandi kotak(3.7,0,-28.5,5.8,3.8,-29);//pintu kiri belakang glEnd(); glPopMatrix();
glPushMatrix(); glBegin(GL_QUADS);
50
glColor3f(1.0f,1.0f,1.0f); kotak(20.2,2,-8.9,20.5,2.5,-9);//gagang Pintu kanan depan kotak(20.3,2.3,-8.8,20.4,2.4,-8.9); kotak(20.25,2.3,-8.7,20.7,2.4,-8.8); kotak(20.2,2,-9.5,20.5,2.5,-9.6);//gagang belakang kotak(20.3,2.3,-9.6,20.4,2.4,-9.7); kotak(20.25,2.3,-9.7,20.7,2.4,-9.8);
kotak(5.9,1.5,-11.2,6,2,-11.5);//gagang pintu tengah depan kotak(5.8,1.7,-11.3,5.9,1.9,-11.4); kotak(5.7,1.7,-11,5.8,1.9,-11.45); kotak(7,1.5,-11.2,7.1,2,-11.5);//belakang kotak(7.1,1.7,-11.3,7.2,1.9,-11.4); kotak(7.2,1.7,-11,7.3,1.9,-11.45);
kotak(2.5,1.8,-11.9,2.8,2.3,-12);//gagang pintu kiri depan kotak(2.6,2.1,-11.8,2.7,2.2,-11.9); kotak(2.3,2.1,-11.7,2.75,2.2,-11.8); kotak(2.5,1.8,-12.5,2.8,2.3,-12.6);//belakang kotak(2.6,2.1,-12.6,2.7,2.2,-12.7); kotak(2.3,2.1,-12.7,2.75,2.2,-12.8);
kotak(15.6,2,-14.7,15.7,2.5,-15);//gagang pintu dalam depan kotak(15.5,2.2,-14.8,15.6,2.4,-14.9); kotak(15.4,2.2,-14.75,15.5,2.4,-15.2); kotak(16.2,2,-14.7,16.3,2.5,-15);//belakang kotak(16.3,2.2,-14.8,16.4,2.4,-14.9); kotak(16.4,2.2,-14.75,16.5,2.4,-15.2);
kotak(14.9,2.1,-20.2,15,2.6,-20.5);//gagang pintu dalam belakang kotak(14.8,2.2,-20.3,14.9,2.5,-20.4); kotak(14.7,2.2,-20,14.8,2.5,-20.45);
51
kotak(16,2.1,-20.2,16.1,2.6,-20.5);//belakang kotak(16.1,2.2,-20.3,16.2,2.5,-20.4); kotak(16.2,2.2,-20,16.3,2.5,-20.45);
kotak(17.9,2.1,-27.7,18,2.6,-28);//gagang pintu kamar mandi kotak(17.8,2.2,-27.8,17.9,2.5,-27.9); kotak(17.7,2.2,-27.5,17.8,2.5,-27.95); kotak(19,2.1,-27.7,19.1,2.6,-28);//belakang kotak(19.1,2.2,-27.8,19.2,2.5,-27.9); kotak(19.2,2.2,-27.5,19.3,2.5,-27.95);
kotak(3.9,2,-28.4,4.2,2.5,-28.5);//gagang pintu kiri belakang kotak(4,2.3,-28.3,4.1,2.4,-28.4); kotak(3.95,2.3,-28.2,4.4,2.4,-28.3); kotak(3.9,2,-29,4.2,2.5,-29.1);//belakang kotak(4,2.3,-29.1,4.1,2.4,-29.2); kotak(3.95,2.3,-29.2,4.4,2.4,-29.3); glEnd(); glPopMatrix();
glPushMatrix(); glBegin(GL_QUADS); glColor3f(1.0f,1.0f,1.0f); kotak(16,0.5,-9,19.8,3.5,-9);//jendela kotak(13.8,0.5,-9,15.8,3.5,-9);//jendela kotak(3.2,1.2,-12,4.8,3.5,-12);//jendela glEnd(); glPopMatrix();
glPushMatrix(); glBegin(GL_QUADS); //glColor3f(0.2f,0.0f,0.0f);
52
//glColor3f(0.5450980392156863,
0.2705882352941176,
0.0745098039215686); //glColor3f(1.0f,0.5f,0.0f); glColor3f(0.803921568627451,
0.5215686274509804,
0.2470588235294118); //glColor3f(0.4613, 0.4627, 0.4174); //kayu pada pintu kotak(22,0.3,-9,22.2,4,-9.5); kotak(19.8,0.3,-9,20,4,-9.5); kotak(15.8,0.3,-9,16,4,-9.5); kotak(13.6,0.3,-9,13.8,4,-9.5); kotak(13.6,3.9,-9,22.2,4,-9.5); kotak(13.6,3.5,-9,22.2,3.6,-9.5); kotak(13.6,0.3,-9,20,0.5,-9.5);
kotak(6,0,-9.5,7,4,-9.7); kotak(6,0,-11.8,7,4,-12); kotak(6,3.5,-9.5,7,3.6,-12); kotak(6,3.9,-9.5,7,4,-12);
kotak(0.3,0,-12,0.5,4,-12.5); kotak(3,0,-12,3.2,4,-12.5); kotak(4.8,1,-12,5,4,-12.5); kotak(3.2,1,-12,4.8,1.2,-12.5); kotak(0.3,3.5,-12,5,3.6,-12.5); kotak(0.3,3.9,-12,5,4,-12.5);
kotak(15.7,0,-17.3,16.2,4,-17.5);
kotak(15,0,-20.8,16,4.5,-21); kotak(15,0,-18.5,16,4.5,-18.7); kotak(15,3.8,-18.5,16,4,-21);
53
kotak(15,4.3,-18.5,16,4.5,-21);
kotak(3.5,0,-28.5,3.7,4,-29); kotak(5.8,0,-28.5,6,4,-29); kotak(3.5,3.8,-28.5,6,4,-29);
glColor3f(1.0f,1.0f,1.0f); kotak(18,0,-26,19,3.8,-26.2); kotak(18,0,-28.3,19,3.8,-28.5); kotak(18,3.8,-26,19,4,-28.5); glEnd(); glPopMatrix();
glutSwapBuffers(); //Fungsi berikutnya adalah glutSwapBuffers(), yaitu digunakan untuk menukar bagian belakan buffer menjadi buffer layar (screen buffer). //Dalam modus double-buffered, perintah menggambar pada layar, tetapi menggambar pada buffer belakang layar. //Pada saat ingin menampilkan gambar, gambar yang berada di buffer belakang layar dipindahkan ke buffer layar, sehingga menghasilkan animasi yang sempurna }
void keyboard(unsigned char key, int x, int y) { switch (key) { // These will allow you to force some extra rotation by pressing the 'x,n,y,m,z' key. case 'x': xpoz=xpoz+5; if (xpoz>360) xpoz=0; glutPostRedisplay();
54
break; case 'c': xpoz=xpoz-5; if (xpoz>360) xpoz=0; glutPostRedisplay(); break; case 'y': ypoz=ypoz+5; if (ypoz>360) ypoz=90; glutPostRedisplay(); break; case 'u': ypoz=ypoz-5; if (ypoz>360) ypoz=0; glutPostRedisplay(); break; case 'z': zpoz = zpoz+5; if (zpoz>360) zpoz=0; glutPostRedisplay(); break; case 'w': e = e - 1; glutPostRedisplay(); break; case 's': e = e + 1; glutPostRedisplay(); break; case 'a': d = d + 1; glutPostRedisplay();
55
break; case 'd': d = d - 1; glutPostRedisplay(); break; case 'q': f = f + 1; glutPostRedisplay(); break; case 'e': f = f - 1; glutPostRedisplay(); break; case 27:; //Tekan ESC untuk exit exit(0); } } int main(int argc, char** argv) { glutInit(&argc, argv); glutInitDisplayMode (GLUT_RGB | GLUT_DEPTH | GLUT_DOUBLE); glutInitWindowSize (1024, 720); glutInitWindowPosition (100, 100); glutCreateWindow("Tugas Akhir"); init (); glutDisplayFunc(display); glutKeyboardFunc(keyboard); glutMainLoop(); return 0; }
56