Advertisement
Guest User

dfdsf

a guest
Apr 23rd, 2014
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.93 KB | None | 0 0
  1. #include<iostream>
  2. #include<cmath>
  3. #include <cstdlib>
  4. #include <glut.h>
  5.  
  6. using namespace std;
  7.  
  8.  
  9. void Draw() {
  10.     glClear(GL_COLOR_BUFFER_BIT);
  11.     glColor3f(0.3, 1.0, 0.3);
  12.     int wybor;
  13.  
  14.     cout<<"Wybierz opcje"<<endl;
  15.     cout<<"1. rysowanie kwadratu"<<endl;
  16.     cout<<"2. rysowanie trojkata"<<endl;
  17.     cout<<"3. rysowanie wstegi"<<endl;
  18.     cout<<"4. rysowanie wachlarza (trojkaty)"<<endl;
  19.     cout<<"5. rysowanie punktu o podanej wielkosci"<<endl;
  20.     cout<<"6. rysowanie linii o podanej grubosc i wzorze"<<endl;
  21.     cout<<"7. rysowanie wachlarza (kolo)"<<endl;
  22.  
  23.     cin>>wybor;
  24.  
  25.     switch(wybor)
  26.     {
  27.     case 1://czworokąt
  28.         {
  29.             double x1, y1, x2, y2, x3, y3, x4, y4;
  30.             x1=-0.2;
  31.             y1=-0.2;
  32.             x2=0.2;
  33.             y2=-0.2;
  34.             x3=0.2;
  35.             y3=0.2;
  36.             x4=-0.2;
  37.             y4=0.2;
  38.             //cin>>x1>>y1;
  39.             //cin>>x2>>y2;
  40.             //cin>>x3>>y3;
  41.             //cin>>x4>>y4;
  42.  
  43.             glBegin(GL_POLYGON);
  44.             glVertex2d(x1,y1);
  45.             glVertex2d(x2,y2);
  46.             glVertex2d(x3,y3);
  47.             glVertex2d(x4,y4);
  48.             glEnd();
  49.             break;
  50.  
  51.         }
  52.     case 2://trójkąt
  53.         {
  54.             double x1, x2, x3, y1, y2, y3;
  55.             x1=0;
  56.             y1=0;
  57.             x2=0;
  58.             y2=0.2;
  59.             x3=0.3;
  60.             y3=0;
  61.             //cin>>x1>>y1;
  62.             //cin>>x2>>y2;
  63.             //cin>>x3>>y3;
  64.             glBegin(GL_TRIANGLES);
  65.                 glVertex2d(x1, y1);
  66.                 glVertex2d(x2, y2);
  67.                 glVertex2d(x3, y3);
  68.             glEnd();
  69.             break;
  70.         }
  71.     case 3://wstęga trójtątów
  72.         {
  73.             int ilosc;
  74.             double delta=0.1;
  75.             cout<<"Podaj ilosc trojkatow"<<endl;
  76.             cin>>ilosc;
  77.             double x1, x2, x3, y1, y2, y3;
  78.             //cin>>x1>>y1;
  79.             //
  80.            
  81.  
  82.             x1=0;
  83.             y1=0;
  84.             x2=0;
  85.             y2=0.3;
  86.             x3=0.2;
  87.             y3=0;
  88.            
  89.             glColor3f(0.1,0.1,0.1);
  90.             glBegin(GL_TRIANGLE_STRIP);
  91.                 glVertex2d(x1, y1);
  92.                 glVertex2d(x2, y2);
  93.                 glVertex2d(x3, y3);
  94.             glEnd();
  95.  
  96.             for(int i=0; i<ilosc; i++)
  97.             {
  98.                 if(i%2==1)
  99.                 {
  100.                    
  101.                     glColor3f(0.1+delta*i,0.1, 0.1);
  102.                     glBegin(GL_TRIANGLE_STRIP);
  103.                     glVertex2d(x2,y2);
  104.                     glVertex2d(x2+delta,y2);
  105.                     glVertex2d(x3,y3);
  106.                     glEnd();
  107.                     x2+=delta;
  108.  
  109.                 }
  110.                 else
  111.                 {
  112.                     glColor3f(0.1,0.1+delta*i, 0.1);
  113.                     glBegin(GL_TRIANGLE_STRIP);
  114.                     glVertex2d(x3,y3);
  115.                     glVertex2d(x2,y2);
  116.                     glVertex2d(x3+delta,y3);
  117.                     glEnd();
  118.                     x3+=delta;
  119.                 }
  120.             }
  121.                
  122.             }
  123.             break;
  124.     case 4://wachlarz trójkątów
  125.         {
  126.             int ilosc;
  127.             double delta=0.05;
  128.             cout<<"Podaj ilosc trojkatow"<<endl;
  129.             cin>>ilosc;
  130.             double x, x2, x3, y, y2, y3;
  131.            
  132.  
  133.             x=0;
  134.             y=0;
  135.             x2=0;
  136.             y2=0.3;
  137.             x3=0.2;
  138.             y3=0;
  139.             //cin>>x>>y;
  140.             //cin>>x2>>y2;
  141.             //cin>>x3>>y3;
  142.  
  143.             glColor3f(0.1,0.1,0.1);
  144.             glBegin(GL_TRIANGLE_FAN);
  145.                 glVertex2d(x, y);
  146.                 glVertex2d(x2, y2);
  147.                 glVertex2d(x3, y3);
  148.             glEnd();
  149.  
  150.             for(int i=0; i<ilosc-1; i++)
  151.             {
  152.             glColor3f(0.1+delta*i,0.1+delta*(i/2),0.3);
  153.             glBegin(GL_TRIANGLE_FAN);
  154.                 glVertex2d(x, y);
  155.                 glVertex2d(x3, y3);
  156.                 glVertex2d(x3-delta, y3-delta);
  157.             glEnd();
  158.             x3-=delta;
  159.             y3-=delta;
  160.             }
  161.             break;
  162.         }
  163.     case 5://punkty o różnej szerokości
  164.     {
  165.         double x,y;
  166.         //cin>>x>>y;
  167.         x=0;
  168.         y=0;
  169.         cout<<"Podaj wielkosc punktu"<<endl;
  170.         float rozmiar;
  171.         cin>>rozmiar;
  172.         glPointSize(rozmiar);
  173.         glBegin(GL_POINTS);
  174.         glVertex2d(x,y);
  175.         glEnd();
  176.     }
  177.     break;
  178.  
  179.     case 6://linie o róznej grubości i wzorze
  180.         {
  181.  
  182.             double grubosc;
  183.             cout<<"Podaj grubosc linii"<<endl;
  184.             cin>>grubosc;
  185.             glLineWidth(grubosc);
  186.             double x1, x2, y1, y2;
  187.             x1=-0.3;
  188.             y1=-0.3;
  189.             x2=0.3;
  190.             y2=0.3;
  191.             //cin>>x1>>y1;
  192.             //cin>>x2>>y2;
  193.  
  194.             glBegin(GL_LINES);
  195.                 glVertex2d(x1, y1);
  196.                 glVertex2d(x2, y2);
  197.             glEnd();
  198.  
  199.             glFlush();
  200.             glEnable(GL_LINE_STIPPLE);
  201.             double wzor, factor;
  202.             cout<<"Podaj kod wzoru"<<endl;
  203.             cin>>wzor;
  204.             cout<<"Podaj factor"<<endl;
  205.             cin>>factor;
  206.  
  207.             //glColor3f(0.7,0.2,0.1);
  208.             //glLineStipple(1, 0x00FF);
  209.             glColor3f(0.3, 0.2, 0.8);
  210.             glLineStipple(factor, wzor);
  211.             glBegin(GL_LINES);
  212.                 glVertex2d(x1, y1);
  213.                 glVertex2d(x2, y2);
  214.             glEnd();
  215.             glFlush();
  216.  
  217.  
  218.  
  219.         }
  220.         break;
  221.     case 7:
  222.         {
  223.             glColor3f(0,0,0);
  224.             double delta = 0.01;
  225.             double r; //promien
  226.             r=0.5;
  227.             double n;
  228.             cout<<"Podaj ilosc trojkatow"<<endl;
  229.             cin>>n;
  230.             double angle;
  231.             double PI = 22/7;
  232.             double a,b;
  233.             a=0;
  234.             b=0;
  235.             //cin>>a>>b;
  236.            
  237.             double pom_x, pom_y;
  238.             pom_x=0;
  239.             pom_y=0;
  240.    
  241.             double x, y; //wsp
  242.     glBegin(GL_TRIANGLE_FAN);
  243.         for(double i=0; i<=n; i++)
  244.         {
  245.             glColor3d(0+(i*delta),0+(i*delta/2),0+(i*delta/3));
  246.             glVertex2d(a,b);
  247.             glVertex2d(pom_x, pom_y);
  248.             angle = 2*i*PI/n;
  249.             x=r*cos(angle)*1.4;
  250.             pom_x=x;
  251.             y=r*sin(angle)*1.4;
  252.             pom_y=y;
  253.  
  254.             glVertex2f(x, y);
  255.         }
  256.     glEnd();
  257.         }
  258.         break;
  259.     }
  260.  
  261.     glFlush();
  262. }
  263. void Initialize() {
  264.     glClearColor(0.3, 0.1, 0.1, 0.1);
  265.     glMatrixMode(GL_PROJECTION);
  266.     glLoadIdentity();
  267. }
  268.  
  269. int main(int argc, char** argv) {
  270.     glutInit(&argc, argv);
  271.     glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
  272.     glutInitWindowSize(500, 500);
  273.     glutInitWindowPosition(200, 200);
  274.     glutCreateWindow("środowisko");
  275.     Initialize();
  276.     glutDisplayFunc(Draw);
  277.     glutMainLoop();
  278.     return 0;
  279. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement