#include <math.h>
#include <GL/glut.h>
void init()
{
glClearColor(0.5, 0.9, 0.4, 0.0);
glMatrixMode(GL_PROJECTION);
gluOrtho2D(0.0, 800, 0.0, 600);
}
void home()
{
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(0.1, 0.2, 0.3);
glBegin(GL_LINE_LOOP);
glVertex2i(200, 100);
glVertex2i(200, 350);
glVertex2i(100, 350);
glVertex2i(100, 400);
glVertex2i(700, 400);
glVertex2i(700, 350);
glVertex2i(600, 350);
glVertex2i(600, 100);
glEnd();
glColor3f(0.2, 0.4, 0.3);
glBegin(GL_POLYGON);
glVertex2i(230, 320);
glVertex2i(350, 320);
glVertex2i(350, 230);
glVertex2i(230, 230);
glEnd();
glColor3f(0.1, 0.7, 0.5);
glLineWidth(5);
glBegin(GL_LINES);
glVertex2i(290, 320);
glVertex2i(290, 230);
glVertex2i(230, 273);
glVertex2i(350, 273);
glEnd();
glColor3f(0.2, 0.4, 0.3);
glBegin(GL_POLYGON);
glVertex2i(430, 320);
glVertex2i(550, 320);
glVertex2i(550, 230);
glVertex2i(430, 230);
glEnd();
glColor3f(0.1, 0.7, 0.5);
glLineWidth(5);
glBegin(GL_LINES);
glVertex2i(490, 320);
glVertex2i(490, 230);
glVertex2i(430, 273);
glVertex2i(550, 273);
glEnd();
glColor3f(0.7, 0.2, 0.9);
glBegin(GL_POLYGON);
glVertex2i(350, 200);
glVertex2i(425, 200);
glVertex2i(425, 100);
glVertex2i(350, 100);
glEnd();
glColor3f(0.3, 0.7, 0.9);
glPointSize(10);
glBegin(GL_POINTS);
glVertex2i(400, 150);
glEnd();
int centerx = 400;
int centery = 400;
int roofr = 100;
int roofd = 200;
float PI = 3.141592653589793238f;
float semicircleangle = PI * 1.0f;
int steps = 100;
glBegin(GL_TRIANGLE_FAN);
for (int i = 0; i < steps; i++) {
float theta = semicircleangle * float(i) / float(steps);
float x = roofr * cosf(theta);
float y = roofr * sinf(theta);
glVertex2f(x + centerx, y + centery);
}
glEnd();
int moonr = 50;
int mooncenterx = 700;
int mooncentery = 500;
int moonsteps = 100;
float circleangle = PI * 2.0f;
glColor3f(1.0, 1.0, 1.0);
glBegin(GL_TRIANGLE_FAN);
for (int a = 0; a <= moonsteps; a++) {
float angle = circleangle * float(a) / float(moonsteps);
float moonx = moonr * cosf(angle);
float moony = moonr * sinf(angle);
glVertex2f(moonx + mooncenterx, moony + mooncentery);
}
glEnd();
int moon2r = 50;
int mooncenter2x = 725;
int mooncenter2y = 525;
int moonsteps2 = 100;
float circleangle2 = PI * 2.0f;
glColor3f(0.5, 0.9, 0.4);
glBegin(GL_TRIANGLE_FAN);
for (int b = 0; b <= moonsteps; b++) {
float angle2 = circleangle * float(b) / float(moonsteps2);
float moon2x = moonr * cosf(angle2);
float moon2y = moonr * sinf(angle2);
glVertex2f(moon2x + mooncenter2x, moon2y + mooncenter2y);
}
glEnd();
glFlush();
}
int main(int argc, char** argv) {
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowPosition(100, 100);
glutInitWindowSize(900, 700);
glutCreateWindow("2D House Assignment");
init();
glutDisplayFunc(home);
glutMainLoop();
}