Develop a program to demonstrate basic geometric operations on the 2D object
Program:
#include <GL/glut.h> #include <cmath> // Vertex coordinates of the triangle GLfloat vertices[3][2] = { {0.0, 0.5}, {-0.5, -0.5}, {0.5, -0.5} }; // Transformation parameters GLfloat tx = 0.0, ty = 0.0; // Translation GLfloat sx = 1.0, sy = 1.0; // Scaling GLfloat angle = 0.0; // Rotation angle void drawTriangle() { glBegin(GL_TRIANGLES); for (int i = 0; i < 3; i++) { glVertex2fv(vertices[i]); } glEnd(); } void display() { glClear(GL_COLOR_BUFFER_BIT); // Apply transformations glPushMatrix(); // Translation glTranslatef(tx, ty, 0.0); // Rotation glRotatef(angle, 0.0, 0.0, 1.0); // Scaling glScalef(sx, sy, 1.0); // Draw the triangle drawTriangle(); glPopMatrix(); glFlush(); } void init() { glClearColor(0.0, 0.0, 0.0, 1.0); glColor3f(1.0, 1.0, 1.0); glMatrixMode(GL_PROJECTION); gluOrtho2D(-1.0, 1.0, -1.0, 1.0); } void keyboard(unsigned char key, int x, int y) { switch (key) { case 't': tx += 0.1; break; // Translate right case 'r': angle -= 5.0; break; // Rotate clockwise case 's': sx += 0.1; sy += 0.1; break; // Scale up horizontally case 27: exit(0); // ESC key to exit } glutPostRedisplay(); } int main(int argc, char** argv) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); glutInitWindowSize(500, 500); glutInitWindowPosition(100, 100); glutCreateWindow("2D Geometric Operations"); init(); glutDisplayFunc(display); glutKeyboardFunc(keyboard); glutMainLoop(); return 0; }