Advertisement
Guest User

Untitled

a guest
Mar 31st, 2020
154
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 12.25 KB | None | 0 0
  1. #include <GL/glut.h>
  2. #include <stdlib.h>
  3.  
  4. static int shoulder = 0, elbow = 0, fingerBase = 0, fingerUp = 0 , chest = 0 , r =0 , l = 0 , hipside1 = 0 , hipside2 = 0 , rightk = 0 , leftK  =0  ;
  5. int moving, startx, starty;
  6.  
  7. GLfloat angle = 0.0;  /* in degrees */
  8. GLfloat angle2 = 0.0; /* in degrees */
  9.  
  10. void init(void)
  11. {
  12.    glClearColor(0.0, 0.0, 0.0, 0.0);
  13.    glShadeModel(GL_FLAT);
  14. }
  15.  
  16. void display(void)
  17. {
  18.    glClear(GL_COLOR_BUFFER_BIT);
  19.  
  20.  
  21.  
  22.   glPushMatrix();
  23.    glRotatef(angle2, 1.0, 0.0, 0.0);
  24.    glRotatef(angle, 0.0, 1.0, 0.0);
  25.    glTranslatef(-1.0, 1.0, 0.0);
  26.    glRotatef((GLfloat)chest, 0.0, 1.0, 0.0);
  27.    glTranslatef(1.0, 0.0, 0.0);
  28.    glPushMatrix();
  29.    glScalef(2.0, 2.5, 1.0);
  30.    glutWireCube(1.0);
  31.    glPopMatrix();
  32.  
  33.  
  34. // start of Arm  1 -----------------------------------
  35.  glPushMatrix();
  36.    // Draw Shoulder
  37.  
  38.    glTranslatef(2.0, 1.0, 0.0);
  39.    glRotatef((GLfloat)shoulder, 0.0, 0.0, -1.0);
  40.    glTranslatef(0.15, 0.0, 0.0);
  41.    glPushMatrix();
  42.   glScalef(2.0, 0.6, 1.0);
  43.    glutWireCube(1.0);
  44.    glPopMatrix();
  45.    // Draw Ellbow
  46.    glTranslatef(1.0, 0.0, 0.0);
  47.    glRotatef((GLfloat)elbow, 0.0, 0.0, -1.0);
  48.    glTranslatef(1.0, 0.0, 0.0);
  49.    glPushMatrix();
  50.    glScalef(2.0, 0.6, 1.0);
  51.    glutWireCube(1.0);
  52.    glPopMatrix();
  53.  
  54.    //Draw finger  1
  55.  
  56.    // fisrt part
  57.    glPushMatrix();
  58.    glTranslatef(1.0, -0.3, 0.0);
  59.    glRotatef((GLfloat)fingerBase, 0.0, 0.0, 1.0);
  60.    glTranslatef(0.15, 0.0, 0.0);
  61.    glPushMatrix();
  62.    glScalef(0.3, 0.1, 0.1);
  63.    glutWireCube(1);
  64.    glPopMatrix();
  65.  
  66.    //second part
  67.    glTranslatef(0.15, 0.0, 0.0);
  68.    glRotatef((GLfloat)fingerUp, 0.0, 0.0, 1.0);
  69.    glTranslatef(0.15, 0.0, 0.0);
  70.    glPushMatrix();
  71.    glScalef(0.3, 0.1, 0.1);
  72.    glutWireCube(1);
  73.    glPopMatrix();
  74.  
  75.    glPopMatrix();
  76.  
  77.    //Draw finger  2
  78.  
  79.    // fisrt part
  80.    glPushMatrix();
  81.    glTranslatef(1.0, 0.25, -0.15);
  82.    glRotatef((GLfloat)fingerBase, 0.0, 0.0, -1.0);
  83.    glTranslatef(0.15, 0.0, 0.0);
  84.    glPushMatrix();
  85.    glScalef(0.3, 0.1, 0.1);
  86.    glutWireCube(1);
  87.    glPopMatrix();
  88.  
  89.    // second part
  90.    glTranslatef(0.15, 0.0, 0.0);
  91.    glRotatef((GLfloat)fingerUp, 0.0, 0.0, -1.0);
  92.    glTranslatef(0.15, 0.0, 0.0);
  93.    glPushMatrix();
  94.    glScalef(0.3, 0.1, 0.1);
  95.    glutWireCube(1);
  96.    glPopMatrix();
  97.  
  98.    glPopMatrix();
  99.  
  100.    //finger  3
  101.  
  102.    // fisrt part
  103.    glPushMatrix();
  104.  
  105.    glTranslatef(1.0, 0.25, 0.45);
  106.    glRotatef((GLfloat)fingerBase, 0.0, 0.0, -1.0);
  107.    glTranslatef(0.15, 0.0, 0.0);
  108.    glPushMatrix();
  109.    glScalef(0.3, 0.1, 0.1);
  110.    glutWireCube(1);
  111.    glPopMatrix();
  112.  
  113.    // second part
  114.    glTranslatef(0.15, 0.0, 0.0);
  115.    glRotatef((GLfloat)fingerUp, 0.0, 0.0, -1.0);
  116.    glTranslatef(0.15, 0.0, 0.0);
  117.    glPushMatrix();
  118.    glScalef(0.3, 0.1, 0.1);
  119.    glutWireCube(1);
  120.    glPopMatrix();
  121.  
  122.    glPopMatrix();
  123.  
  124.    //finger  4
  125.  
  126.    // fisrt part
  127.    glPushMatrix();
  128.    glTranslatef(1.0, 0.25, 0.15);
  129.    glRotatef((GLfloat)fingerBase, 0.0, 0.0, -1.0);
  130.    glTranslatef(0.15, 0.0, 0.0);
  131.    glPushMatrix();
  132.    glScalef(0.3, 0.1, 0.1);
  133.    glutWireCube(1);
  134.    glPopMatrix();
  135.  
  136.    // second part
  137.    glTranslatef(0.15, 0.0, 0.0);
  138.    glRotatef((GLfloat)fingerUp, 0.0, 0.0, -1.0);
  139.    glTranslatef(0.15, 0.0, 0.0);
  140.    glPushMatrix();
  141.    glScalef(0.3, 0.1, 0.1);
  142.    glutWireCube(1);
  143.    glPopMatrix();
  144.  
  145.    glPopMatrix();
  146.  
  147.    
  148.  
  149.    // finger  5
  150.  
  151.    // fisrt part
  152.    glPushMatrix();
  153.    glTranslatef(1.0, 0.25, -0.45);
  154.    glRotatef((GLfloat)fingerBase, 0.0, 0.0, -1.0);
  155.    glTranslatef(0.15, 0.0, 0.0);
  156.    glPushMatrix();
  157.    glScalef(0.3, 0.1, 0.1);
  158.    glutWireCube(1);
  159.    glPopMatrix();
  160.  
  161.    // second part
  162.    glTranslatef(0.15, 0.0, 0.0);
  163.    glRotatef((GLfloat)fingerUp, 0.0, 0.0, -1.0);
  164.    glTranslatef(0.15, 0.0, 0.0);
  165.    glPushMatrix();
  166.    glScalef(0.3, 0.1, 0.1);
  167.    glutWireCube(1);
  168.    glPopMatrix();
  169.  
  170.    glPopMatrix();
  171.  
  172.  
  173.   glPopMatrix();
  174. // end of Arm -----------------------------------
  175.  
  176.  
  177.  
  178.  
  179. // start of Arm 2-----------------------------------
  180.  glPushMatrix();
  181.    // Draw Shoulder
  182.  
  183.    glTranslatef(-2.0, 1.0, 0.0);
  184.    glRotatef((GLfloat)shoulder, 0.0, 0.0, 1.0);
  185.    glTranslatef(-0.15, 0.0, 0.0);
  186.    glPushMatrix();
  187.   glScalef(2.0, 0.6, 1.0);
  188.    glutWireCube(1.0);
  189.    glPopMatrix();
  190.    // Draw Ellbow
  191.    glTranslatef(-1.0, 0.0, 0.0);
  192.    glRotatef((GLfloat)elbow, 0.0, 0.0, 1.0);
  193.    glTranslatef(-1.0, 0.0, 0.0);
  194.    glPushMatrix();
  195.    glScalef(2.0, 0.6, 1.0);
  196.    glutWireCube(1.0);
  197.    glPopMatrix();
  198.  
  199.    //Draw finger  1
  200.  
  201.    // fisrt part
  202.    glPushMatrix();
  203.    glTranslatef(-1.0, -0.3, 0.0);
  204.    glRotatef((GLfloat)fingerBase, 0.0, 0.0, -1.0);
  205.    glTranslatef(-0.15, 0.0, 0.0);
  206.    glPushMatrix();
  207.    glScalef(0.3, 0.1, 0.1);
  208.    glutWireCube(1);
  209.    glPopMatrix();
  210.  
  211.    //second part
  212.    glTranslatef(-0.15, 0.0, 0.0);
  213.    glRotatef((GLfloat)fingerUp, 0.0, 0.0, -1.0);
  214.    glTranslatef(-0.15, 0.0, 0.0);
  215.    glPushMatrix();
  216.    glScalef(0.3, 0.1, 0.1);
  217.    glutWireCube(1);
  218.    glPopMatrix();
  219.  
  220.    glPopMatrix();
  221.  
  222.    //Draw finger  2
  223.  
  224.    // fisrt part
  225.    glPushMatrix();
  226.    glTranslatef(-1.0, 0.25, -0.15);
  227.    glRotatef((GLfloat)fingerBase, 0.0, 0.0, 1.0);
  228.    glTranslatef(-0.15, 0.0, 0.0);
  229.    glPushMatrix();
  230.    glScalef(0.3, 0.1, 0.1);
  231.    glutWireCube(1);
  232.    glPopMatrix();
  233.  
  234.    // second part
  235.    glTranslatef(-0.15, 0.0, 0.0);
  236.    glRotatef((GLfloat)fingerUp, 0.0, 0.0, 1.0);
  237.    glTranslatef(-0.15, 0.0, 0.0);
  238.    glPushMatrix();
  239.    glScalef(0.3, 0.1, 0.1);
  240.    glutWireCube(1);
  241.    glPopMatrix();
  242.  
  243.    glPopMatrix();
  244.  
  245.    //finger  3
  246.  
  247.    // fisrt part
  248.    glPushMatrix();
  249.  
  250.    glTranslatef(-1.0, 0.25, 0.45);
  251.    glRotatef((GLfloat)fingerBase, 0.0, 0.0, 1.0);
  252.    glTranslatef(-0.15, 0.0, 0.0);
  253.    glPushMatrix();
  254.    glScalef(0.3, 0.1, 0.1);
  255.    glutWireCube(1);
  256.    glPopMatrix();
  257.  
  258.    // second part
  259.    glTranslatef(-0.15, 0.0, 0.0);
  260.    glRotatef((GLfloat)fingerUp, 0.0, 0.0, 1.0);
  261.    glTranslatef(-0.15, 0.0, 0.0);
  262.    glPushMatrix();
  263.    glScalef(0.3, 0.1, 0.1);
  264.    glutWireCube(1);
  265.    glPopMatrix();
  266.  
  267.    glPopMatrix();
  268.  
  269.    //finger  4
  270.  
  271.    // fisrt part
  272.    glPushMatrix();
  273.    glTranslatef(-1.0, 0.25, 0.15);
  274.    glRotatef((GLfloat)fingerBase, 0.0, 0.0, 1.0);
  275.    glTranslatef(-0.15, 0.0, 0.0);
  276.    glPushMatrix();
  277.    glScalef(0.3, 0.1, 0.1);
  278.    glutWireCube(1);
  279.    glPopMatrix();
  280.  
  281.    // second part
  282.    glTranslatef(-0.15, 0.0, 0.0);
  283.    glRotatef((GLfloat)fingerUp, 0.0, 0.0, 1.0);
  284.    glTranslatef(-0.15, 0.0, 0.0);
  285.    glPushMatrix();
  286.    glScalef(0.3, 0.1, 0.1);
  287.    glutWireCube(1);
  288.    glPopMatrix();
  289.  
  290.    glPopMatrix();
  291.  
  292.    
  293.  
  294.    // finger  5
  295.  
  296.    // fisrt part
  297.    glPushMatrix();
  298.    glTranslatef(-1.0, 0.25, -0.45);
  299.    glRotatef((GLfloat)fingerBase, 0.0, 0.0, 1.0);
  300.    glTranslatef(-0.15, 0.0, 0.0);
  301.    glPushMatrix();
  302.    glScalef(0.3, 0.1, 0.1);
  303.    glutWireCube(1);
  304.    glPopMatrix();
  305.  
  306.    // second part
  307.    glTranslatef(-0.15, 0.0, 0.0);
  308.    glRotatef((GLfloat)fingerUp, 0.0, 0.0, 1.0);
  309.    glTranslatef(-0.15, 0.0, 0.0);
  310.    glPushMatrix();
  311.    glScalef(0.3, 0.1, 0.1);
  312.    glutWireCube(1);
  313.    glPopMatrix();
  314.  
  315.    glPopMatrix();
  316.  
  317.  
  318.   glPopMatrix();
  319. // end of Arm -----------------------------------
  320.  
  321. // START of LEG 1 -----------------------------------
  322.    glPushMatrix();
  323.  
  324.    // Draw Hip
  325.  
  326.    glTranslatef(0.85, -2.2, 0.0);
  327.    glRotatef((GLfloat)r, -1.0, 0.0, 0.0);
  328.    glRotatef((GLfloat)hipside1, 0.0, 0.0, 1.0);
  329.    glTranslatef(-0.15, 0.0, 0.0);
  330.    glPushMatrix();
  331.   glScalef(0.6, 1.5, 1.0);
  332.    glutWireCube(1.0);
  333.    glPopMatrix();
  334.  
  335.  
  336.    // Draw Knee
  337.    glTranslatef(1.0, -1.8, 0.0);
  338.    glRotatef((GLfloat)rightk, 1.0, 0.0, 0.0);
  339.    glTranslatef(-1.0, 0.0, 0.0);
  340.    glPushMatrix();
  341.    glScalef(0.6, 2.0, 1.0);
  342.    glutWireCube(1.0);
  343.    glPopMatrix();
  344.  
  345. // Draw foot
  346.    glTranslatef(1.0, -1.0, 0.25);
  347.    glTranslatef(-1.0, 0.0, 0.0);
  348.    glPushMatrix();
  349.    glScalef(0.6, 0.6, 1.5);
  350.    glutSolidCube(1.0);
  351.    glPopMatrix();
  352.  
  353.  
  354.  
  355.  
  356.  
  357.  
  358.    glPopMatrix();
  359. // END of LEG  1-----------------------------------
  360.  
  361.  
  362.  
  363. // START of LEG  2 -----------------------------------
  364.    glPushMatrix();
  365.  
  366.    // Draw Hip
  367.  
  368.    glTranslatef(-0.56, -2.2, 0.0);
  369.    glRotatef((GLfloat)l, -1.0, 0.0, 0.0);
  370.    glRotatef((GLfloat)hipside2, 0.0, 0.0, -1.0);
  371.    glTranslatef(-0.15, 0.0, 0.0);
  372.    glPushMatrix();
  373.   glScalef(0.6, 1.5, 1.0);
  374.    glutWireCube(1.0);
  375.    glPopMatrix();
  376.  
  377.  
  378.    // Draw knee
  379.    glTranslatef(1.0, -1.8, 0.0);
  380.    glRotatef((GLfloat)leftK, 1.0, 0.0, 0.0);
  381.    glTranslatef(-1.0, 0.0, 0.0);
  382.    glPushMatrix();
  383.    glScalef(0.6, 2.0, 1.0);
  384.    glutWireCube(1.0);
  385.    glPopMatrix();
  386.  
  387.  
  388. // Draw foot
  389.    glTranslatef(1.0, -1.0, 0.25);
  390.    glTranslatef(-1.0, 0.0, 0.0);
  391.    glPushMatrix();
  392.    glScalef(0.6, 0.6, 1.5);
  393.    glutSolidCube(1.0);
  394.    glPopMatrix();
  395.  
  396.  
  397.  
  398.  
  399.  
  400.    glPopMatrix();
  401. // END of LEG  2 -----------------------------------
  402.  
  403.  
  404.  
  405.  
  406. // Head
  407.    glTranslatef(0.0, 2.0, 0.0);
  408.    glRotatef((GLfloat)shoulder, 0.0, 0.0, 0.0);
  409.    glTranslatef(0.15, 0.0, 0.0);
  410.    glPushMatrix();
  411.   glScalef(1.0, 1.0, 1.0);
  412.  
  413.    glutWireSphere(0.5 , 50 , 50);
  414. glPopMatrix();
  415.  
  416.  
  417.  
  418.  
  419.  
  420.  
  421.  
  422.    glPopMatrix();
  423.    glutSwapBuffers();
  424. }
  425.  
  426. void reshape(int w, int h)
  427. {
  428.    glViewport(0, 0, (GLsizei)w, (GLsizei)h);
  429.    glMatrixMode(GL_PROJECTION);
  430.    glLoadIdentity();
  431.    gluPerspective(85.0, (GLfloat)w / (GLfloat)h, 1.0, 20.0);
  432.    glMatrixMode(GL_MODELVIEW);
  433.    glLoadIdentity();
  434.    glTranslatef(0.0, 0.0, -5.0);
  435. }
  436.  
  437. void keyboard(unsigned char key, int x, int y)
  438. {
  439.    switch (key)
  440.    {
  441.    case 's':
  442.       shoulder = (shoulder + 5) % 180;
  443.       glutPostRedisplay();
  444.       break;
  445.    case 'S':
  446.       shoulder = (shoulder - 5) % 180;
  447.       glutPostRedisplay();
  448.       break;
  449.    case 'e':
  450.       elbow = (elbow + 5) % 180;
  451.       glutPostRedisplay();
  452.       break;
  453.    case 'E':
  454.       elbow = (elbow - 5) % 180;
  455.       glutPostRedisplay();
  456.       break;
  457.    case 'f':
  458.       fingerBase = (fingerBase + 5) % 90;
  459.       glutPostRedisplay();
  460.       break;
  461.    case 'F':
  462.       fingerBase = (fingerBase - 5) % 90;
  463.       glutPostRedisplay();
  464.       break;
  465.    case 'g':
  466.       fingerUp = (fingerUp + 5) % 180;
  467.       glutPostRedisplay();
  468.       break;
  469.    case 'G':
  470.       fingerUp = (fingerUp - 5) % 180;
  471.       glutPostRedisplay();
  472.       break;
  473.    case 'r':
  474.       r = (r + 5) % 90;
  475.       glutPostRedisplay();
  476.       break;
  477.    case 'R':
  478.       r = (r - 5) % 90;
  479.       glutPostRedisplay();
  480.       break;
  481.    case 'l':
  482.       l = (l + 5) % 90;
  483.       glutPostRedisplay();
  484.       break;
  485.    case 'L':
  486.       l = (l - 5) % 90;
  487.       glutPostRedisplay();
  488.       break;
  489.    case 't':
  490.       rightk = (rightk + 5) % 90;
  491.       glutPostRedisplay();
  492.       break;
  493.    case 'T':
  494.       rightk = (rightk - 5) % 90;
  495.       glutPostRedisplay();
  496.       break;
  497.    case 'q':
  498.       leftK = (leftK + 5) % 90;
  499.       glutPostRedisplay();
  500.       break;
  501.    case 'Q':
  502.       leftK = (leftK - 5) % 90;
  503.       glutPostRedisplay();
  504.       break;
  505.    case 'c':
  506.       chest = (chest + 5) % 360;
  507.       glutPostRedisplay();
  508.       break;
  509.    case 'C':
  510.       chest = (chest - 5) % 360;
  511.       glutPostRedisplay();
  512.       break;
  513.    case 'x':
  514.       hipside1 = (hipside1 + 5) % 30;
  515.       glutPostRedisplay();
  516.       break;
  517.    case 'X':
  518.       hipside1 = (hipside1 - 5) % 30;
  519.       glutPostRedisplay();
  520.       break;
  521.    case 'z':
  522.       hipside2 = (hipside2 + 5) % 30;
  523.       glutPostRedisplay();
  524.       break;
  525.    case 'Z':
  526.       hipside2 = (hipside2 - 5) % 30;
  527.       glutPostRedisplay();
  528.       break;
  529.    case 27:
  530.       exit(0);
  531.       break;
  532.    default:
  533.       break;
  534.    }
  535. }
  536.  
  537. static void mouse(int button, int state, int x, int y)
  538. {
  539.    if (button == GLUT_LEFT_BUTTON)
  540.    {
  541.       if (state == GLUT_DOWN)
  542.       {
  543.          moving = 1;
  544.          startx = x;
  545.          starty = y;
  546.       }
  547.       if (state == GLUT_UP)
  548.       {
  549.          moving = 0;
  550.       }
  551.    }
  552. }
  553.  
  554. static void motion(int x, int y)
  555. {
  556.    if (moving)
  557.    {
  558.       angle = angle + (x - startx);
  559.       angle2 = angle2 + (y - starty);
  560.       startx = x;
  561.       starty = y;
  562.       glutPostRedisplay();
  563.    }
  564. }
  565.  
  566. int main(int argc, char **argv)
  567. {
  568.    glutInit(&argc, argv);
  569.    glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
  570.    glutInitWindowSize(500, 500);
  571.    glutInitWindowPosition(100, 100);
  572.    glutCreateWindow(argv[0]);
  573.    init();
  574.    glutMouseFunc(mouse);
  575.    glutMotionFunc(motion);
  576.    glutDisplayFunc(display);
  577.    glutReshapeFunc(reshape);
  578.    glutKeyboardFunc(keyboard);
  579.    glutMainLoop();
  580.    return 0;
  581. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement