#include <GL/glut.h> #include <stdlib.h> #include <stdio.h> #include <time.h> #include <math.h> void Reshape(int width, int height) { glViewport(0, 0, width, height); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluOrtho2D(0,1000,0,1000); glMatrixMode(GL_MODELVIEW); } void cir(int xc,int yc,int r) // עיגול מנקודות { int x,y,alfa; for(alfa=0;alfa<=360;alfa++){ x=xc+floor(r*cos(alfa*3.14/180)+0.55); y=yc+floor(r*sin(alfa*3.14/180)+0.55); glBegin(GL_POINTS); glVertex2i(x,y); glEnd(); } } void cir1(int xc,int yc,int r) // עיגול מקווים { int x,y,alfa; for(alfa=0;alfa<=360;alfa++){ x=xc+floor(r*cos(alfa*3.14/180)+0.55); y=yc+floor(r*sin(alfa*3.14/180)+0.55); glBegin(GL_LINES); glVertex2i(x,y); glVertex2i(xc,yc); glEnd(); } } void cir2(int xc,int yc,int r) // עיגול מלא { int x,y,alfa=0,x1,y1; x1=xc+floor(r*cos(alfa*3.14/180)+0.55); y1=yc+floor(r*sin(alfa*3.14/180)+0.55); for(alfa=0;alfa<=360;alfa++){ x=xc+floor(r*cos(alfa*3.14/180)+0.55); y=yc+floor(r*sin(alfa*3.14/180)+0.55); glBegin(GL_LINES); glVertex2i(x,y); glVertex2i(x1,y1); x1=x; y1=y; glEnd(); } } void spiral(int xc,int yc,int a) // ספירלה מנקודות { double theta,dtheta,r; int x1,y1; theta = 0.0; dtheta = (double)1/a; glColor3f(1,0,0); while(theta<30) { r=a*theta; x1=floor(xc + r*cos(theta)+0.55); y1=floor(yc + r*sin(theta)+0.55); glBegin(GL_POINTS); glVertex2i(x1,y1); glEnd(); theta+=dtheta; } } void spiral1(int xc,int yc,int a) // ספירלה מקווים { double theta,dtheta,r; int x,y,x1,y1; theta = 0.0; dtheta = (double)1/a; x=yc; y=xc; glColor3f(1,0,0); while(theta<30) { r=a*theta; x1=floor(xc + r*cos(theta)+0.55); y1=floor(yc + r*sin(theta)+0.55); glBegin(GL_LINES); glVertex2i(x1,y1); glVertex2i(x,y); x=x1; y=y1; glEnd(); theta+=dtheta; } } void fullcir(int xc,int yc,int r) // פונקציה שממלא עיגול וכל רבע מלא בצבע אחר { int x,y; double alfa; for(alfa=0;alfa<=360;alfa+=0.001){ if(alfa<=90) glColor3f(1,0,0); else if(alfa > 90 && alfa <=180) glColor3f(0,1,0); else if(alfa > 180 && alfa <=270) glColor3f(0,0,1); else glColor3f(1,1,1); x=xc+floor(r*cos(alfa*3.14/180)+0.55); y=yc+floor(r*sin(alfa*3.14/180)+0.55); glLineWidth(4); glBegin(GL_LINES); glVertex2i(x,y); glVertex2i(xc,yc); glEnd(); } } void sectorcir(int xc,int yc,int r,int sector) //מחלקת עיגול לחלקים { int x,y,alfa; for(alfa=0;alfa<=360;alfa+=(360/sector)){ x=xc+floor(r*cos(alfa*3.14/180)+0.55); y=yc+floor(r*sin(alfa*3.14/180)+0.55); glBegin(GL_LINES); glVertex2i(x,y); glVertex2i(xc,yc); glEnd(); } } void Draw(void) { glClear(GL_COLOR_BUFFER_BIT); ///////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////// glFlush(); } int main(int argc, char *argv) { glutInit(&argc, argv); glutInitWindowSize(1027,768); glutInitWindowPosition(0, 0); glutInitDisplayMode(GLUT_RGB); glutCreateWindow("שעור 5 תרגיל 1"); glutReshapeFunc(Reshape); glutDisplayFunc(Draw); glClearColor(0,0,0,0); glutMainLoop(); return 0; }
|