#include #include #define PI 3.141592653589793 void circle(float xc, float yc, float R) { double theta; glBegin(GL_LINE_STRIP); for(theta=0.0; theta<=PI*2.0+0.10; theta=theta+0.10) glVertex2d(xc+R*cos(theta), yc+R*sin(theta)); glEnd(); } void mydisplay() { glClear(GL_COLOR_BUFFER_BIT); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); glRotatef(45.0, 0.0, 0.0, 1.0); glTranslatef(0.4, -0.3, 0.0); glScalef(0.5, 0.3, 1.0); glBegin(GL_LINE_STRIP); glVertex2d(-4.0, 4.0); glVertex2d(4.0, -4.0); glEnd(); glBegin(GL_LINE_STRIP); glVertex2d(-4.0, 4.0); glVertex2d(2.0, -4.0); glEnd(); glBegin(GL_LINE_STRIP); glVertex2d(2.0, 0.0); glVertex2d(2.1, 4.0); glEnd(); glBegin(GL_LINE_STRIP); glVertex2d(0.0, 0.1); glVertex2d(2.0, 0.0); glEnd(); glBegin(GL_LINE_STRIP); glVertex2d(-4.0, -4.0); glVertex2d(-4.0, 4.0); glVertex2d(4.0, 4.0); glVertex2d(4.0, -4.0); glVertex2d(-4.0, -4.0); glEnd(); circle(0.0, 0.0, 2.0); circle(0.0, 2.0, 4.0); glFlush(); } void init() { glClearColor (1.0, 1.0, 1.0, 1.0); glColor3f(0.0, 0.0, 0.0); glViewport((GLsizei)100, (GLsizei)100, (GLsizei)200, (GLsizei)200); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluOrtho2D(-4.0, 4.0, -4.0, 4.0); } void myreshape(int w, int h) {} //Empty reshape hack for glViewport int main(int argc, char** argv) { glutInit(&argc,argv); glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB); glutInitWindowSize(401,401); glutInitWindowPosition(0, 0); glutCreateWindow("HW1"); glutDisplayFunc(mydisplay); glutReshapeFunc(myreshape); init(); glutMainLoop(); }