#include "cs148.h"

struct GLintPoint {
  GLint x, y;
};


void Sierpinski(void) {

  GLintPoint T[3] = {{10,10}, {600,30}, {300,400}};
  
  int index = CS148::RandInt(3);
  GLintPoint point = T[index];
  glVertex2i(point.x, point.y);
  for (int i = 0; i < 10000; i++) {
    index = CS148::RandInt(3);
    point.x = (point.x + T[index].x) / 2;
    point.y = (point.y + T[index].y) / 2;
    glBegin(GL_POINTS);
      glVertex2i(point.x, point.y);
    glEnd();
  }
}


void myDisplay(void) {
  glClear(GL_COLOR_BUFFER_BIT);
  Sierpinski();
  glFlush();
}


void myInit(void) {
  glClearColor(1.0,1.0,1.0,0.0);
  glColor3f(0.0f,0.0f,0.0f);
  glPointSize(2.0);
  glMatrixMode(GL_PROJECTION);
  glLoadIdentity();
  gluOrtho2D(0.0, 640.0, 0.0, 480.0);
}


void main(int argc, char** argv) {
  glutInit(&argc, argv);
  glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
  glutInitWindowSize(640,480);
  glutInitWindowPosition(100,150);
  glutCreateWindow("OpenGL");
  glutDisplayFunc(myDisplay);
  myInit();
  glutMainLoop();
}

