#include <GL/gl.h>
#include <GL/glut.h>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#define window_width 1080
#define window_height 720
void drawFilledSun() {
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
glTranslatef(0,0,-10);
int i,x,y;
double radius=0.30;
glColor3ub(0,0,255);
double twicepi=2.0*3.142;
x=0,y=0;
glBegin(GL_TRIANGLE_FAN);
glVertex2f(x,y);
for(i=0;i<=20;i++)
{
glVertex2f((x+(radius*cos(i*twicepi/20))),
(y+(radius*sin(i*twicepi/20))));
}
glEnd();
}
void drawCircle(float cx,float cy,float r,int num_segments) {
glBegin(GL_LINE_LOOP);
for(int ii=0;ii<num_segments;ii++) {
float theta=2.0f*3.1415926f*float(ii)/float(num_segments);
float x=r*cos(theta);
float y=r*sin(theta);
glVertex2f(x+cx,y+cy);
}
glEnd(); }
void main_loop_function()
{
int c;
drawFilledSun();
drawCircle(0,0,0.5,100);
drawCircle(0,0,0.7,100);
drawCircle(0,0,0.9,100);
drawCircle(0,0,1.1,100);
drawCircle(0,0,1.3,100);
drawCircle(0,0,1.5,100);
drawCircle(0,0,1.7,100);
drawCircle(0,0,1.9,100);
drawCircle(0,0,2.1,100);
drawCircle(0,0,2.3,100);
drawCircle(0,0,2.5,100);
drawCircle(0,0,2.7,100);
drawCircle(0,0,2.9,100);
drawCircle(0,0,3.1,100);
drawCircle(0,0,3.3,100);
drawCircle(0,0,3.5,100);
drawCircle(0,0,3.7,100);
drawCircle(0,0,3.9,100);
drawCircle(0,0,4.1,100);
glutSwapBuffers();
c=getchar();
}
void GL_Setup(int width, int height) {
glViewport(0,0,width,height);
glMatrixMode(GL_PROJECTION);
glEnable(GL_DEPTH_TEST);
gluPerspective(45,(float)width/height,0.1,100);
glMatrixMode(GL_MODELVIEW);
}
int main(int argc, char** argv) {
glutInit(&argc, argv);
glutInitWindowSize(window_width, window_height);
glutInitDisplayMode(GLUT_RGB|GLUT_DOUBLE);
glutCreateWindow("GLUT Example!!");
glutIdleFunc(main_loop_function);
GL_Setup(window_width, window_height);
glutMainLoop(); }

Comments
Post a Comment