[ Web Proxy ]
URL:
Viewing: https://raw.githubusercontent.com/sidpug/CG_Lab_Programs/master/CG_Lab_Program2/Prog2.cpp [Back]  [Original]

#include
#include
int x, y;
int rFlag = 0;
void draw_pixel(float x1, float y1)
{
	glColor3f(0.0, 0.0, 1.0);
	glPointSize(5.0);
	glBegin(GL_POINTS);
	glVertex2f(x1, y1);
	glEnd();
}
void triangle()
{
	glColor3f(1.0, 0.0, 0.0);
	glBegin(GL_POLYGON);
	glVertex2f(100, 100);
	glVertex2f(250, 400);
	glVertex2f(400, 100);
	glEnd();
}
float th = 0.0;
float trX = 0.0, trY = 0.0;
void display()
{
	glClear(GL_COLOR_BUFFER_BIT);
	glLoadIdentity();
	if (rFlag == 1) //Rotate Around origin
	{
		trX = 0.0;
		trY = 0.0;
		th += 0.1;
		draw_pixel(0.0, 0.0);
	}
	if (rFlag == 2) //Rotate Around Fixed Point
	{
		trX = x;
		trY = y;
		th += 0.1;
		draw_pixel(x, y);
	}
	glTranslatef(trX, trY, 0.0);
	glRotatef(th, 0.0, 0.0, 1.0);
	glTranslatef(-trX, -trY, 0.0);
	triangle();
	glutPostRedisplay();
	glutSwapBuffers();
}
void myInit()
{
	glClearColor(0.0, 0.0, 0.0, 1.0);
	glMatrixMode(GL_PROJECTION);
	glLoadIdentity();
	gluOrtho2D(-500.0, 500.0, -500.0, 500.0);
	glMatrixMode(GL_MODELVIEW);
}
void rotateMenu(int option)
{
	if (option == 1)
		rFlag = 1;
	if (option == 2)
		rFlag = 2;
	if (option == 3)
		rFlag = 3;
}
void main(int argc, char** argv)
{
	printf("Enter Fixed Points (x,y) for Roration: \n");
	scanf_s("%d %d", &x, &y);
	glutInit(&argc, argv);
	glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
	glutInitWindowSize(500, 500);
	glutInitWindowPosition(0, 0);
	glutCreateWindow("Create and Rotate Triangle USN:1AH18CS092");
	myInit();
	glutDisplayFunc(display); 
	glutCreateMenu(rotateMenu); 
	glutAddMenuEntry("Rotate around ORIGIN", 1); 
	glutAddMenuEntry("Rotate around FIXED POINT", 2); 
	glutAddMenuEntry("Stop Rotation", 3); 
	glutAttachMenu(GLUT_RIGHT_BUTTON); 
	glutMainLoop();
}

Web Proxy Viewer  |  New URL  |  Original Page