Advertisement
MargaritaOwl

VituaGlutLab

Oct 29th, 2017
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 17.28 KB | None | 0 0
  1. #pragma comment(lib, "opengl32.lib")
  2. #pragma comment(lib, "glut32.lib")
  3. #pragma comment(lib, "glu32.lib")
  4. #include <glut.h>
  5. #include <ctime>
  6. #include <stdlib.h>
  7.  
  8. int LletterR, LletterG, LletterB, VletterR, VletterG, VletterB;
  9. int DLletterR, DLletterG, DLletterB, DVletterR, DVletterG, DVletterB;
  10. int ContourLletterR, ContourLletterG, ContourLletterB, ContourVletterR, ContourVletterG, ContourVletterB;
  11. int DContourLletterR, DContourLletterG, DContourLletterB, DContourVletterR, DContourVletterG, DContourVletterB;
  12. int Vx, Vy, Lx, Ly;
  13. int DVx, DVy, DLx, DLy;
  14. float angleV, angleL, MEangleV, MEangleL;
  15. bool MEAutoRotateVleft, MEAutoRotateVright, MEAutoRotateLleft, MEAutoRotateLright;
  16. bool CENTERAutoRotateVleft, CENTERAutoRotateVright, CENTERAutoRotateLleft, CENTERAutoRotateLright;
  17.  
  18. void CIRCLE(float xc, float yc, float delta, int part)
  19. {
  20.     float distance = delta;
  21.     float x, y, dxt;
  22.     long r2, dst, t, s, e, ca, cd, indx;
  23.  
  24.     r2 = (long)delta * (long)delta;
  25.     dst = 4 * r2;
  26.     dxt = (double)delta / 1.414213562373;
  27.     t = 0;
  28.     s = (-4) * r2 * (long)delta;
  29.     e = (-1)*s / 2. - 3 * r2;
  30.     ca = (-6)*r2;
  31.     cd = (-10)*r2;
  32.     x = 0;
  33.     y = delta;
  34.  
  35.     float xPre, yPre;
  36.     for (indx = 1; indx <= dxt; indx++)
  37.     {
  38.         x++;
  39.         if (e >= 0)
  40.             e += t + ca;
  41.         else
  42.         {
  43.             y--;
  44.             e += t - s + cd;
  45.             s += dst;
  46.         }
  47.         t -= dst;
  48.        
  49.         if (indx != 1)
  50.         {
  51.  
  52.             glBegin(GL_QUADS);
  53.             if (part == 1)
  54.             {
  55.                 glVertex2f(xc + xPre, yc + yPre);
  56.                 glVertex2f(xc + xPre + distance, yc + yPre);
  57.                 glVertex2f(xc + x + distance, yc + y);
  58.                 glVertex2f(xc + x, yc + y);
  59.  
  60.                 glVertex2f(xc + yPre, yc + xPre);
  61.                 glVertex2f(xc + yPre + distance, yc + xPre);
  62.                 glVertex2f(xc + y + distance, yc + x);
  63.                 glVertex2f(xc + y, yc + x);
  64.             }
  65.             if (part == 2)
  66.             {
  67.                 glVertex2f(xc + yPre, yc - xPre);
  68.                 glVertex2f(xc + yPre + distance, yc - xPre);
  69.                 glVertex2f(xc + y + distance, yc - x);
  70.                 glVertex2f(xc + y, yc - x);
  71.  
  72.                 glVertex2f(xc + xPre, yc - yPre);
  73.                 glVertex2f(xc + xPre + distance, yc - yPre);
  74.                 glVertex2f(xc + x + distance, yc - y);
  75.                 glVertex2f(xc + x, yc - y);
  76.             }
  77.             if (part == 3)
  78.             {
  79.                 glVertex2f(xc - xPre, yc - yPre);
  80.                 glVertex2f(xc - xPre - distance, yc - yPre);
  81.                 glVertex2f(xc - x - distance, yc - y);
  82.                 glVertex2f(xc - x, yc - y);
  83.  
  84.                 glVertex2f(xc - yPre, yc - xPre);
  85.                 glVertex2f(xc - yPre - distance, yc - xPre);
  86.                 glVertex2f(xc - y - distance, yc - x);
  87.                 glVertex2f(xc - y, yc - x);
  88.             }
  89.             if (part == 4)
  90.             {
  91.                 glVertex2f(xc - yPre, yc + xPre);
  92.                 glVertex2f(xc - yPre - distance, yc + xPre);
  93.                 glVertex2f(xc - y - distance, yc + x);
  94.                 glVertex2f(xc - y, yc + x);
  95.  
  96.                 glVertex2f(xc - xPre, yc + yPre);
  97.                 glVertex2f(xc - xPre - distance, yc + yPre);
  98.                 glVertex2f(xc - x - distance, yc + y);
  99.                 glVertex2f(xc - x, yc + y);
  100.             }
  101.             if (part == 5) {
  102.                 glVertex2f(xc + x, yc + y);
  103.                 glVertex2f(xc + y, yc + x);
  104.                 glVertex2f(xc + y, yc - x);
  105.                 glVertex2f(xc + x, yc - y);
  106.             }
  107.             glEnd();
  108.  
  109.         }
  110.         xPre = x;
  111.         yPre = y;
  112.  
  113.     }
  114.     glBegin(GL_QUADS);
  115.     if (part == 1)
  116.     {
  117.         glVertex2f(xc + y, yc + x);
  118.         glVertex2f(xc + y + distance, yc + x);
  119.         glVertex2f(xc + x + distance, yc + y);
  120.         glVertex2f(xc + x, yc + y);
  121.     }
  122.     if (part == 2)
  123.     {
  124.         glVertex2f(xc + x, yc - y);
  125.         glVertex2f(xc + x + distance, yc - y);
  126.         glVertex2f(xc + y + distance, yc - x);
  127.         glVertex2f(xc + y, yc - x);
  128.     }
  129.     if (part == 3)
  130.     {
  131.         glVertex2f(xc - y, yc - x);
  132.         glVertex2f(xc - y - distance, yc - x);
  133.         glVertex2f(xc - x - distance, yc - y);
  134.         glVertex2f(xc - x, yc - y);
  135.     }
  136.     if (part == 4)
  137.     {
  138.         glVertex2f(xc - x, yc + y);
  139.         glVertex2f(xc - x - distance, yc + y);
  140.         glVertex2f(xc - y - distance, yc + x);
  141.         glVertex2f(xc - y, yc + x);
  142.     }
  143.     glEnd();
  144. }
  145.  
  146. void Victor(float delta)
  147. {
  148.     float deltaB = delta*1.3;
  149.  
  150.     glColor3ub(ContourVletterR, ContourVletterG, ContourVletterB);//big letter
  151.  
  152.     CIRCLE(0.3 * delta-0.1*delta, 0.8*delta-0.1*delta, 0.5*delta, 1);
  153.     CIRCLE(0.3 * delta-0.1*delta, 0.9*delta+0.1*delta, 0.5*delta, 2);
  154.  
  155.     CIRCLE(0.3 * delta-0.1*delta, -1.3*delta- 0.1*delta, 0.7*delta, 1);
  156.     CIRCLE(0.3 * delta- 0.1*delta, -1.1*delta+ 0.1*delta, 0.7*delta, 2);
  157.  
  158.     CIRCLE(delta * 0.8, delta, 1.1*delta, 5);
  159.     CIRCLE(deltaB * 0.8, -deltaB, 1.08*deltaB, 5);
  160.  
  161.     glBegin(GL_POLYGON);//vertical line V
  162.     glVertex2f(delta * (-1.1)-0.1*delta, -2.6 * delta - 0.1*delta);
  163.     glVertex2f(delta * (-1.1) - 0.1*delta, 2. * delta + 0.1*delta);
  164.     glVertex2f(delta * (-0.7) + delta * 0.5 + 0.1*delta, 2 * delta + 0.1*delta);
  165.     glVertex2f(delta * (-0.7) + delta * 0.5 + 0.1*delta, -2.6 * delta - 0.1*delta);
  166.     glEnd();
  167.  
  168.     glBegin(GL_POLYGON);//first horizontal V
  169.     glVertex2f(delta * (-1.1) - 0.1*delta, 2 * delta + 0.1*delta);
  170.     glVertex2f(delta * 0.9 + 0.1*delta, 2 * delta + 0.1*delta);
  171.     glVertex2f(delta * 0.9 + 0.1*delta, 1.3*delta - 0.1*delta);
  172.     glVertex2f(delta * (-1.1) - 0.1*delta, 1.3*delta - 0.1*delta);
  173.     glEnd();
  174.  
  175.     glBegin(GL_POLYGON);//second horizontal V
  176.     glVertex2f(delta * (-1.1) - 0.1*delta, 0.4*delta + 0.1*delta);
  177.     glVertex2f(delta * 0.9 + 0.1*delta, 0.4*delta + 0.1*delta);
  178.     glVertex2f(delta * 0.9 + 0.1*delta, -0.01*delta - 0.1*delta);
  179.     glVertex2f(delta * (-1.1) - 0.1*delta, -0.01*delta - 0.1*delta);
  180.     glEnd();
  181.  
  182.     glBegin(GL_POLYGON);//third horizontal V
  183.     glVertex2f(delta * (-1.1)- 0.1*delta, 0.05*delta + 0.1*delta);
  184.     glVertex2f(delta * 1.1 + 0.1*delta, 0.05*delta + 0.1*delta);
  185.     glVertex2f(delta * 1.1 + 0.1*delta, -0.6*delta - 0.1*delta);
  186.     glVertex2f(delta * (-1.1) - 0.1*delta, -0.6*delta - 0.1*delta);
  187.     glEnd();
  188.  
  189.     glBegin(GL_POLYGON);
  190.     glVertex2f(delta * (-1.1)- 0.1*delta, -1.8*delta+ 0.1*delta);
  191.     glVertex2f(delta * 1.1+ 0.1*delta, -1.8*delta+ 0.1*delta);
  192.     glVertex2f(delta * 1.1+ 0.1*delta, -2.6*delta- 0.1*delta);
  193.     glVertex2f(delta * (-1.1)- 0.1*delta, -2.6*delta- 0.1*delta);
  194.     glEnd();
  195.  
  196.     glColor3ub(VletterR, VletterG, VletterB);//small letter
  197.     CIRCLE(0.3 * delta, 0.8*delta, 0.5*delta, 1);
  198.     CIRCLE(0.3 * delta, 0.9*delta, 0.5*delta, 2);
  199.  
  200.     CIRCLE(0.3 * delta, -1.3*delta, 0.7*delta, 1);
  201.     CIRCLE(0.3 * delta, -1.1*delta, 0.7*delta, 2);
  202.  
  203.     CIRCLE(delta * 0.8, delta, delta,5);
  204.     CIRCLE(deltaB * 0.8, -deltaB, deltaB,5);
  205.    
  206.     glBegin(GL_POLYGON);//vertical line V
  207.     glVertex2f(delta * (-1.1), -2.6 * delta);
  208.     glVertex2f(delta * (-1.1), 2. * delta);
  209.     glVertex2f(delta * (-0.7) + delta * 0.5, 2 * delta);
  210.     glVertex2f(delta * (-0.7) + delta * 0.5, -2.6 * delta);
  211.     glEnd();
  212.    
  213.     glBegin(GL_POLYGON);//first horizontal V
  214.     glVertex2f(delta * (-1.1), 2 * delta);
  215.     glVertex2f(delta * 0.9, 2 * delta);
  216.     glVertex2f(delta * 0.9, 1.3*delta);
  217.     glVertex2f(delta * (-1.1), 1.3*delta);
  218.     glEnd();
  219.  
  220.     glBegin(GL_POLYGON);//second horizontal V
  221.     glVertex2f(delta * (-1.1), 0.4*delta);
  222.     glVertex2f(delta * 0.9, 0.4*delta);
  223.     glVertex2f(delta * 0.9, -0.01*delta);
  224.     glVertex2f(delta * (-1.1), -0.01*delta);
  225.     glEnd();
  226.  
  227.     glBegin(GL_POLYGON);//third horizontal V
  228.     glVertex2f(delta * (-1.1), 0.05*delta);
  229.     glVertex2f(delta * 1.1, 0.05*delta);
  230.     glVertex2f(delta * 1.1, -0.6*delta);
  231.     glVertex2f(delta * (-1.1), -0.6*delta);
  232.     glEnd();
  233.  
  234.     glBegin(GL_POLYGON);
  235.     glVertex2f(delta * (-1.1), -1.8*delta);
  236.     glVertex2f(delta * 1.1, -1.8*delta);
  237.     glVertex2f(delta * 1.1, -2.6*delta);
  238.     glVertex2f(delta * (-1.1), -2.6*delta);
  239.     glEnd();
  240.  
  241. }
  242.  
  243. void Lobas(float delta)
  244. {
  245.     glColor3ub(ContourLletterR, ContourLletterG, ContourLletterB);
  246.     //big letter
  247.     glBegin(GL_POLYGON);//top polygon
  248.     glVertex2f(-delta - 0.8*delta-0.1*delta, 3 * delta+0.1*delta);
  249.     glVertex2f(delta + 1.05*delta+0.1*delta, 3 * delta + 0.1*delta);
  250.     glVertex2f(delta + 1.05*delta + 0.1*delta, 2 * delta - 0.1*delta);
  251.     glVertex2f(-delta - 0.8*delta - 0.1*delta, 2 * delta - 0.1*delta);
  252.     glEnd();
  253.  
  254.     glBegin(GL_POLYGON);//left polygon
  255.     glVertex2f(-delta + 0.3*delta + 0.13*delta, 2 * delta);
  256.     glVertex2f(-delta - 0.8*delta - 0.1*delta, 2 * delta);
  257.     glVertex2f(-delta - 0.8*delta- 0.1*delta, -delta - 0.2*delta);
  258.     glVertex2f(-delta + 0.3*delta + 0.13*delta, -delta );
  259.     glEnd();
  260.  
  261.     glBegin(GL_POLYGON);//right polygon
  262.     glVertex2f(delta - 0.05*delta - 0.1*delta, 2 * delta);
  263.     glVertex2f(delta + 1.05*delta + 0.1*delta, 2 * delta);
  264.     glVertex2f(delta + 1.05*delta + 0.1*delta, -2.*delta - 0.1*delta);
  265.     glVertex2f(delta - 0.05*delta - 0.1*delta, -2.*delta - 0.1*delta);
  266.     glEnd();
  267.  
  268.     CIRCLE(-3 * delta + 0.07*delta-0.24*delta, -delta + 0.021*delta - 0.03*delta+0.15*delta, 1.3*delta, 2);
  269.     //small letter
  270.     glColor3ub(LletterR, LletterG, LletterB);
  271.    
  272.     glBegin(GL_POLYGON);
  273.     glVertex2f(-delta - 0.8*delta, 3 * delta);
  274.     glVertex2f(delta + 1.05*delta, 3 * delta);
  275.     glVertex2f(delta + 1.05*delta, 2 * delta);
  276.     glVertex2f(-delta - 0.8*delta, 2 * delta);
  277.     glEnd();
  278.    
  279.     glBegin(GL_POLYGON);
  280.     glVertex2f(-delta + 0.3*delta, 2 * delta);
  281.     glVertex2f(-delta - 0.8*delta, 2 * delta);
  282.     glVertex2f(-delta - 0.8*delta, -delta - 0.1*delta);
  283.     glVertex2f(-delta + 0.3*delta, -delta - 0.1*delta);
  284.     glEnd();
  285.  
  286.     glBegin(GL_POLYGON);
  287.     glVertex2f(delta - 0.05*delta, 2 * delta);
  288.     glVertex2f(delta + 1.05*delta, 2 * delta);
  289.     glVertex2f(delta + 1.05*delta, -2.*delta);
  290.     glVertex2f(delta - 0.05*delta, -2.*delta);
  291.     glEnd();
  292.  
  293.     CIRCLE(-3 * delta + 0.07*delta+0.1*delta, -delta + 0.021*delta - 0.03*delta, 1.05*delta, 2);
  294.    
  295. }
  296.  
  297. void RenderScene(void)//прорисовка окна
  298. {
  299.     glClearColor(0.99, 1, 0.65, 0.82);//устанавливает цвет, которым будет заполнен буфер кадра
  300.     glClear(GL_COLOR_BUFFER_BIT);
  301.     if (MEAutoRotateVleft)
  302.         MEangleV += 0.5;
  303.     if (MEAutoRotateVright)
  304.         MEangleV -= 0.5;
  305.     if (MEAutoRotateLleft)
  306.         MEangleL += 0.5;
  307.     if (MEAutoRotateLright)
  308.         MEangleL -= 0.5;
  309.  
  310.     if (CENTERAutoRotateVleft)
  311.         angleV += 0.5;
  312.     if (CENTERAutoRotateVright)
  313.         angleV -= 0.5;
  314.     if (CENTERAutoRotateLleft)
  315.         angleL += 0.5;
  316.     if (CENTERAutoRotateLright)
  317.         angleL -= 0.5;
  318.  
  319.     glLoadIdentity();//заменяет текущую матрицу на единичную
  320.     glRotatef(angleL, 0., 0., 1.);//производит поворот объекта против часовой стрелки на угол angle (в градусах) вокруг вектора  (x, y, z)
  321.     glTranslatef(Lx, Ly, 0);//производит перенос объекта, прибавляя к координатам его вершин значения своих параметров
  322.     glRotatef(MEangleL, 0., 0., 1.);
  323.     Lobas(60.);
  324.  
  325.     glLoadIdentity();
  326.     glRotatef(angleV, 0., 0., 1.);
  327.     glTranslatef(Vx, Vy, 0);
  328.     glRotatef(MEangleV, 0., 0., 1.);
  329.     Victor(78.);
  330.  
  331.     glutSwapBuffers();
  332. }
  333.  
  334. void ChangeWindowSize(int w, int h)//обработка изменений окна
  335. {
  336.     glViewport(0, 0, w, h);
  337.  
  338.     glMatrixMode(GL_PROJECTION);
  339.     glLoadIdentity();
  340.     gluOrtho2D(-w / 2, w / 2, -h / 2, h / 2);
  341.  
  342.     glMatrixMode(GL_MODELVIEW);
  343.     glLoadIdentity();
  344. }
  345. void DetectKeys(unsigned char key, int x, int y)
  346. {
  347.     switch (key)
  348.     {
  349.     case 'w': {
  350.         Vy += 10;
  351.         break;
  352.     }
  353.     case 's': {
  354.         Vy -= 10;
  355.         break;
  356.     }
  357.     case 'a': {
  358.         Vx -= 10;
  359.         break;
  360.     }
  361.     case 'd': {
  362.         Vx += 10;
  363.         break;
  364.     }
  365.     case 'i': {
  366.         Ly += 10;
  367.         break;
  368.     }
  369.     case 'k': {
  370.         Ly -= 10;
  371.         break;
  372.     }
  373.     case 'j': {
  374.         Lx -= 10;
  375.         break;
  376.     }
  377.     case 'l': {
  378.         Lx += 10;
  379.         break;
  380.     }
  381.     case 'x': {
  382.         LletterR = rand() % 256;
  383.         LletterG = rand() % 256;
  384.         LletterB = rand() % 256;
  385.         ContourLletterR = rand() % 256;
  386.         ContourLletterG = rand() % 256;
  387.         ContourLletterB = rand() % 256;
  388.         break;
  389.     }
  390.     case 'z': {
  391.         VletterR = rand() % 256;
  392.         VletterG = rand() % 256;
  393.         VletterB = rand() % 256;
  394.         ContourVletterR = rand() % 256;
  395.         ContourVletterG = rand() % 256;
  396.         ContourVletterB = rand() % 256;
  397.         break;
  398.     }
  399.     case 'c': {
  400.         LletterR = DLletterR;
  401.         LletterG = DLletterG;
  402.         LletterB = DLletterB;
  403.         ContourLletterR = DContourLletterR;
  404.         ContourLletterG = DContourLletterG;
  405.         ContourLletterB = DContourLletterB;
  406.         VletterR = DVletterR;
  407.         VletterG = DVletterG;
  408.         VletterB = DVletterB;
  409.         ContourVletterR = DContourVletterR;
  410.         ContourVletterG = DContourVletterG;
  411.         ContourVletterB = DContourVletterB;
  412.         break;
  413.     }
  414.     }
  415. }
  416. void DetectSpecKeys(int key, int x, int y)
  417. {
  418.     switch (key)
  419.     {
  420.     case GLUT_KEY_UP: {
  421.         Vy += 10;
  422.         Ly += 10;
  423.         break;
  424.     }
  425.     case GLUT_KEY_DOWN: {
  426.         Vy -= 10;
  427.         Ly -= 10;
  428.         break;
  429.     }
  430.     case GLUT_KEY_LEFT: {
  431.         Vx -= 10;
  432.         Lx -= 10;
  433.         break;
  434.     }
  435.     case GLUT_KEY_RIGHT: {
  436.         Vx += 10;
  437.         Lx += 10;
  438.         break;
  439.     }
  440.     case GLUT_KEY_PAGE_UP: {
  441.         angleV -= 10;
  442.         angleL -= 10;
  443.         if (angleV > 360)
  444.             angleV -= 360;
  445.         if (angleV < -360)
  446.             angleV += 360;
  447.  
  448.         if (angleL > 360)
  449.             angleL -= 360;
  450.         if (angleL < -360)
  451.             angleL += 360;
  452.         break;
  453.     }
  454.     case GLUT_KEY_PAGE_DOWN: {
  455.         angleV += 10;
  456.         angleL += 10;
  457.         if (angleV > 360)
  458.             angleV -= 360;
  459.         if (angleV < -360)
  460.             angleV += 360;
  461.  
  462.         if (angleL > 360)
  463.             angleL -= 360;
  464.         if (angleL < -360)
  465.             angleL += 360;
  466.         break;
  467.     }
  468.     case GLUT_KEY_F1: {
  469.         MEangleV -= 10;
  470.         if (MEangleV > 360)
  471.             MEangleV -= 360;
  472.         if (MEangleV < -360)
  473.             MEangleV += 360;
  474.         break;
  475.     }
  476.     case GLUT_KEY_F2: {
  477.         MEangleV += 10;
  478.         if (MEangleV > 360)
  479.             MEangleV -= 360;
  480.         if (MEangleV < -360)
  481.             MEangleV += 360;
  482.         break;
  483.     }
  484.     case GLUT_KEY_F10: {
  485.         MEangleL -= 10;
  486.         if (MEangleV > 360)
  487.             MEangleV -= 360;
  488.         if (MEangleV < -360)
  489.             MEangleV += 360;
  490.         break;
  491.     }
  492.     case GLUT_KEY_F11: {
  493.         MEangleL += 10;
  494.         if (MEangleV > 360)
  495.             MEangleV -= 360;
  496.         if (MEangleV < -360)
  497.             MEangleV += 360;
  498.         break;
  499.     }
  500.     case GLUT_KEY_HOME: {
  501.         Vx = DVx;
  502.         Vy = DVy;
  503.         Lx = DLx;
  504.         Ly = DLy;
  505.         angleV = 0.;
  506.         angleL = 0.;
  507.         MEangleV = 0.;
  508.         MEangleL = 0.;
  509.         break;
  510.     }
  511.     case GLUT_KEY_F7: {
  512.         if (CENTERAutoRotateVleft)
  513.             CENTERAutoRotateVleft = false;
  514.         else
  515.             CENTERAutoRotateVleft = true;
  516.         if (CENTERAutoRotateLleft)
  517.             CENTERAutoRotateLleft = false;
  518.         else
  519.             CENTERAutoRotateLleft = true;
  520.         break;
  521.     }
  522.     case GLUT_KEY_F6: {
  523.         if (CENTERAutoRotateVright)
  524.             CENTERAutoRotateVright = false;
  525.         else
  526.             CENTERAutoRotateVright = true;
  527.         if (CENTERAutoRotateLright)
  528.             CENTERAutoRotateLright = false;
  529.         else
  530.             CENTERAutoRotateLright = true;
  531.         break;
  532.     }
  533.     case GLUT_KEY_F8: {
  534.         if (MEAutoRotateVleft)
  535.             MEAutoRotateVleft = false;
  536.         else
  537.             MEAutoRotateVleft = true;
  538.         if (MEAutoRotateLright)
  539.             MEAutoRotateLright = false;
  540.         else
  541.             MEAutoRotateLright = true;
  542.         break;
  543.     }
  544.     case GLUT_KEY_END: {
  545.         exit(0);
  546.         break; }
  547.     }
  548. }
  549.  
  550. int main(int argc, char* argv[])
  551. {
  552.     srand(time(0));
  553.     ContourLletterR = DContourLletterR = 1;
  554.     ContourLletterG = DContourLletterG = 1;
  555.     ContourLletterB = DContourLletterB = 1;
  556.     LletterR = DLletterR = 30;
  557.     LletterG = DLletterG = 199;
  558.     LletterB = DLletterB = 114;
  559.  
  560.     ContourVletterR = DContourVletterR = 1;
  561.     ContourVletterG = DContourVletterG = 1;
  562.     ContourVletterB = DContourVletterB = 1;
  563.     VletterR = DVletterR = 100;
  564.     VletterG = DVletterG = 1;
  565.     VletterB = DVletterB = 1;
  566.  
  567.     Vx = DVx = -70;
  568.     Vy = DVy = 50;
  569.     Lx = DLx = 70;
  570.     Ly = DLy = -50;
  571.     angleV = angleL = MEangleV = MEangleL = 0.;
  572.     CENTERAutoRotateVleft = CENTERAutoRotateVright = CENTERAutoRotateLleft = CENTERAutoRotateLright = false;
  573.     MEAutoRotateVleft = MEAutoRotateVright = MEAutoRotateLleft = MEAutoRotateLright = false;
  574.  
  575.     glutInit(&argc, argv);
  576.     glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
  577.     glutInitWindowSize(800, 600);
  578.     glutInitWindowPosition(10, 10);
  579.     glutCreateWindow("Victor Lobas, PK-15-1");
  580.  
  581.     glutDisplayFunc(RenderScene);//функция рисования
  582.     glutIdleFunc(RenderScene);//функция для автоматической анимации(автоматический поворот)
  583.     glutReshapeFunc(ChangeWindowSize); //функция обработки изменения размеров окна
  584.     glutSpecialFunc(DetectSpecKeys); //реагирует на нажатие специальных клавиш
  585.     glutKeyboardFunc(DetectKeys);//задает функцию, которая обрабатывает прерывания от клавиатуры
  586.     glutMainLoop();
  587.  
  588.     return 0;
  589. }
  590.  
  591. //z - смена цвета буквы В
  592. //x - смена цвета буквы Л
  593. //c - возврат к цвету по умолчанию для обеих букв
  594. // стрелка вверх - обе буквы вверх на 10 точек
  595. // стрелка вниз - обе буквы вниз на 10 точек
  596. // стрелка вправо - обе буквы вправо на 10 точек
  597. // стрелка влево - обе буквы влево на 10 точек
  598. // a - движение В влево
  599. // d - движение В вправо
  600. // w - движение В вверх
  601. // s - движение В вниз
  602. // j - движение Л влево
  603. // l - движение Л вправо
  604. // i - движение Л вверх
  605. // k - движение Л вниз
  606. // page up - поворот обеих букв по часовой стрелки
  607. // page down - поворот обеих букв против часовой стрелке
  608. // f1 - поворот В по часовой стрелки
  609. // f2 - поворот В против часовой стрелке
  610. // f6 - автоматический поворот по часовой стрелки обеих букв
  611. // f7 - автоматический поворот против часовой стрелке обеих букв
  612. // f8 - автоматический поворот букв вокруг их центров
  613. // f10 - поворот Л по часовой стрелки
  614. // f11 - поворот Л против часовой стрелки
  615. // home - вернуть в исходное положение
  616. // end - выход
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement