Source code
//gloabal variable
double mainangle=0;
double incx1=0, incy1=0;
double incx2=0, incy2=0;
double incx3=0, incy3=0;
double incx4=0, incy4=0;
//key press
void keyboardListener(unsigned char key, int x,int y)
{
switch(key)
{
case '1':
mainangle += 1;
break;
case '2':
mainangle -= 1;
break;
case '3':
// code animating
//1st cord
incx1 += 0.5;
incy1 += 0.5;
//2nd cord
incx2 -= 0.5;
incy2 += 0.5;
//3rd cord
incx3 -= 0.5;
incy3 -= 0.5;
//3rd cord
incx4 += 0.5;
incy4 -= 0.5;
//printf("1");
break;
case '4':
//1st cord
incx1 -= 0.5;
incy1 -= 0.5;
//2nd cord
incx2 += 0.5;
incy2 -= 0.5;
//3rd cord
incx3 += 0.5;
incy3 += 0.5;
//3rd cord
incx4 -= 0.5;
incy4 += 0.5;
break;
default:
break;
}
}
//draw 1st coordinate
void circle_1stCor(float radius_x, float radius_y)
{
int i = 0;
float angle = 0.0;
//glPushMatrix();
glRotatef(mainangle,0,0,1);
glTranslatef(incx1,incy1,0);
//glPopMatrix();
glBegin(GL_POLYGON);
{
for(i = 0; i <= 25; i++)
{
angle = 2 * 3.1416 * i / 100;
//printf("%d ",angle);
glColor3f(1.0, 0.0, 0.0);
glVertex3f (cos(angle) * radius_x, sin(angle) * radius_y, 0);
}
glVertex3f (0,0, 0);
}
glEnd();
//glPushMatrix();
//glPopMatrix();
}
//draw 2nd coordinate
void circle_2ndCor(float radius_x, float radius_y)
{
int i = 0;
float angle = 0.0;
glRotatef(mainangle,0,0,1);
glTranslatef(incx2,incy2,0);
glBegin(GL_POLYGON);
{
for(i = 25; i <= 50; i++)
{
angle = 2 * 3.1416 * i / 100;
//printf("%d ",angle);
glColor3f(0.0, 1.0, 0.0);
glVertex3f (cos(angle) * radius_x, sin(angle) * radius_y, 0);
}
glVertex3f (0,0, 0);
}
glEnd();
}
//draw 3rd coordinate
void circle_3rdCor(float radius_x, float radius_y)
{
int i = 0;
float angle = 0.0;
glRotatef(mainangle,0,0,1);
glTranslatef(incx3,incy3,0);
glBegin(GL_POLYGON);
{
for(i = 50; i <= 75; i++)
{
angle = 2 * 3.1416 * i / 100;
//printf("%d ",angle);
glColor3f(1.0, 0.0, 0.0);
glVertex3f (cos(angle) * radius_x, sin(angle) * radius_y, 0);
}
glVertex3f (0,0, 0);
}
glEnd();
}
//draw 4th coordinate
void circle_4thCor(float radius_x, float radius_y)
{
int i = 0;
float angle = 0.0;
glRotatef(mainangle,0,0,1);
glTranslatef(incx4,incy4,0);
glBegin(GL_POLYGON);
{
for(i = 75; i <= 100; i++)
{
angle = 2 * 3.1416 * i / 100;
//printf("%d ",angle);
glColor3f(0.0, 1.0, 0.0);
glVertex3f (cos(angle) * radius_x, sin(angle) * radius_y, 0);
}
glVertex3f (0,0, 0);
}
glEnd();
}
//call those function from display
glPushMatrix();
circle_1stCor(30,30);
glPopMatrix();
glPushMatrix();
circle_2ndCor(30,30);
glPopMatrix();
glPushMatrix();
circle_3rdCor(30,30);
glPopMatrix();
glPushMatrix();
circle_4thCor(30,30);
glPopMatrix();
Add your comment