#include #include #include #include using namespace std; int flag = 0; float fx = 40, fy = 50; float theta = 30; // p0 p1 p2 p3 p4 p5 p6 p7 p8 float p[9][2] = { {20,40},{20,20},{30,20},{50,20},{60,20},{30,30},{50,30},{40,50},{60,40}, }; void my_init() { glMatrixMode(GL_PROJECTION_MATRIX); glLoadIdentity(); gluOrtho2D(0, 100, 0, 100); glMatrixMode(GL_MODELVIEW); } void draw_house(float m[9][2]) { glColor3f(1, 0, 0); glBegin(GL_LINE_LOOP); glVertex2fv(m[0]); glVertex2fv(m[1]); glVertex2fv(m[4]); glVertex2fv(m[8]); glEnd(); glBegin(GL_LINE_STRIP); glVertex2fv(m[2]); glVertex2fv(m[5]); glVertex2fv(m[6]); glVertex2fv(m[3]); glEnd(); glBegin(GL_LINE_STRIP); glVertex2fv(m[0]); glVertex2fv(m[7]); glVertex2fv(m[8]); glEnd(); } void disp() { glClearColor(1, 1, 1, 1); glClear(GL_COLOR_BUFFER_BIT); /* if (flag == 0) { draw_house(p); flag = 1; glFlush(); } */ float r[9][2]; float pi = 3.14 / 180; for (int i = 0; i < 9; i++) { int x = p[i][0]; int y = p[i][1]; float xa = x * cos(theta*pi) - y * sin(theta*pi) + fx * (1 - cos(theta*pi)) + sin(theta*pi)*fy; float ya = x * sin(theta*pi) + y * sin(theta*pi) + fy * (1 - cos(theta*pi)) - sin(theta*pi)*fx; r[i][0] = xa; r[i][1] = ya; // cout << r[i][0] << r[i][1]; } draw_house(p); draw_house(r); glFlush(); } int main() { glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); glutInitWindowSize(500, 500); glutCreateWindow("Hello"); my_init(); glutDisplayFunc(disp); glutMainLoop(); }