Jumat, 18 Oktober 2013

Program C++ Untuk Rumah


trans / letak
//Program Rumah Adat Joglo Jawa Tengah
//Tekan x untuk putar dengan sumbu putar x
//Tekan y 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
#include <stdlib.h>
#include <GL/glut.h>
int w=600, h=600, z=0;
int x1=0, y1=0, sudut=0, z1=0;
float skalaX=1, skalaY=1, skalaZ=1;
int cx, cy;
static float ypoz = 0, zpoz = 0, xpoz = 0,a = 0, b = 0,c = -10;
void test(int x1,int y1,int x2,int y2,int x3,int y3,int x4,int y4,int
z1,float z2,float z3){
glColor3f(0.9,0.75,0.14); //Depan
glVertex3d(x1,y1,z2);
glVertex3d(x2,y2,z2);
glVertex3d(x3,y3,z2);
glVertex3d(x4,y4,z2);
glColor3f(0.45,0.11,0.+10);//Kanan
glVertex3d(x2,y2,z2);
glVertex3d(x2,y2,z1);
glVertex3d(x3,y3,z1);
glVertex3d(x3,y3,z2);
glColor3f(0.25,0.35,0.-10);//belakang
glVertex3d(x1,y1,z1);
glVertex3d(x2,y2,z1);
glVertex3d(x3,y3,z1);
glVertex3d(x4,y4,z1);
glColor3f(0.50,0.11,0.+13);//Kiri
glVertex3d(x1,y1,z2);
glVertex3d(x1,y1,z1);
glVertex3d(x4,y4,z1);
glVertex3d(x4,y4,z2);
glColor3f(0.75,0.55,0.55);//Bawah
glVertex3d(x1,y1,z2);
glVertex3d(x2,y2,z2);
glVertex3d(x2,y2,z1);
glVertex3d(x1,y1,z1);
glColor3f(0.88,0.60,0.33);//Atas
glVertex3d(x3,y3,z2);
glVertex3d(x4,y4,z2);
glVertex3d(x4,y4,z1);
glVertex3d(x3,y3,z1);
}

void testin(int x1,int y1,int x2,int y2,int x3,int y3,int x4,int
y4,float z1,float z2,float z3){ //Atap
glColor3f(0.22,0.10,0.83);//kanan
glVertex3d(x3,y3,z1);
glVertex3d(x3,y3,z2);
glVertex3d(x3,y1,z3);
glColor3f(0.50,0.5,0.-10);//kiri
glVertex3d(x4,y4,z2);
glVertex3d(x4,y4,z1);
glVertex3d(x4,y1,z3);
}
void testo(int x1,int y1,int x2,int y2,int x3,int y3,int x4,int
y4,float z1,float z2,float z3){//Atap
glColor3f(0.26,0.55,0.-33);//belakang
glVertex3d(x4,y4,z1);
glVertex3d(x3,y3,z1);
glVertex3d(x3,y1,z3);
glVertex3d(x4,y1,z3);
glColor3f(0.10,0.11,0.+50);//depan
glVertex3d(x3,y3,z2);
glVertex3d(x4,y4,z2);
glVertex3d(x4,y1,z3);
glVertex3d(x3,y1,z3);
}
void init(void)
{
glClearColor (0.0, 20.0, 200.0, 0.1);
glOrtho(-15,15,-1,8,-55,25);
glEnable(GL_DEPTH_TEST);
glShadeModel (GL_SMOOTH);
glMatrixMode (GL_PROJECTION);
glLoadIdentity ();
gluPerspective(80.0,2.2, 1.0, 20.0);
glMatrixMode (GL_MODELVIEW);
}

