/*
9.feladat
Rajzoljunk n-ágú csillagokat!
*/
/*
A "c" és "v" billentyûkre változik a csillagok ágának száma
*/
#include "stdafx.h"
#define PI 3.1415926535898

static int circle_points = 4;
double points[10][2];

void init(void) {
     glClearColor(0.0,0.0,0.0,1.0);
     glMatrixMode(GL_PROJECTION);
     glLoadIdentity();
     glOrtho(-1.0,1.0,-1.0,1.0,-1.0,1.0);
     glMatrixMode(GL_MODELVIEW);
     glRotatef(18,0.0,0.0,1.0);
}
void display(void) {
     double angle;
     glClear(GL_COLOR_BUFFER_BIT);
     for(int i = 0;i < circle_points; i++) {
           angle = 2*PI*i/circle_points;
           if(i%2) { //minden másodikat egy "belsõ" körív mentén rajzol
                points[i][0] = 0.4*cos(angle);
                points[i][1] = 0.4*sin(angle);
           } else {
                points[i][0] = cos(angle);
                points[i][1] = sin(angle);
           }
     }
     glPointSize(6.0);
     glBegin(GL_LINE_LOOP);
     for(i = 0; i < circle_points; i++) {
      glVertex2dv(points[i]);
     }
     glEnd();
     glFlush();
     glutSwapBuffers();
}
void keyboard(unsigned char key, int x, int y) {
     switch(key) {
         case 27:
              exit(0);
              break;
     case 'c':
          if(circle_points < 26) {
               circle_points += 2;
               glutPostRedisplay();
          }
          break;
          }
     case 'v':
          if(circle_points > 2) {
               circle_points -=2;
               glutPostRedisplay();
          }
          break;
     default:
          break;
     }
}
int APIENTRY WinMain(HINSTANCE hInstance,
                                        HINSTANCE hPrevInstance,
                                        LPSTR lpCmdLine, int nShowCmd)
{
     glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
     glutInitWindowSize(150, 150);
     glutInitWindowPosition(100, 100);
     glutCreateWindow("csillag");
     init();
     glutDisplayFunc(display);
     glutKeyboardFunc(keyboard);
     glutMainLoop();
     return 0;
}