mhdew

dartboard

Nov 22nd, 2020
134
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 20.51 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <GL/gl.h>
  3. #include <GL/glut.h>
  4. #include <math.h>
  5.  
  6. void display(void)
  7. {
  8.     glClear (GL_COLOR_BUFFER_BIT);
  9.  
  10.     // broder line
  11.     glColor3f (1.0, 1.0, 1.0);
  12.     int x0=0, y0=555, p0=1-y0;
  13.     int ax0[1111], ay0[1111];
  14.     int idx0=0;
  15.     ax0[idx0]=x0;
  16.     ay0[idx0++]=y0;
  17.     while(1){
  18.         if(p0<0){
  19.             x0++; p0=p0+(2*x0)+1;
  20.         }
  21.         else{
  22.             x0++; y0--; p0=p0+(2*x0)+1-2*y0;
  23.         }
  24.         ax0[idx0]=x0; ay0[idx0++]=y0;
  25.         if(x0>=y0) break;
  26.     }
  27.  
  28.     glBegin(GL_POLYGON);
  29.     int tx0,ty0;
  30.     for(int i=0;i<idx0;i++){
  31.         tx0=ax0[i]*(-1); ty0=ay0[i]*(-1);
  32.         glVertex2d(ax0[i],ay0[i]);
  33.         glVertex2d(tx0,ay0[i]);
  34.         glVertex2d(ax0[i],ty0);
  35.         glVertex2d(tx0,ty0);
  36.         glVertex2d(ay0[i],ax0[i]);
  37.         glVertex2d(ty0,ax0[i]);
  38.         glVertex2d(ay0[i],tx0);
  39.         glVertex2d(ty0,tx0);
  40.     }
  41.     glEnd();
  42.  
  43.     // outer circle
  44.     glColor3f (0.0, 0.0, 0.0);
  45.     int x1=0, y1=550, p1=1-y1;
  46.     int ax1[1111], ay1[1111];
  47.     int idx1=0;
  48.     ax1[idx1]=x1;
  49.     ay1[idx1++]=y1;
  50.     while(1){
  51.         if(p1<0){
  52.             x1++; p1=p1+(2*x1)+1;
  53.         }
  54.         else{
  55.             x1++; y1--; p1=p1+(2*x1)+1-2*y1;
  56.         }
  57.         ax1[idx1]=x1; ay1[idx1++]=y1;
  58.         if(x1>=y1) break;
  59.     }
  60.  
  61.     glBegin(GL_POLYGON);
  62.     int tx1,ty1;
  63.     for(int i=0;i<idx1;i++){
  64.         tx1=ax1[i]*(-1); ty1=ay1[i]*(-1);
  65.         glVertex2d(ax1[i],ay1[i]);
  66.         glVertex2d(tx1,ay1[i]);
  67.         glVertex2d(ax1[i],ty1);
  68.         glVertex2d(tx1,ty1);
  69.         glVertex2d(ay1[i],ax1[i]);
  70.         glVertex2d(ty1,ax1[i]);
  71.         glVertex2d(ay1[i],tx1);
  72.         glVertex2d(ty1,tx1);
  73.     }
  74.     glEnd();
  75.  
  76.     // inner circle border
  77.     glColor3f (1.0, 1.0, 1.0);
  78.     x0=0, y0=453, p0=1-y0;
  79.     ax0[1111], ay0[1111];
  80.     idx0=0;
  81.     ax0[idx0]=x0;
  82.     ay0[idx0++]=y0;
  83.     while(1){
  84.         if(p0<0){
  85.             x0++; p0=p0+(2*x0)+1;
  86.         }
  87.         else{
  88.             x0++; y0--; p0=p0+(2*x0)+1-2*y0;
  89.         }
  90.         ax0[idx0]=x0; ay0[idx0++]=y0;
  91.         if(x0>=y0) break;
  92.     }
  93.  
  94.     glBegin(GL_POLYGON);
  95.     for(int i=0;i<idx0;i++){
  96.         tx0=ax0[i]*(-1); ty0=ay0[i]*(-1);
  97.         glVertex2d(ax0[i],ay0[i]);
  98.         glVertex2d(tx0,ay0[i]);
  99.         glVertex2d(ax0[i],ty0);
  100.         glVertex2d(tx0,ty0);
  101.         glVertex2d(ay0[i],ax0[i]);
  102.         glVertex2d(ty0,ax0[i]);
  103.         glVertex2d(ay0[i],tx0);
  104.         glVertex2d(ty0,tx0);
  105.     }
  106.     glEnd();
  107.  
  108.     // inner circle
  109.     glColor3f (0.0, 0.0, 0.0);
  110.     int x2=0, y2=450, p2=1-y2;
  111.     int ax2[1111], ay2[1111];
  112.     int idx2=0;
  113.     ax2[idx2]=x2;
  114.     ay2[idx2++]=y2;
  115.     while(1){
  116.         if(p2<0){
  117.             x2++; p2=p2+(2*x2)+1;
  118.         }
  119.         else{
  120.             x2++; y2--; p2=p2+(2*x2)+1-2*y2;
  121.         }
  122.         ax2[idx2]=x2; ay2[idx2++]=y2;
  123.         if(x2>=y2) break;
  124.     }
  125.  
  126.     glBegin(GL_POLYGON);
  127.     int tx2,ty2;
  128.     for(int i=0;i<idx2;i++){
  129.         tx2=ax2[i]*(-1); ty2=ay2[i]*(-1);
  130.         glVertex2d(ax2[i],ay2[i]);
  131.         glVertex2d(tx2,ay2[i]);
  132.         glVertex2d(ax2[i],ty2);
  133.         glVertex2d(tx2,ty2);
  134.         glVertex2d(ay2[i],ax2[i]);
  135.         glVertex2d(ty2,ax2[i]);
  136.         glVertex2d(ay2[i],tx2);
  137.         glVertex2d(ty2,tx2);
  138.     }
  139.     glEnd();
  140.  
  141.     //seg1
  142.     glColor3f (1.0, 0.0, 0.0);
  143.     glBegin(GL_TRIANGLES);
  144.     glVertex2f(0.0,0.0);
  145.     glVertex2f(ax2[0]*1.0,ay2[0]*1.0);
  146.     glVertex2f(ax2[idx2-1]*1.0,ay2[idx2-1]*1.0);
  147.     glEnd();
  148.     glColor3f(1.0,0.0,0.0);
  149.     glBegin(GL_POLYGON);
  150.     for(int i=0;i<idx2;i++){
  151.         tx2=ax2[i]*(-1); ty2=ay2[i]*(-1);
  152.         glVertex2d(ax2[i],ay2[i]);
  153.     }
  154.     glEnd();
  155.  
  156.     //seg2
  157.     glColor3f (0.0, 1.0, 0.0);
  158.     glBegin(GL_TRIANGLES);
  159.     glVertex2f(0.0,0.0);
  160.     glVertex2f(ay2[0]*1.0,ax2[0]*1.0);
  161.     glVertex2f(ay2[idx2-1]*1.0,ax2[idx2-1]*1.0);
  162.     glEnd();
  163.     glColor3f(0.0,1.0,0.0);
  164.     glBegin(GL_POLYGON);
  165.     for(int i=0;i<idx2;i++){
  166.         tx2=ax2[i]*(-1); ty2=ay2[i]*(-1);
  167.         glVertex2d(ay2[i],ax2[i]);
  168.     }
  169.     glEnd();
  170.  
  171.     //seg3
  172.     glColor3f (1.0, 0.0, 0.0);
  173.     glBegin(GL_TRIANGLES);
  174.     glVertex2f(0.0,0.0);
  175.     glVertex2f(ay2[0]*1.0,ax2[0]*1.0*(-1));
  176.     glVertex2f(ay2[idx2-1]*1.0,ax2[idx2-1]*1.0*(-1));
  177.     glEnd();
  178.     glColor3f(1.0,0.0,0.0);
  179.     glBegin(GL_POLYGON);
  180.     for(int i=0;i<idx2;i++){
  181.         tx2=ax2[i]*(-1); ty2=ay2[i]*(-1);
  182.         glVertex2d(ay2[i],ax2[i]*(-1));
  183.     }
  184.     glEnd();
  185.  
  186.     //seg4
  187.     glColor3f (0.0, 1.0, 0.0);
  188.     glBegin(GL_TRIANGLES);
  189.     glVertex2f(0.0,0.0);
  190.     glVertex2f(ax2[0]*1.0,ay2[0]*1.0*(-1));
  191.     glVertex2f(ax2[idx2-1]*1.0,ay2[idx2-1]*1.0*(-1));
  192.     glEnd();
  193.     glColor3f(0.0,1.0,0.0);
  194.     glBegin(GL_POLYGON);
  195.     for(int i=0;i<idx2;i++){
  196.         tx2=ax2[i]*(-1); ty2=ay2[i]*(-1);
  197.         glVertex2d(ax2[i],ay2[i]*(-1));
  198.     }
  199.     glEnd();
  200.  
  201.     //seg5
  202.     glColor3f (1.0, 0.0, 0.0);
  203.     glBegin(GL_TRIANGLES);
  204.     glVertex2f(0.0,0.0);
  205.     glVertex2f(ax2[0]*1.0*(-1),ay2[0]*1.0*(-1));
  206.     glVertex2f(ax2[idx2-1]*1.0*(-1),ay2[idx2-1]*1.0*(-1));
  207.     glEnd();
  208.     glColor3f(1.0,0.0,0.0);
  209.     glBegin(GL_POLYGON);
  210.     for(int i=0;i<idx2;i++){
  211.         tx2=ax2[i]*(-1); ty2=ay2[i]*(-1);
  212.         glVertex2d(ax2[i]*(-1),ay2[i]*(-1));
  213.     }
  214.     glEnd();
  215.  
  216.     //seg6
  217.     glColor3f (0.0, 1.0, 0.0);
  218.     glBegin(GL_TRIANGLES);
  219.     glVertex2f(0.0,0.0);
  220.     glVertex2f(ay2[0]*1.0*(-1),ax2[0]*1.0*(-1));
  221.     glVertex2f(ay2[idx2-1]*1.0*(-1),ax2[idx2-1]*1.0*(-1));
  222.     glEnd();
  223.     glColor3f(0.0,1.0,0.0);
  224.     glBegin(GL_POLYGON);
  225.     for(int i=0;i<idx2;i++){
  226.         tx2=ax2[i]*(-1); ty2=ay2[i]*(-1);
  227.         glVertex2d(ay2[i]*(-1),ax2[i]*(-1));
  228.     }
  229.     glEnd();
  230.  
  231.     //seg7
  232.     glColor3f (1.0, 0.0, 0.0);
  233.     glBegin(GL_TRIANGLES);
  234.     glVertex2f(0.0,0.0);
  235.     glVertex2f(ay2[0]*1.0*(-1),ax2[0]*1.0);
  236.     glVertex2f(ay2[idx2-1]*1.0*(-1),ax2[idx2-1]*1.0);
  237.     glEnd();
  238.     glColor3f(1.0,0.0,0.0);
  239.     glBegin(GL_POLYGON);
  240.     for(int i=0;i<idx2;i++){
  241.         tx2=ax2[i]*(-1); ty2=ay2[i]*(-1);
  242.         glVertex2d(ay2[i]*(-1),ax2[i]);
  243.     }
  244.     glEnd();
  245.  
  246.  
  247.     //seg8
  248.     glColor3f (0.0, 1.0, 0.0);
  249.     glBegin(GL_TRIANGLES);
  250.     glVertex2f(0.0,0.0);
  251.     glVertex2f(ax2[0]*1.0*(-1),ay2[0]*1.0);
  252.     glVertex2f(ax2[idx2-1]*1.0*(-1),ay2[idx2-1]*1.0);
  253.     glEnd();
  254.     glColor3f(0.0,1.0,0.0);
  255.     glBegin(GL_POLYGON);
  256.     for(int i=0;i<idx2;i++){
  257.         tx2=ax2[i]*(-1); ty2=ay2[i]*(-1);
  258.         glVertex2d(ax2[i]*(-1),ay2[i]);
  259.     }
  260.     glEnd();
  261.  
  262.     //inner cricle 2 border
  263.     glColor3f (1.0, 1.0, 1.0);
  264.     x0=0, y0=428, p0=1-y0;
  265.     ax0[1111], ay0[1111];
  266.     idx0=0;
  267.     ax0[idx0]=x0;
  268.     ay0[idx0++]=y0;
  269.     while(1){
  270.         if(p0<0){
  271.             x0++; p0=p0+(2*x0)+1;
  272.         }
  273.         else{
  274.             x0++; y0--; p0=p0+(2*x0)+1-2*y0;
  275.         }
  276.         ax0[idx0]=x0; ay0[idx0++]=y0;
  277.         if(x0>=y0) break;
  278.     }
  279.  
  280.     glBegin(GL_POLYGON);
  281.     for(int i=0;i<idx0;i++){
  282.         tx0=ax0[i]*(-1); ty0=ay0[i]*(-1);
  283.         glVertex2d(ax0[i],ay0[i]);
  284.         glVertex2d(tx0,ay0[i]);
  285.         glVertex2d(ax0[i],ty0);
  286.         glVertex2d(tx0,ty0);
  287.         glVertex2d(ay0[i],ax0[i]);
  288.         glVertex2d(ty0,ax0[i]);
  289.         glVertex2d(ay0[i],tx0);
  290.         glVertex2d(ty0,tx0);
  291.     }
  292.     glEnd();
  293.  
  294.     // inner circle 2
  295.     glColor3f (0.0, 0.0, 0.0);
  296.     x2=0, y2=425, p2=1-y2;
  297.     ax2[1111], ay2[1111];
  298.     idx2=0;
  299.     ax2[idx2]=x2;
  300.     ay2[idx2++]=y2;
  301.     while(1){
  302.         if(p2<0){
  303.             x2++; p2=p2+(2*x2)+1;
  304.         }
  305.         else{
  306.             x2++; y2--; p2=p2+(2*x2)+1-2*y2;
  307.         }
  308.         ax2[idx2]=x2; ay2[idx2++]=y2;
  309.         if(x2>=y2) break;
  310.     }
  311.  
  312.     glBegin(GL_POLYGON);
  313.     for(int i=0;i<idx2;i++){
  314.         tx2=ax2[i]*(-1); ty2=ay2[i]*(-1);
  315.         glVertex2d(ax2[i],ay2[i]);
  316.         glVertex2d(tx2,ay2[i]);
  317.         glVertex2d(ax2[i],ty2);
  318.         glVertex2d(tx2,ty2);
  319.         glVertex2d(ay2[i],ax2[i]);
  320.         glVertex2d(ty2,ax2[i]);
  321.         glVertex2d(ay2[i],tx2);
  322.         glVertex2d(ty2,tx2);
  323.     }
  324.     glEnd();
  325.  
  326.     //seg1
  327.     glColor3f (0.0, 0.0, 0.0);
  328.     glBegin(GL_TRIANGLES);
  329.     glVertex2f(0.0,0.0);
  330.     glVertex2f(ax2[0]*1.0,ay2[0]*1.0);
  331.     glVertex2f(ax2[idx2-1]*1.0,ay2[idx2-1]*1.0);
  332.     glEnd();
  333.     glColor3f(0.0,0.0,0.0);
  334.     glBegin(GL_POLYGON);
  335.     for(int i=0;i<idx2;i++){
  336.         tx2=ax2[i]*(-1); ty2=ay2[i]*(-1);
  337.         glVertex2d(ax2[i],ay2[i]);
  338.     }
  339.     glEnd();
  340.  
  341.     //seg2
  342.     glColor3f (0.83, 0.83, 0.83);
  343.     glBegin(GL_TRIANGLES);
  344.     glVertex2f(0.0,0.0);
  345.     glVertex2f(ay2[0]*1.0,ax2[0]*1.0);
  346.     glVertex2f(ay2[idx2-1]*1.0,ax2[idx2-1]*1.0);
  347.     glEnd();
  348.     glColor3f(0.83, 0.83, 0.83);
  349.     glBegin(GL_POLYGON);
  350.     for(int i=0;i<idx2;i++){
  351.         tx2=ax2[i]*(-1); ty2=ay2[i]*(-1);
  352.         glVertex2d(ay2[i],ax2[i]);
  353.     }
  354.     glEnd();
  355.  
  356.     //seg3
  357.     glColor3f (0.0, 0.0, 0.0);
  358.     glBegin(GL_TRIANGLES);
  359.     glVertex2f(0.0,0.0);
  360.     glVertex2f(ay2[0]*1.0,ax2[0]*1.0*(-1));
  361.     glVertex2f(ay2[idx2-1]*1.0,ax2[idx2-1]*1.0*(-1));
  362.     glEnd();
  363.     glColor3f(0.0,0.0,0.0);
  364.     glBegin(GL_POLYGON);
  365.     for(int i=0;i<idx2;i++){
  366.         tx2=ax2[i]*(-1); ty2=ay2[i]*(-1);
  367.         glVertex2d(ay2[i],ax2[i]*(-1));
  368.     }
  369.     glEnd();
  370.  
  371.     //seg4
  372.     glColor3f (0.83, 0.83, 0.83);
  373.     glBegin(GL_TRIANGLES);
  374.     glVertex2f(0.0,0.0);
  375.     glVertex2f(ax2[0]*1.0,ay2[0]*1.0*(-1));
  376.     glVertex2f(ax2[idx2-1]*1.0,ay2[idx2-1]*1.0*(-1));
  377.     glEnd();
  378.     glColor3f(0.83, 0.83, 0.83);
  379.     glBegin(GL_POLYGON);
  380.     for(int i=0;i<idx2;i++){
  381.         tx2=ax2[i]*(-1); ty2=ay2[i]*(-1);
  382.         glVertex2d(ax2[i],ay2[i]*(-1));
  383.     }
  384.     glEnd();
  385.  
  386.     //seg5
  387.     glColor3f (0.0, 0.0, 0.0);
  388.     glBegin(GL_TRIANGLES);
  389.     glVertex2f(0.0,0.0);
  390.     glVertex2f(ax2[0]*1.0*(-1),ay2[0]*1.0*(-1));
  391.     glVertex2f(ax2[idx2-1]*1.0*(-1),ay2[idx2-1]*1.0*(-1));
  392.     glEnd();
  393.     glColor3f(0.0,0.0,0.0);
  394.     glBegin(GL_POLYGON);
  395.     for(int i=0;i<idx2;i++){
  396.         tx2=ax2[i]*(-1); ty2=ay2[i]*(-1);
  397.         glVertex2d(ax2[i]*(-1),ay2[i]*(-1));
  398.     }
  399.     glEnd();
  400.  
  401.     //seg6
  402.     glColor3f (0.83, 0.83, 0.83);
  403.     glBegin(GL_TRIANGLES);
  404.     glVertex2f(0.0,0.0);
  405.     glVertex2f(ay2[0]*1.0*(-1),ax2[0]*1.0*(-1));
  406.     glVertex2f(ay2[idx2-1]*1.0*(-1),ax2[idx2-1]*1.0*(-1));
  407.     glEnd();
  408.     glColor3f(0.83, 0.83, 0.83);
  409.     glBegin(GL_POLYGON);
  410.     for(int i=0;i<idx2;i++){
  411.         tx2=ax2[i]*(-1); ty2=ay2[i]*(-1);
  412.         glVertex2d(ay2[i]*(-1),ax2[i]*(-1));
  413.     }
  414.     glEnd();
  415.  
  416.     //seg7
  417.     glColor3f (0.0, 0.0, 0.0);
  418.     glBegin(GL_TRIANGLES);
  419.     glVertex2f(0.0,0.0);
  420.     glVertex2f(ay2[0]*1.0*(-1),ax2[0]*1.0);
  421.     glVertex2f(ay2[idx2-1]*1.0*(-1),ax2[idx2-1]*1.0);
  422.     glEnd();
  423.     glColor3f(0.0,0.0,0.0);
  424.     glBegin(GL_POLYGON);
  425.     for(int i=0;i<idx2;i++){
  426.         tx2=ax2[i]*(-1); ty2=ay2[i]*(-1);
  427.         glVertex2d(ay2[i]*(-1),ax2[i]);
  428.     }
  429.     glEnd();
  430.  
  431.  
  432.     //seg8
  433.     glColor3f (0.83, 0.83, 0.83);
  434.     glBegin(GL_TRIANGLES);
  435.     glVertex2f(0.0,0.0);
  436.     glVertex2f(ax2[0]*1.0*(-1),ay2[0]*1.0);
  437.     glVertex2f(ax2[idx2-1]*1.0*(-1),ay2[idx2-1]*1.0);
  438.     glEnd();
  439.     glColor3f(0.83, 0.83, 0.83);
  440.     glBegin(GL_POLYGON);
  441.     for(int i=0;i<idx2;i++){
  442.         tx2=ax2[i]*(-1); ty2=ay2[i]*(-1);
  443.         glVertex2d(ax2[i]*(-1),ay2[i]);
  444.     }
  445.     glEnd();
  446.  
  447.     //inner cricle 3 border
  448.     glColor3f (1.0, 1.0, 1.0);
  449.     x0=0, y0=253, p0=1-y0;
  450.     ax0[1111], ay0[1111];
  451.     idx0=0;
  452.     ax0[idx0]=x0;
  453.     ay0[idx0++]=y0;
  454.     while(1){
  455.         if(p0<0){
  456.             x0++; p0=p0+(2*x0)+1;
  457.         }
  458.         else{
  459.             x0++; y0--; p0=p0+(2*x0)+1-2*y0;
  460.         }
  461.         ax0[idx0]=x0; ay0[idx0++]=y0;
  462.         if(x0>=y0) break;
  463.     }
  464.  
  465.     glBegin(GL_POLYGON);
  466.     for(int i=0;i<idx0;i++){
  467.         tx0=ax0[i]*(-1); ty0=ay0[i]*(-1);
  468.         glVertex2d(ax0[i],ay0[i]);
  469.         glVertex2d(tx0,ay0[i]);
  470.         glVertex2d(ax0[i],ty0);
  471.         glVertex2d(tx0,ty0);
  472.         glVertex2d(ay0[i],ax0[i]);
  473.         glVertex2d(ty0,ax0[i]);
  474.         glVertex2d(ay0[i],tx0);
  475.         glVertex2d(ty0,tx0);
  476.     }
  477.     glEnd();
  478.  
  479.     // inner circle 3
  480.     glColor3f (0.0, 0.0, 0.0);
  481.     x2=0, y2=250, p2=1-y2;
  482.     ax2[1111], ay2[1111];
  483.     idx2=0;
  484.     ax2[idx2]=x2;
  485.     ay2[idx2++]=y2;
  486.     while(1){
  487.         if(p2<0){
  488.             x2++; p2=p2+(2*x2)+1;
  489.         }
  490.         else{
  491.             x2++; y2--; p2=p2+(2*x2)+1-2*y2;
  492.         }
  493.         ax2[idx2]=x2; ay2[idx2++]=y2;
  494.         if(x2>=y2) break;
  495.     }
  496.  
  497.     glBegin(GL_POLYGON);
  498.     for(int i=0;i<idx2;i++){
  499.         tx2=ax2[i]*(-1); ty2=ay2[i]*(-1);
  500.         glVertex2d(ax2[i],ay2[i]);
  501.         glVertex2d(tx2,ay2[i]);
  502.         glVertex2d(ax2[i],ty2);
  503.         glVertex2d(tx2,ty2);
  504.         glVertex2d(ay2[i],ax2[i]);
  505.         glVertex2d(ty2,ax2[i]);
  506.         glVertex2d(ay2[i],tx2);
  507.         glVertex2d(ty2,tx2);
  508.     }
  509.     glEnd();
  510.  
  511.     //seg1
  512.     glColor3f (1.0, 0.0, 0.0);
  513.     glBegin(GL_TRIANGLES);
  514.     glVertex2f(0.0,0.0);
  515.     glVertex2f(ax2[0]*1.0,ay2[0]*1.0);
  516.     glVertex2f(ax2[idx2-1]*1.0,ay2[idx2-1]*1.0);
  517.     glEnd();
  518.     glColor3f(1.0,0.0,0.0);
  519.     glBegin(GL_POLYGON);
  520.     for(int i=0;i<idx2;i++){
  521.         tx2=ax2[i]*(-1); ty2=ay2[i]*(-1);
  522.         glVertex2d(ax2[i],ay2[i]);
  523.     }
  524.     glEnd();
  525.  
  526.     //seg2
  527.     glColor3f (0.0, 1.0, 0.0);
  528.     glBegin(GL_TRIANGLES);
  529.     glVertex2f(0.0,0.0);
  530.     glVertex2f(ay2[0]*1.0,ax2[0]*1.0);
  531.     glVertex2f(ay2[idx2-1]*1.0,ax2[idx2-1]*1.0);
  532.     glEnd();
  533.     glColor3f(0.0,1.0,0.0);
  534.     glBegin(GL_POLYGON);
  535.     for(int i=0;i<idx2;i++){
  536.         tx2=ax2[i]*(-1); ty2=ay2[i]*(-1);
  537.         glVertex2d(ay2[i],ax2[i]);
  538.     }
  539.     glEnd();
  540.  
  541.     //seg3
  542.     glColor3f (1.0, 0.0, 0.0);
  543.     glBegin(GL_TRIANGLES);
  544.     glVertex2f(0.0,0.0);
  545.     glVertex2f(ay2[0]*1.0,ax2[0]*1.0*(-1));
  546.     glVertex2f(ay2[idx2-1]*1.0,ax2[idx2-1]*1.0*(-1));
  547.     glEnd();
  548.     glColor3f(1.0,0.0,0.0);
  549.     glBegin(GL_POLYGON);
  550.     for(int i=0;i<idx2;i++){
  551.         tx2=ax2[i]*(-1); ty2=ay2[i]*(-1);
  552.         glVertex2d(ay2[i],ax2[i]*(-1));
  553.     }
  554.     glEnd();
  555.  
  556.     //seg4
  557.     glColor3f (0.0, 1.0, 0.0);
  558.     glBegin(GL_TRIANGLES);
  559.     glVertex2f(0.0,0.0);
  560.     glVertex2f(ax2[0]*1.0,ay2[0]*1.0*(-1));
  561.     glVertex2f(ax2[idx2-1]*1.0,ay2[idx2-1]*1.0*(-1));
  562.     glEnd();
  563.     glColor3f(0.0,1.0,0.0);
  564.     glBegin(GL_POLYGON);
  565.     for(int i=0;i<idx2;i++){
  566.         tx2=ax2[i]*(-1); ty2=ay2[i]*(-1);
  567.         glVertex2d(ax2[i],ay2[i]*(-1));
  568.     }
  569.     glEnd();
  570.  
  571.     //seg5
  572.     glColor3f (1.0, 0.0, 0.0);
  573.     glBegin(GL_TRIANGLES);
  574.     glVertex2f(0.0,0.0);
  575.     glVertex2f(ax2[0]*1.0*(-1),ay2[0]*1.0*(-1));
  576.     glVertex2f(ax2[idx2-1]*1.0*(-1),ay2[idx2-1]*1.0*(-1));
  577.     glEnd();
  578.     glColor3f(1.0,0.0,0.0);
  579.     glBegin(GL_POLYGON);
  580.     for(int i=0;i<idx2;i++){
  581.         tx2=ax2[i]*(-1); ty2=ay2[i]*(-1);
  582.         glVertex2d(ax2[i]*(-1),ay2[i]*(-1));
  583.     }
  584.     glEnd();
  585.  
  586.     //seg6
  587.     glColor3f (0.0, 1.0, 0.0);
  588.     glBegin(GL_TRIANGLES);
  589.     glVertex2f(0.0,0.0);
  590.     glVertex2f(ay2[0]*1.0*(-1),ax2[0]*1.0*(-1));
  591.     glVertex2f(ay2[idx2-1]*1.0*(-1),ax2[idx2-1]*1.0*(-1));
  592.     glEnd();
  593.     glColor3f(0.0,1.0,0.0);
  594.     glBegin(GL_POLYGON);
  595.     for(int i=0;i<idx2;i++){
  596.         tx2=ax2[i]*(-1); ty2=ay2[i]*(-1);
  597.         glVertex2d(ay2[i]*(-1),ax2[i]*(-1));
  598.     }
  599.     glEnd();
  600.  
  601.     //seg7
  602.     glColor3f (1.0, 0.0, 0.0);
  603.     glBegin(GL_TRIANGLES);
  604.     glVertex2f(0.0,0.0);
  605.     glVertex2f(ay2[0]*1.0*(-1),ax2[0]*1.0);
  606.     glVertex2f(ay2[idx2-1]*1.0*(-1),ax2[idx2-1]*1.0);
  607.     glEnd();
  608.     glColor3f(1.0,0.0,0.0);
  609.     glBegin(GL_POLYGON);
  610.     for(int i=0;i<idx2;i++){
  611.         tx2=ax2[i]*(-1); ty2=ay2[i]*(-1);
  612.         glVertex2d(ay2[i]*(-1),ax2[i]);
  613.     }
  614.     glEnd();
  615.  
  616.  
  617.     //seg8
  618.     glColor3f (0.0, 1.0, 0.0);
  619.     glBegin(GL_TRIANGLES);
  620.     glVertex2f(0.0,0.0);
  621.     glVertex2f(ax2[0]*1.0*(-1),ay2[0]*1.0);
  622.     glVertex2f(ax2[idx2-1]*1.0*(-1),ay2[idx2-1]*1.0);
  623.     glEnd();
  624.     glColor3f(0.0,1.0,0.0);
  625.     glBegin(GL_POLYGON);
  626.     for(int i=0;i<idx2;i++){
  627.         tx2=ax2[i]*(-1); ty2=ay2[i]*(-1);
  628.         glVertex2d(ax2[i]*(-1),ay2[i]);
  629.     }
  630.     glEnd();
  631.  
  632.     //inner cricle 4 border
  633.     glColor3f (1.0, 1.0, 1.0);
  634.     x0=0, y0=228, p0=1-y0;
  635.     ax0[1111], ay0[1111];
  636.     idx0=0;
  637.     ax0[idx0]=x0;
  638.     ay0[idx0++]=y0;
  639.     while(1){
  640.         if(p0<0){
  641.             x0++; p0=p0+(2*x0)+1;
  642.         }
  643.         else{
  644.             x0++; y0--; p0=p0+(2*x0)+1-2*y0;
  645.         }
  646.         ax0[idx0]=x0; ay0[idx0++]=y0;
  647.         if(x0>=y0) break;
  648.     }
  649.  
  650.     glBegin(GL_POLYGON);
  651.     for(int i=0;i<idx0;i++){
  652.         tx0=ax0[i]*(-1); ty0=ay0[i]*(-1);
  653.         glVertex2d(ax0[i],ay0[i]);
  654.         glVertex2d(tx0,ay0[i]);
  655.         glVertex2d(ax0[i],ty0);
  656.         glVertex2d(tx0,ty0);
  657.         glVertex2d(ay0[i],ax0[i]);
  658.         glVertex2d(ty0,ax0[i]);
  659.         glVertex2d(ay0[i],tx0);
  660.         glVertex2d(ty0,tx0);
  661.     }
  662.     glEnd();
  663.  
  664.     // inner circle 4
  665.     glColor3f (0.0, 0.0, 0.0);
  666.     x2=0, y2=225, p2=1-y2;
  667.     ax2[1111], ay2[1111];
  668.     idx2=0;
  669.     ax2[idx2]=x2;
  670.     ay2[idx2++]=y2;
  671.     while(1){
  672.         if(p2<0){
  673.             x2++; p2=p2+(2*x2)+1;
  674.         }
  675.         else{
  676.             x2++; y2--; p2=p2+(2*x2)+1-2*y2;
  677.         }
  678.         ax2[idx2]=x2; ay2[idx2++]=y2;
  679.         if(x2>=y2) break;
  680.     }
  681.  
  682.     glBegin(GL_POLYGON);
  683.     for(int i=0;i<idx2;i++){
  684.         tx2=ax2[i]*(-1); ty2=ay2[i]*(-1);
  685.         glVertex2d(ax2[i],ay2[i]);
  686.         glVertex2d(tx2,ay2[i]);
  687.         glVertex2d(ax2[i],ty2);
  688.         glVertex2d(tx2,ty2);
  689.         glVertex2d(ay2[i],ax2[i]);
  690.         glVertex2d(ty2,ax2[i]);
  691.         glVertex2d(ay2[i],tx2);
  692.         glVertex2d(ty2,tx2);
  693.     }
  694.     glEnd();
  695.  
  696.     //seg1
  697.     glColor3f (0.0, 0.0, 0.0);
  698.     glBegin(GL_TRIANGLES);
  699.     glVertex2f(0.0,0.0);
  700.     glVertex2f(ax2[0]*1.0,ay2[0]*1.0);
  701.     glVertex2f(ax2[idx2-1]*1.0,ay2[idx2-1]*1.0);
  702.     glEnd();
  703.     glColor3f(0.0,0.0,0.0);
  704.     glBegin(GL_POLYGON);
  705.     for(int i=0;i<idx2;i++){
  706.         tx2=ax2[i]*(-1); ty2=ay2[i]*(-1);
  707.         glVertex2d(ax2[i],ay2[i]);
  708.     }
  709.     glEnd();
  710.  
  711.     //seg2
  712.     glColor3f (0.83, 0.83, 0.83);
  713.     glBegin(GL_TRIANGLES);
  714.     glVertex2f(0.0,0.0);
  715.     glVertex2f(ay2[0]*1.0,ax2[0]*1.0);
  716.     glVertex2f(ay2[idx2-1]*1.0,ax2[idx2-1]*1.0);
  717.     glEnd();
  718.     glColor3f(0.83, 0.83, 0.83);
  719.     glBegin(GL_POLYGON);
  720.     for(int i=0;i<idx2;i++){
  721.         tx2=ax2[i]*(-1); ty2=ay2[i]*(-1);
  722.         glVertex2d(ay2[i],ax2[i]);
  723.     }
  724.     glEnd();
  725.  
  726.     //seg3
  727.     glColor3f (0.0, 0.0, 0.0);
  728.     glBegin(GL_TRIANGLES);
  729.     glVertex2f(0.0,0.0);
  730.     glVertex2f(ay2[0]*1.0,ax2[0]*1.0*(-1));
  731.     glVertex2f(ay2[idx2-1]*1.0,ax2[idx2-1]*1.0*(-1));
  732.     glEnd();
  733.     glColor3f(0.0,0.0,0.0);
  734.     glBegin(GL_POLYGON);
  735.     for(int i=0;i<idx2;i++){
  736.         tx2=ax2[i]*(-1); ty2=ay2[i]*(-1);
  737.         glVertex2d(ay2[i],ax2[i]*(-1));
  738.     }
  739.     glEnd();
  740.  
  741.     //seg4
  742.     glColor3f (0.83, 0.83, 0.83);
  743.     glBegin(GL_TRIANGLES);
  744.     glVertex2f(0.0,0.0);
  745.     glVertex2f(ax2[0]*1.0,ay2[0]*1.0*(-1));
  746.     glVertex2f(ax2[idx2-1]*1.0,ay2[idx2-1]*1.0*(-1));
  747.     glEnd();
  748.     glColor3f(0.83, 0.83, 0.83);
  749.     glBegin(GL_POLYGON);
  750.     for(int i=0;i<idx2;i++){
  751.         tx2=ax2[i]*(-1); ty2=ay2[i]*(-1);
  752.         glVertex2d(ax2[i],ay2[i]*(-1));
  753.     }
  754.     glEnd();
  755.  
  756.     //seg5
  757.     glColor3f (0.0, 0.0, 0.0);
  758.     glBegin(GL_TRIANGLES);
  759.     glVertex2f(0.0,0.0);
  760.     glVertex2f(ax2[0]*1.0*(-1),ay2[0]*1.0*(-1));
  761.     glVertex2f(ax2[idx2-1]*1.0*(-1),ay2[idx2-1]*1.0*(-1));
  762.     glEnd();
  763.     glColor3f(0.0,0.0,0.0);
  764.     glBegin(GL_POLYGON);
  765.     for(int i=0;i<idx2;i++){
  766.         tx2=ax2[i]*(-1); ty2=ay2[i]*(-1);
  767.         glVertex2d(ax2[i]*(-1),ay2[i]*(-1));
  768.     }
  769.     glEnd();
  770.  
  771.     //seg6
  772.     glColor3f (0.83, 0.83, 0.83);
  773.     glBegin(GL_TRIANGLES);
  774.     glVertex2f(0.0,0.0);
  775.     glVertex2f(ay2[0]*1.0*(-1),ax2[0]*1.0*(-1));
  776.     glVertex2f(ay2[idx2-1]*1.0*(-1),ax2[idx2-1]*1.0*(-1));
  777.     glEnd();
  778.     glColor3f(0.83, 0.83, 0.83);
  779.     glBegin(GL_POLYGON);
  780.     for(int i=0;i<idx2;i++){
  781.         tx2=ax2[i]*(-1); ty2=ay2[i]*(-1);
  782.         glVertex2d(ay2[i]*(-1),ax2[i]*(-1));
  783.     }
  784.     glEnd();
  785.  
  786.     //seg7
  787.     glColor3f (0.0, 0.0, 0.0);
  788.     glBegin(GL_TRIANGLES);
  789.     glVertex2f(0.0,0.0);
  790.     glVertex2f(ay2[0]*1.0*(-1),ax2[0]*1.0);
  791.     glVertex2f(ay2[idx2-1]*1.0*(-1),ax2[idx2-1]*1.0);
  792.     glEnd();
  793.     glColor3f(0.0,0.0,0.0);
  794.     glBegin(GL_POLYGON);
  795.     for(int i=0;i<idx2;i++){
  796.         tx2=ax2[i]*(-1); ty2=ay2[i]*(-1);
  797.         glVertex2d(ay2[i]*(-1),ax2[i]);
  798.     }
  799.     glEnd();
  800.  
  801.  
  802.     //seg8
  803.     glColor3f (0.83, 0.83, 0.83);
  804.     glBegin(GL_TRIANGLES);
  805.     glVertex2f(0.0,0.0);
  806.     glVertex2f(ax2[0]*1.0*(-1),ay2[0]*1.0);
  807.     glVertex2f(ax2[idx2-1]*1.0*(-1),ay2[idx2-1]*1.0);
  808.     glEnd();
  809.     glColor3f(0.83, 0.83, 0.83);
  810.     glBegin(GL_POLYGON);
  811.     for(int i=0;i<idx2;i++){
  812.         tx2=ax2[i]*(-1); ty2=ay2[i]*(-1);
  813.         glVertex2d(ax2[i]*(-1),ay2[i]);
  814.     }
  815.     glEnd();
  816.  
  817.     //inner cricle 5 border
  818.     glColor3f (1.0, 1.0, 1.0);
  819.     x0=0, y0=60, p0=1-y0;
  820.     ax0[1111], ay0[1111];
  821.     idx0=0;
  822.     ax0[idx0]=x0;
  823.     ay0[idx0++]=y0;
  824.     while(1){
  825.         if(p0<0){
  826.             x0++; p0=p0+(2*x0)+1;
  827.         }
  828.         else{
  829.             x0++; y0--; p0=p0+(2*x0)+1-2*y0;
  830.         }
  831.         ax0[idx0]=x0; ay0[idx0++]=y0;
  832.         if(x0>=y0) break;
  833.     }
  834.  
  835.     glBegin(GL_POLYGON);
  836.     for(int i=0;i<idx0;i++){
  837.         tx0=ax0[i]*(-1); ty0=ay0[i]*(-1);
  838.         glVertex2d(ax0[i],ay0[i]);
  839.         glVertex2d(tx0,ay0[i]);
  840.         glVertex2d(ax0[i],ty0);
  841.         glVertex2d(tx0,ty0);
  842.         glVertex2d(ay0[i],ax0[i]);
  843.         glVertex2d(ty0,ax0[i]);
  844.         glVertex2d(ay0[i],tx0);
  845.         glVertex2d(ty0,tx0);
  846.     }
  847.     glEnd();
  848.  
  849.     // inner circle 5
  850.     glColor3f (0.0, 1.0, 0.0);
  851.     x2=0, y2=55, p2=1-y2;
  852.     ax2[1111], ay2[1111];
  853.     idx2=0;
  854.     ax2[idx2]=x2;
  855.     ay2[idx2++]=y2;
  856.     while(1){
  857.         if(p2<0){
  858.             x2++; p2=p2+(2*x2)+1;
  859.         }
  860.         else{
  861.             x2++; y2--; p2=p2+(2*x2)+1-2*y2;
  862.         }
  863.         ax2[idx2]=x2; ay2[idx2++]=y2;
  864.         if(x2>=y2) break;
  865.     }
  866.  
  867.     glBegin(GL_POLYGON);
  868.     for(int i=0;i<idx2;i++){
  869.         tx2=ax2[i]*(-1); ty2=ay2[i]*(-1);
  870.         glVertex2d(ax2[i],ay2[i]);
  871.         glVertex2d(tx2,ay2[i]);
  872.         glVertex2d(ax2[i],ty2);
  873.         glVertex2d(tx2,ty2);
  874.         glVertex2d(ay2[i],ax2[i]);
  875.         glVertex2d(ty2,ax2[i]);
  876.         glVertex2d(ay2[i],tx2);
  877.         glVertex2d(ty2,tx2);
  878.     }
  879.     glEnd();
  880.  
  881.     //inner cricle 6 border
  882.     glColor3f (1.0, 1.0, 1.0);
  883.     x0=0, y0=30, p0=1-y0;
  884.     ax0[1111], ay0[1111];
  885.     idx0=0;
  886.     ax0[idx0]=x0;
  887.     ay0[idx0++]=y0;
  888.     while(1){
  889.         if(p0<0){
  890.             x0++; p0=p0+(2*x0)+1;
  891.         }
  892.         else{
  893.             x0++; y0--; p0=p0+(2*x0)+1-2*y0;
  894.         }
  895.         ax0[idx0]=x0; ay0[idx0++]=y0;
  896.         if(x0>=y0) break;
  897.     }
  898.  
  899.     glBegin(GL_POLYGON);
  900.     for(int i=0;i<idx0;i++){
  901.         tx0=ax0[i]*(-1); ty0=ay0[i]*(-1);
  902.         glVertex2d(ax0[i],ay0[i]);
  903.         glVertex2d(tx0,ay0[i]);
  904.         glVertex2d(ax0[i],ty0);
  905.         glVertex2d(tx0,ty0);
  906.         glVertex2d(ay0[i],ax0[i]);
  907.         glVertex2d(ty0,ax0[i]);
  908.         glVertex2d(ay0[i],tx0);
  909.         glVertex2d(ty0,tx0);
  910.     }
  911.     glEnd();
  912.  
  913.     // inner circle 6
  914.     glColor3f (1.0, 0.0, 0.0);
  915.     x2=0, y2=25, p2=1-y2;
  916.     ax2[1111], ay2[1111];
  917.     idx2=0;
  918.     ax2[idx2]=x2;
  919.     ay2[idx2++]=y2;
  920.     while(1){
  921.         if(p2<0){
  922.             x2++; p2=p2+(2*x2)+1;
  923.         }
  924.         else{
  925.             x2++; y2--; p2=p2+(2*x2)+1-2*y2;
  926.         }
  927.         ax2[idx2]=x2; ay2[idx2++]=y2;
  928.         if(x2>=y2) break;
  929.     }
  930.  
  931.     glBegin(GL_POLYGON);
  932.     for(int i=0;i<idx2;i++){
  933.         tx2=ax2[i]*(-1); ty2=ay2[i]*(-1);
  934.         glVertex2d(ax2[i],ay2[i]);
  935.         glVertex2d(tx2,ay2[i]);
  936.         glVertex2d(ax2[i],ty2);
  937.         glVertex2d(tx2,ty2);
  938.         glVertex2d(ay2[i],ax2[i]);
  939.         glVertex2d(ty2,ax2[i]);
  940.         glVertex2d(ay2[i],tx2);
  941.         glVertex2d(ty2,tx2);
  942.     }
  943.     glEnd();
  944.  
  945.     glFlush ();
  946. }
  947.  
  948. void init (void){
  949.    
  950.     glClearColor (0.0, 0.0, 0.0, 0.0);
  951.    
  952.     glMatrixMode(GL_PROJECTION);
  953.     glLoadIdentity();
  954.     gluOrtho2D(-1000,1000,-1000,1000);      //fix the windows size
  955. }
  956.  
  957. int main(int argc, char** argv)
  958. {
  959.     glutInit(&argc, argv);
  960.     glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB);
  961.     glutInitWindowSize (1000, 1000);
  962.     glutInitWindowPosition (50, 50);
  963.     glutCreateWindow ("172-15-9804");
  964.     init ();
  965.     glutDisplayFunc(display);
  966.     glutMainLoop();
  967.    
  968.     return 0;
  969. }
Add Comment
Please, Sign In to add comment