rendered paste bodyvoid ExerciseN_ABXY::keyPressed(unsigned char key){ AbstractExercise::keyPressed(key); m_key = key; switch (m_key) { case '1': printf("Rasterizing polygon A\n"); glRotatef(0.4f,0.0f,0.0f,1.0f); glCallList(2); break; case '2': glTranslatef(0.0f, -10.0f,0.0f); glCallList(2); break; case '3': glRotatef(45, 0.0f,0.0f,10); glCallList(1); break; case '4': glTranslatef(-10.0f, 0.0f,0.0f); glCallList(2); break; case '6': glTranslatef(+10.0f, 0.0f,0.0f); glCallList(2); break; case '7': glRotatef(45, 0.0f,0.0f,10); glScalef(0.9f, 1,0.0f); glCallList(1); break; case '8': glTranslatef(0.0f, 10.0f,0.0f); glCallList(2); break; case '9': glScalef(1.2f, 1.2f,0.0f); glCallList(2); break; default: printf("Key %c (%d) not assigned!\n", m_key, m_key); break; }} void ExerciseN_ABXY::init(){ float orthogonalMatrix[16] = {2/ 800,0,0, 1, 0,2/ 600,0,1, 0,0, -2 / 1 , 1, 0,0,0, 1}; glMatrixMode(GL_PROJECTION); glLoadIdentity(); //glLoadMatrixf(orthogonalMatrix); glOrtho(0,800,0,600,0,1); glMatrixMode(GL_MODELVIEW); glNewList(1, GL_COMPILE); glBegin(GL_TRIANGLE_FAN ); int rad = 200; float angle = 2* PI / 8; float x = 0; float y = 0; for(int i = 0 ; i <8; i++){ glColor3f(1.0f - (i * 0.1f) ,0.19f,0.10f + (i * 0.11f) ); glVertex2d( sinf(i * angle)*rad, cosf(i * angle) * rad ); } glEnd(); glEndList(); glNewList(2, GL_COMPILE); rad = 150; for (int j = 0; j < 8; j ++){ glPushMatrix(); glTranslatef(sinf(j * angle) * rad , cosf(j * angle) * rad , 0.0f); glScalef(0.3f,0.3f,0.0f); glRotatef(j*j*10.0f, 0.0f, 0.0f, 1.0f); glCallList(1); glPopMatrix(); } glEndList(); glTranslatef(300,300,0.0f); glCallList(2);}void ExerciseN_ABXY::paint(){ glCallList(2);}