void display(void)
{
glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity ();
glTranslatef(a,b,c);
glRotatef(xpoz,1,0,0);
glRotatef(ypoz,0,1,0);
glRotatef(zpoz,0,0,1);

glPushMatrix();//tanah
glColor3f(0.-10,0.-7,0.-1);
glTranslatef(-0.6, -3, -0.46);
glScalef(5,0.1,5);
glutSolidCube(6);
glPopMatrix();

//atap kanan
/*glPushMatrix();
glEnable(GL_COLOR_MATERIAL);
glColor3f(0.30,0.2,0.10);
glTranslatef(4.5,2,-1);
glRotatef(45,0,1,0);
glScalef(6,4,6);
glutSolidOctahedron();
glDisable(GL_COLOR_MATERIAL);
glPopMatrix();

//atap kiri
glPushMatrix();
glEnable(GL_COLOR_MATERIAL);
glColor3f(0.30,0.2,0.15);
glTranslatef(-4.5,2,-1);
glRotatef(45,0,1,0);
glScalef(7,4,7);
glutSolidOctahedron();
glDisable(GL_COLOR_MATERIAL);
glPopMatrix();

//atap 2
glPushMatrix();
glEnable(GL_COLOR_MATERIAL);
glColor3f(0.70,8.58,0.10);
glTranslatef(0,2,-0);
glRotatef(45,0,1,0);
glScalef(7,4,7);
glutSolidOctahedron();
glDisable(GL_COLOR_MATERIAL);
glPopMatrix();

//atap atas
glPushMatrix();
glEnable(GL_COLOR_MATERIAL);
glColor3f(1.10,1.10,0.-10);
glTranslatef(0,4,-1);
glRotatef(45,0,1,0);
glScalef(7,5,7);
glutSolidOctahedron();
glDisable(GL_COLOR_MATERIAL);
glPopMatrix();
*/

//pohon depan kanan
glPushMatrix();//
glEnable(GL_COLOR_MATERIAL);
glColor3f(1, 0.11, 0.10);
glTranslatef(8,0,10);
glScalef(0.2, 6, 0.2);
glutSolidCube(1);
glEnable(GL_COLOR_MATERIAL);
glPopMatrix();
glPushMatrix();//
glEnable(GL_COLOR_MATERIAL);
glColor3f(0,1,0);
glTranslatef(8,3,10);
glRotatef(5,0,1,0);
glScalef(1,-4,1);
glutSolidOctahedron();
glDisable(GL_COLOR_MATERIAL);
glPopMatrix();
glPushMatrix();///////
glEnable(GL_COLOR_MATERIAL);
glColor3f(1, 0.11, 0);
glTranslatef(6,0,10);
glScalef(0.2, 5, 0.2);
glutSolidCube(1);
glEnable(GL_COLOR_MATERIAL);
glPopMatrix();
glPushMatrix();//
glEnable(GL_COLOR_MATERIAL);
glColor3f(0,1,0);
glTranslatef(6,1,10);
glRotatef(5,0,1,0);
glScalef(1,-2,1);
glutSolidOctahedron();
glDisable(GL_COLOR_MATERIAL);
glPopMatrix();
glPushMatrix();///////
glEnable(GL_COLOR_MATERIAL);
glColor3f(1, 0.11, 0);
glTranslatef(10,-2,10);
glScalef(0.2, 2, 0.2);
glutSolidCube(1);
glEnable(GL_COLOR_MATERIAL);
glPopMatrix();
glPushMatrix();//
glEnable(GL_COLOR_MATERIAL);
glColor3f(0,1,0);
glTranslatef(10,0,10);
glRotatef(5,0,1,0);
glScalef(1,-2,1);
glutSolidOctahedron();
glDisable(GL_COLOR_MATERIAL);
glPopMatrix();

//pohon depan kiri
glPushMatrix();
glEnable(GL_COLOR_MATERIAL);
glColor3f(1, 0.11, 0);
glTranslatef(-8,0,10);
glScalef(0.2, 6, 0.2);
glutSolidCube(1);
glEnable(GL_COLOR_MATERIAL);
glPopMatrix();
glPushMatrix();//
glEnable(GL_COLOR_MATERIAL);
glColor3f(0,1,0);
glTranslatef(-8,3,10);
glRotatef(5,0,1,0);
glScalef(1,-4,1);
glutSolidOctahedron();
glDisable(GL_COLOR_MATERIAL);
glPopMatrix();
glPushMatrix();///////
glEnable(GL_COLOR_MATERIAL);
glColor3f(1, 0.11, 0);
glTranslatef(-6,0,10);
glScalef(0.2, 5, 0.2);
glutSolidCube(1);
glEnable(GL_COLOR_MATERIAL);
glPopMatrix();
glPushMatrix();//
glEnable(GL_COLOR_MATERIAL);
glColor3f(0,1,0);
glTranslatef(-6,1,10);
glRotatef(5,0,1,0);
glScalef(1,-2,1);
glutSolidOctahedron();
glDisable(GL_COLOR_MATERIAL);
glPopMatrix();
glPushMatrix();///////
glEnable(GL_COLOR_MATERIAL);
glColor3f(1, 0.11, 0);
glTranslatef(-10,-2,10);
glScalef(0.2, 2, 0.2);
glutSolidCube(1);
glEnable(GL_COLOR_MATERIAL);
glPopMatrix();
glPushMatrix();//
glEnable(GL_COLOR_MATERIAL);
glColor3f(0,1,0);
glTranslatef(-10,0,10);
glRotatef(5,0,1,0);
glScalef(1,-2,1);
glutSolidOctahedron();
glDisable(GL_COLOR_MATERIAL);
glPopMatrix();

//pohon belakang kanan
glPushMatrix();//
glEnable(GL_COLOR_MATERIAL);
glColor3f(1, 0.11, 0);
glTranslatef(8,0,-10);
glScalef(0.2, 6, 0.2);
glutSolidCube(1);
glEnable(GL_COLOR_MATERIAL);
glPopMatrix();
glPushMatrix();//
glEnable(GL_COLOR_MATERIAL);
glColor3f(0,1,0);
glTranslatef(8,3,-10);
glRotatef(5,0,1,0);
glScalef(1,-4,1);
glutSolidOctahedron();
glDisable(GL_COLOR_MATERIAL);
glPopMatrix();
glPushMatrix();///////
glEnable(GL_COLOR_MATERIAL);
glColor3f(1, 0.11, 0);
glTranslatef(6,0,-10);
glScalef(0.2, 5, 0.2);
glutSolidCube(1);
glEnable(GL_COLOR_MATERIAL);
glPopMatrix();
glPushMatrix();//
glEnable(GL_COLOR_MATERIAL);
glColor3f(0,1,0);
glTranslatef(6,1,-10);
glRotatef(5,0,1,0);
glScalef(1,-2,1);
glutSolidOctahedron();
glDisable(GL_COLOR_MATERIAL);
glPopMatrix();
glPushMatrix();///////
glEnable(GL_COLOR_MATERIAL);
glColor3f(1, 0.11, 0);
glTranslatef(10,-2,-10);
glScalef(0.2, 2, 0.2);
glutSolidCube(1);
glEnable(GL_COLOR_MATERIAL);
glPopMatrix();
glPushMatrix();//
glEnable(GL_COLOR_MATERIAL);
glColor3f(0,1,0);
glTranslatef(10,0,-10);
glRotatef(5,0,1,0);
glScalef(1,-2,1);
glutSolidOctahedron();
glDisable(GL_COLOR_MATERIAL);
glPopMatrix();

//pohon belakang kiri
glPushMatrix();
glEnable(GL_COLOR_MATERIAL);
glColor3f(4, 0.10, 0);
glTranslatef(-8,0,100);
glScalef(0.2, 8, 0.5);
glutSolidCube(1);
glEnable(GL_COLOR_MATERIAL);
glPopMatrix();
glPushMatrix();//
glEnable(GL_COLOR_MATERIAL);
glColor3f(0,1,0);
glTranslatef(-8,3,-10);
glRotatef(5,0,1,0);
glScalef(1,-4,1);
glutSolidOctahedron();
glDisable(GL_COLOR_MATERIAL);
glPopMatrix();
glPushMatrix();///////
glEnable(GL_COLOR_MATERIAL);
glColor3f(1, 0.11, 0);
glTranslatef(-6,0,-10);
glScalef(0.2, 5, 0.2);
glutSolidCube(1);
glEnable(GL_COLOR_MATERIAL);
glPopMatrix();
glPushMatrix();//
glEnable(GL_COLOR_MATERIAL);
glColor3f(0,1,0);
glTranslatef(-6,1,-10);
glRotatef(5,0,1,0);
glScalef(1,-2,1);
glutSolidOctahedron();
glDisable(GL_COLOR_MATERIAL);
glPopMatrix();
glPushMatrix();///////
glEnable(GL_COLOR_MATERIAL);
glColor3f(1, 0.11, 0);
glTranslatef(-10,-2,-10);
glScalef(0.2, 2, 0.2);
glutSolidCube(1);
glEnable(GL_COLOR_MATERIAL);
glPopMatrix();
glPushMatrix();//
glEnable(GL_COLOR_MATERIAL);
glColor3f(0,1,0);
glTranslatef(-10,0,-10);
glRotatef(5,0,1,0);
glScalef(1,-2,1);
glutSolidOctahedron();
glDisable(GL_COLOR_MATERIAL);
glPopMatrix();


glBegin(GL_QUADS);//Rumah
test(-6,-2, 6,-2 ,6,2 ,-6,2, -5,3,-0);//rumah
test(-8,2, 0,8 ,8,2, 8,2,-5,3,-0);//atap
test(8,-2,8,-2,8,2,8,2,-5,3,0);//kamar
test(-8,-2,8,-2,8,-3,-8,-3,-6,8,0);//Teras
test(-8,-2,-7,-2,-7,2,-8,2,4,4.5,4);//Tiang kiri1
test(-3,-2,-2,-2,-2,2,-3,2,4,4.5,4);//Tiang kiri2
test(7,-2,8,-2,8,2,7,2,4,4.5,4);// Tiang kanan
test(3,-2,2,-2,2,2,3,2,4,4.5,4);// Tiang kanan
//testo(-7,7,0,0,7,3,-7,3,-5.5,4.5,0);//atap
//testo(-8,8,0,0,8,2,-8,2,-5.5,4.5,0);

glColor3f(0.85,0.85,0.43);//plafon belakang
glVertex3d(8,1.8,-5.5);
glVertex3d(-8,1.8,-5.5);
glVertex3d(-8,1.8,4.5);
glVertex3d(8,1.8,4.5);
glVertex3d(8,1.8,-5.5);
glVertex3d(-8,1.8,-5.5);
glVertex3d(-8,2,-5.5);
glVertex3d(8,2,-5.5);

glColor3f(0.85,0.85,0.43);//plafon depan
glVertex3d(8,1.8,4);
glVertex3d(-8,1.8,4);
glVertex3d(-8,1.8,4.5);
glVertex3d(8,1.8,4.5);//
glVertex3d(8,1.8,4.5);
glVertex3d(-8,1.8,4.5);
glVertex3d(-8,2,4.5);
glVertex3d(8,2,4.5);
glColor3f(0.85,0.85,0.43);//plafon 1
glVertex3d(7,2,-4);
glVertex3d(-7,2,-4);
glVertex3d(-7,2,4.5);
glVertex3d(7,2,4.5);
glVertex3d(7,2,4.5);
glVertex3d(-7,2,4.5);
glVertex3d(-7,2,4.5);
glVertex3d(7,2,4.5);

glColor3f(0.85,0.85,0.43);//plafon 2
glVertex3d(8,2,-5.5);
glVertex3d(-8,2,-5.5);
glVertex3d(-8,2,4.5);
glVertex3d(8,2,4.5);
glVertex3d(8,2,-5.5);
glVertex3d(-8,2,-5.5);
glVertex3d(-8,2,-5.5);
glVertex3d(8,2,-5.5);

glVertex3d(3,-1,4.1);//jendela kamar2
glVertex3d(5,-1,4.1);
glVertex3d(5,1,4.1);
glVertex3d(3,1,4.1);
glVertex3d(-2,-2,3.);//pintu depan
glVertex3d(2,-2,3.05);
glVertex3d(2,1.3,3.05);
glVertex3d(-2,1.3,3.05);
glVertex3d(-2,-2,-5.05);//pintu belakang
glVertex3d(2,-2,-5.05);
glVertex3d(2,1,-5.05);
glVertex3d(-2,1,-5.05);
glVertex3d(-3,-1,4.1);//jendela rmh1 depan
glVertex3d(-5,-1,4.1);
glVertex3d(-5,1,4.1);
glVertex3d(-3,1,4.1);
glVertex3d(-6.5,-1,-5.05);//jendela rmh1 belakang
glVertex3d(-2.5,-1,-5.05);
glVertex3d(-2.5,1,-5.05);
glVertex3d(-6.5,1,-5.05);

glVertex3d(6.5,-1,-5.05);//jendela rmh2 belakang
glVertex3d(2.5,-1,-5.05);
glVertex3d(2.5,1,-5.05);
glVertex3d(6.5,1,-5.05);
glEnd();

//glBegin(GL_TRIANGLES);
//testin(-8,8,0,6,8,2,-8,2,-5.5,4.5,0);
//glEnd();

glBegin(GL_LINES);
glColor3f(0.0f,0.0f,0.0f);
glVertex3d(8,1.8,4.5);
glVertex3d(-8,1.8,4.5);
glVertex3d(-8,1.8,-5.5);
glVertex3d(8,1.8,-5.5);
glColor3f(1,0,0);
glVertex3d(-4.5,-1,-5.05);
glVertex3d(-4.5,1,-5.05);
glVertex3d(4.5,-1,-5.05);
glVertex3d(4.5,1,-5.05);
glEnd();
glutSwapBuffers();
}
void keyboard(unsigned char key, int x, int y)
{
switch (key) {
case 'x':
xpoz=xpoz+5;
if (xpoz>360) xpoz=0;
glutPostRedisplay();
break;
case 'y':
ypoz=ypoz+5;
if (ypoz>360) ypoz=0;
glutPostRedisplay();
break;
case 'z':
zpoz = zpoz+1;
if (zpoz>360) zpoz=0;
glutPostRedisplay();
break;
case 'w':
b = b + 1;
glutPostRedisplay();
break;
case 's':
b = b - 1;
glutPostRedisplay();
break;
case 'a':
a = a + 1;
glutPostRedisplay();
break;
case 'd':
a = a - 1;
glutPostRedisplay();
break;
case 'q':
c = c + 1;
glutPostRedisplay();
break;
case 'e':
c = c - 1;
glutPostRedisplay();
break;
}
}

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();
}

int main(int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode (GLUT_RGB | GLUT_DEPTH | GLUT_DOUBLE);
glutInitWindowSize (800, 500);
glutInitWindowPosition (300, 100);
glutCreateWindow("Rumah Joglo Jawa Tengah");
init ();
glutReshapeFunc(resize);
glutDisplayFunc(display);
glutKeyboardFunc(keyboard);
glutMainLoop();
return 0;
}

0 komentar: