/**************************************************/ /* Random faults applied to a quadrilateral */ /* f - switches between fill and line mode */ /* r - turns on and off rotation */ /* space - one more step */ /* (C) Bedrich Benes 2003 */ /* bbenes@purdue.ed */ /**************************************************/ #include #include #include #include #define MAX 70 #define SCENE 1 GLint n=1; GLfloat a[MAX][MAX]; GLint rotate; GLint fill=1; void Idle(void) { if (rotate) glRotatef(1,1,1,1); glClear(GL_COLOR_BUFFER_BIT); //clear all glCallList(SCENE); glutSwapBuffers(); } void Display(void) { register i,j; glNewList(SCENE,GL_COMPILE); if (fill) glPolygonMode(GL_FRONT_AND_BACK,GL_FILL); else glPolygonMode(GL_FRONT_AND_BACK,GL_LINE); for (i=0;i0) a[i][j]+=elev; else a[i][j]-=elev; } } } void Key(unsigned char key, GLint i, GLint j) { switch(key){ case 'r' : case 'R' : rotate=(rotate==0);break; case 'f' : case 'F' : fill=(fill==0);glutPostRedisplay();break; case ' ' : RandomFault();glutPostRedisplay();break; case 27 : case 'q': case 'Q': exit(0); } } int main(int argc, char **argv) { srand(5); glutInitWindowSize(500,500); glutInit(&argc, argv); glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA); glutCreateWindow("Random Faults"); MyInit(); glutDisplayFunc(Display); glutIdleFunc(Idle); glutKeyboardFunc(Key); glutReshapeFunc(myReshape); glutMainLoop(); return 0; }