#define GLUT_DISABLE_ATEXIT_HACK #include <windows.h> #include<iostream> #include <iostream> #include <gl\glut.h> using namespace std; // Initial Position of the Ball float x_position = 0.0; float y_position = 0.0; // Radius of ball float radius = 0.2; // Speed with which the ball tranlates float speed = 0.05; // Limits of line float line_begin = -1.25 ; float line_end = 1.25 ; void resize_handler(int w,int h) { glViewport(0,0,w,h); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(45, w/h, 1, 200); } void key_handler( int key, int x, int y ) { if (key == GLUT_KEY_LEFT) x_position -= ( x_position > line_begin ? speed : 0 ); else if (key == GLUT_KEY_RIGHT) x_position += ( x_position < line_end ? speed : 0 ); } void drawBall(float r, float g, float b, float xpos, float ypos, float rad) { glColor3f(r, g, b); glPushMatrix(); glTranslatef(xpos, ypos, -5.0); glutSolidSphere(rad, 100, 100); glPopMatrix(); } void drawLine( float x1, float y1, float x2, float y2) { glLineWidth(1.0); glColor3f(1.0, 1.0, 1.0); glBegin(GL_LINES); glVertex3f(x1, y1, -5.0); glVertex3f(x2, y2, -5.0); glEnd(); } void display() { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glMatrixMode( GL_MODELVIEW ); glLoadIdentity(); drawBall(1.0,1.0,0.0, x_position, y_position, radius); glutSwapBuffers(); } void motionPassive(int x, int y) { x_position=(double)x/600.0,y_position=-1.0*(double)y/600.0; //glutSetCursor(GLUT_CURSOR_FULL_CROSSHAIR); cout << "Mouse moved at " << "(" << x_position << "," << y_position << ")" << endl; } int main(int argc,char **argv) { glutInit(&argc,argv); glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB|GLUT_DEPTH); glutInitWindowSize(600, 600); glutCreateWindow("Collision Window"); glEnable(GL_DEPTH_TEST); glutDisplayFunc(display); glutIdleFunc(display); // Resize Handler glutReshapeFunc(resize_handler); // Key Handler glutSpecialFunc(key_handler); POINT mpos; glutPassiveMotionFunc(motionPassive); glutMainLoop(); return(0); }