Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <cmath>
- #include <ctime>
- #include <string>
- #include <iostream>
- using namespace std;
- #include <GL/glut.h>
- void display();
- void myinit();
- void processSpecialKeys(int, int, int);
- /* globals */
- GLsizei wh = 500, ww = 600; /* initial window size */
- GLdouble vw = 100;
- void myinit()
- {
- glViewport(0, 0, (GLsizei) ww, (GLsizei) wh);
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity();
- glOrtho(-100.0, 100.0, -100.0, 100.0, -100.0, 100.0);
- glMatrixMode(GL_MODELVIEW);
- glLoadIdentity();
- glEnable(GL_DEPTH_TEST);
- }
- void display()
- {
- glClearColor (1.0, 1.0, 1.0, 1.0);
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
- glColor3f(0.0, 0.0, 0.0);
- glBegin(GL_POLYGON);
- glVertex3f(0.0,-5.0,0.0);
- glVertex3f(50.0,-5.0,0.0);
- glVertex3f(50.0,5.0,0.0);
- glVertex3f(0.0,5.0,0.0);
- glEnd();
- glBegin(GL_POLYGON);
- glVertex3f(0.0,-5.0,0.0);
- glVertex3f(0.0,-5.0,5.0);
- glVertex3f(0.0,5.0,5.0);
- glVertex3f(0.0,5.0,0.0);
- glEnd();
- glBegin(GL_POLYGON);
- glVertex3f(0.0,-5.0,5.0);
- glVertex3f(50.0,-5.0,5.0);
- glVertex3f(50.0,5.0,5.0);
- glVertex3f(0.0,5.0,5.0);
- glEnd();
- glBegin(GL_POLYGON);
- glVertex3f(0.0,-5.0,0.0);
- glVertex3f(0.0,-5.0,5.0);
- glVertex3f(50.0,-5.0,5.0);
- glVertex3f(50.0,-5.0,0.0);
- glEnd();
- glBegin(GL_POLYGON);
- glVertex3f(50.0,5.0,0.0);
- glVertex3f(50.0,5.0,5.0);
- glVertex3f(0.0,5.0,5.0);
- glVertex3f(0.0,5.0,0.0);
- glEnd();
- // Arrow
- glBegin(GL_TRIANGLES);
- glVertex3f(50.0,-10,0.0);
- glVertex3f(60.0,0.0,0.0);
- glVertex3f(50.0,10.0,0.0);
- glEnd();
- glBegin(GL_TRIANGLES);
- glVertex3f(50.0,-10,5.0);
- glVertex3f(60.0,0.0,5.0);
- glVertex3f(50.0,10.0,5.0);
- glEnd();
- glBegin(GL_POLYGON);
- glVertex3f(50.0,-10,0.0);
- glVertex3f(50.0,-10,5.0);
- glVertex3f(60.0,0.0,5.0);
- glVertex3f(60.0,0.0,0.0);
- glEnd();
- glBegin(GL_POLYGON);
- glVertex3f(50.0,10,0.0);
- glVertex3f(50.0,10,5.0);
- glVertex3f(60.0,0.0,5.0);
- glVertex3f(60.0,0.0,0.0);
- glEnd();
- glFlush();
- }
- void processSpecialKeys(int key, int x, int y)
- {
- switch(key) {
- case GLUT_KEY_F7:
- gluPerspective(45.0, ww/wh, 20, 50);
- break;
- case GLUT_KEY_F8:
- glRotatef(3.0, 0.0, 1.0, 0.0);
- break;
- case GLUT_KEY_PAGE_UP:
- glRotatef(-3.0, 1.0, 0.0, 0.0);
- break;
- case GLUT_KEY_PAGE_DOWN:
- glRotatef(3.0, 1.0, 0.0, 0.0);
- break;
- case GLUT_KEY_UP:
- glScalef((1/1.1), (1/1.1), (1/1.1));
- break;
- case GLUT_KEY_DOWN:
- glScalef(1.1, 1.1, 1.1);
- break;
- case GLUT_KEY_LEFT:
- glRotatef(3.0, 0.0, 0.0, 1.0);
- break;
- case GLUT_KEY_RIGHT:
- glRotatef(-3.0, 0.0, 0.0, 1.0);
- break;
- }
- glutPostRedisplay();
- }
- int main(int argc, char** argv)
- {
- glutInit(&argc,argv);
- glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH);
- glutInitWindowSize(ww, wh);
- glutCreateWindow("3D Arrow");
- glutDisplayFunc(display);
- myinit();
- glutSpecialFunc(processSpecialKeys);
- glutMainLoop();
- }
Add Comment
Please, Sign In to add comment