/* October 1999 * Brian J.Ross * Brock University, Dept of Computer Science * COSC 3P98 Midterm solution */ #if !defined(Linux) #include //Not Linux must be windows #endif #include #include #include #include #define MINDIM 0 #define MAXDIM 200 struct glob { float v1r, v1g, v1b, v2r, v2g, v2b, v3r, v3g, v3b, v4r, v4g, v4b; }; struct glob global; void randomizeColors(void) { global.v1r = (float) rand()/RAND_MAX; global.v1g = (float) rand()/RAND_MAX; global.v1b = (float) rand()/RAND_MAX; global.v2r = (float) rand()/RAND_MAX; global.v2g = (float) rand()/RAND_MAX; global.v2b = (float) rand()/RAND_MAX; global.v3r = (float) rand()/RAND_MAX; global.v3g = (float) rand()/RAND_MAX; global.v3b = (float) rand()/RAND_MAX; global.v4r = (float) rand()/RAND_MAX; global.v4g = (float) rand()/RAND_MAX; global.v4b = (float) rand()/RAND_MAX; } void swapColors(void) { float tmp; tmp = global.v1r; global.v1r = global.v3r; global.v3r = tmp; tmp = global.v1g; global.v1g = global.v3g; global.v3g = tmp; tmp = global.v1b; global.v1b = global.v3b; global.v3b = tmp; tmp = global.v2r; global.v2r = global.v4r; global.v4r = tmp; tmp = global.v2g; global.v2g = global.v4g; global.v4g = tmp; tmp = global.v2b; global.v2b = global.v4b; global.v4b = tmp; } void keybd(unsigned char key, int x, int y) { switch (key) { case 'c': case 'C': randomizeColors(); glutPostRedisplay(); break; case 'e': case 'E': swapColors(); glutPostRedisplay(); break; case 'q': case 'Q': exit(0); break; } } void poly(void) { glBegin(GL_POLYGON); glColor3f(global.v1r, global.v1g, global.v1b); glVertex2i(MINDIM, MINDIM); glColor3f(global.v2r, global.v2g, global.v2b); glVertex2i(MINDIM, MAXDIM); glColor3f(global.v3r, global.v3g, global.v3b); glVertex2i(MAXDIM, MAXDIM); glColor3f(global.v4r, global.v4g, global.v4b); glVertex2i(MAXDIM, MINDIM); glEnd(); glFlush(); } int main(argc, argv) int argc; char **argv; { glutInit(&argc, argv); glutInitWindowSize(MAXDIM, MAXDIM); glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); glutCreateWindow("window"); gluOrtho2D(MINDIM, MAXDIM, MINDIM, MAXDIM); glutDisplayFunc(poly); glutKeyboardFunc(keybd); randomizeColors(); glutMainLoop(); return 0; }