Misipuk

Zh

May 15th, 2018
158
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.00 KB | None | 0 0
  1. #include <windows.h>
  2. #include <GL/glut.h>
  3. #include <math.h>
  4.  
  5. GLint width=800;
  6. GLint height=800;
  7. GLint scale=20;
  8. GLint centox=400;
  9. GLint centroy=400;
  10.  
  11. void display(){
  12.     glClear(GL_COLOR_BUFFER_BIT);
  13.     glLineWidth(1);
  14.     for(int i=0;i<width;i+=scale){
  15.     glColor3ub(192,192,192);
  16.         glBegin(GL_LINES);
  17.         glVertex2f(i,0);
  18.         glVertex2f(i,800);
  19.         glVertex2f(0,i);
  20.         glVertex2f(800,i);
  21.         glEnd();
  22.     }
  23.     glLineWidth(2);
  24.     glBegin(GL_LINES);
  25.         glColor3f(0,0,0);
  26.         glVertex2f(centox,0);
  27.         glVertex2f(centox,800);
  28.         glVertex2f(0,centroy);
  29.         glVertex2f(800,centroy);
  30.     if(centroy<800){
  31.         glVertex2f(centox,800);
  32.         glVertex2f(centox-10,785);
  33.         glVertex2f(centox,800);
  34.         glVertex2f(centox+10,785);
  35.     }
  36.     if(centox<800){
  37.         glVertex2f(785,centroy+10);
  38.         glVertex2f(800,centroy);
  39.         glVertex2f(785,centroy-10);
  40.         glVertex2f(800,centroy);
  41.     }
  42.     glEnd();
  43.  
  44.     for(int i=0;i<width;i+=scale){
  45.         glLineWidth(1);
  46.         glBegin(GL_LINES);
  47.         glColor3f(0.0,0.0,0.0);
  48.         glVertex2f(i,centroy-10);
  49.         glVertex2f(i,centroy+10);
  50.         glVertex2f(centox-10,i);
  51.         glVertex2f(centox+10,i);
  52.         glEnd();
  53.     }
  54.     double x,y;
  55.     glLineWidth(3);
  56.     glBegin(GL_LINE_STRIP);
  57.     glColor3ub(233,100,52);
  58.     for(x=-30;x<2;x+=0.0001){
  59.         y=-log10(x+2);
  60.         glVertex2f(x*scale+centox,y*scale+centroy);
  61.     }
  62.     for(x=2;x<30;x+=0.0001){
  63.         y=-log10(x+2);
  64.         glVertex2f(x*scale+centox,y*scale+centroy);
  65.     }
  66.     glEnd();
  67.     glColor3f(0.0,0.0,0.0);
  68.     glPushMatrix();
  69.     glTranslated(centox+15,790,0);
  70.     glScaled(0.2,0.2,0);
  71.     glutStrokeCharacter(GLUT_STROKE_ROMAN,'y');
  72.     glPopMatrix();
  73.     glPushMatrix();
  74.     glTranslated(780,centroy-35,0);
  75.     glScaled(0.2,0.2,0);
  76.     glutStrokeCharacter(GLUT_STROKE_ROMAN,'x');
  77.     glPopMatrix();
  78.     char k[11]="0123456789";
  79.     int j=0,s=1,s1=1,s2=1;
  80.  
  81.     for(int i=centox-2;i<800;i+=scale){
  82.         glPushMatrix();
  83.         glTranslated(i,centroy-30,0);
  84.         glScaled(0.08,0.1,0);
  85.         if(j<10){
  86.             glutStrokeCharacter(GLUT_STROKE_ROMAN,k[j]);
  87.         }
  88.         else{
  89.             glutStrokeCharacter(GLUT_STROKE_ROMAN,k[j/10]);
  90.             glutStrokeCharacter(GLUT_STROKE_ROMAN,k[j%10]);
  91.         }
  92.         j++;
  93.         glPopMatrix();
  94.     }
  95.     for(int i=centox-scale;i>0;i-=scale){
  96.         glPushMatrix();
  97.         glTranslated(i,centroy-30,0);
  98.         glScaled(0.08,0.1,0);
  99.         glutStrokeCharacter(GLUT_STROKE_ROMAN,'-');
  100.         if(s1<10){
  101.             glutStrokeCharacter(GLUT_STROKE_ROMAN,k[s1]);
  102.         }
  103.         else{
  104.             glutStrokeCharacter(GLUT_STROKE_ROMAN,k[s1/10]);
  105.             glutStrokeCharacter(GLUT_STROKE_ROMAN,k[s1%10]);
  106.         }
  107.         s1++;
  108.         glPopMatrix();
  109.     }
  110.     for(int i=centroy+scale-5;i<800;i+=scale){
  111.         glPushMatrix();
  112.         glTranslated(centox+10,i,0);
  113.         glScaled(0.08,0.1,0);
  114.         if(s<10){
  115.             glutStrokeCharacter(GLUT_STROKE_ROMAN,k[s]);
  116.         }
  117.         else{
  118.             glutStrokeCharacter(GLUT_STROKE_ROMAN,k[s/10]);
  119.             glutStrokeCharacter(GLUT_STROKE_ROMAN,k[s%10]);
  120.         }
  121.         s++;
  122.         glPopMatrix();
  123.     }
  124.     for(int i=centroy-scale-5;i>0;i-=scale){
  125.         glPushMatrix();
  126.         glTranslated(centox+10,i,0);
  127.         glScaled(0.08,0.1,0);
  128.         glutStrokeCharacter(GLUT_STROKE_ROMAN,'-');
  129.         if(s2<10){
  130.             glutStrokeCharacter(GLUT_STROKE_ROMAN,k[s2]);
  131.         }
  132.         else{
  133.             glutStrokeCharacter(GLUT_STROKE_ROMAN,k[s2/10]);
  134.             glutStrokeCharacter(GLUT_STROKE_ROMAN,k[s2%10]);
  135.         }
  136.         s2++;
  137.         glPopMatrix();}
  138.         glPushMatrix();
  139.         glColor3ub(0.0,0.0,0.0);
  140.         glTranslated(20,750,0);
  141.         glScaled(0.2,0.2,0);
  142.         char f[20]="-lg(x+2)";
  143.         for(int i=0;i<13;i++){
  144.             glutStrokeCharacter(GLUT_STROKE_ROMAN,f[i]);
  145.         }
  146.         glPopMatrix();
  147.         glFlush();
  148.     glutSwapBuffers();
  149. }
  150. void Keyboard(unsigned char key, int x, int y){
  151.         if(key=='+'){
  152.             scale=scale*2;
  153.         }
  154.         if(key=='-'){
  155.             if (scale>20){
  156.                 scale=scale/2;
  157.             }
  158.         }
  159.         if(key=='a'){
  160.             centox+=scale;
  161.         }
  162.         if(key=='d'){
  163.             centox-=scale;
  164.         }
  165.         if(key=='w'){
  166.             centroy-=scale;
  167.         }
  168.         if(key=='s'){
  169.             centroy+=scale;
  170.         }
  171.         if(key=='r'){
  172.             centox=400;
  173.             centroy=400;
  174.         }
  175.         glutPostRedisplay();
  176. }
  177.  
  178.  
  179. int main(int argc,char **argv){
  180.     glutInit(&argc,argv);
  181.     glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGBA);
  182.     glutInitWindowSize(800,800);
  183.     glutCreateWindow("Tretyakov");
  184.     glClearColor(1,1,1,0);
  185.     glMatrixMode(GL_PROJECTION);
  186.     gluOrtho2D(0.0,800.0,0.0,800.0);
  187.     glutDisplayFunc(display);
  188.     glutKeyboardFunc(Keyboard);
  189.     glutMainLoop();
  190.     return 0;
  191. }
Advertisement
Add Comment
Please, Sign In to add comment