Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <windows.h>
- #include <GL/glut.h>
- #include <math.h>
- GLint width=800;
- GLint height=800;
- GLint scale=20;
- GLint centox=400;
- GLint centroy=400;
- void display(){
- glClear(GL_COLOR_BUFFER_BIT);
- glLineWidth(1);
- for(int i=0;i<width;i+=scale){
- glColor3ub(192,192,192);
- glBegin(GL_LINES);
- glVertex2f(i,0);
- glVertex2f(i,800);
- glVertex2f(0,i);
- glVertex2f(800,i);
- glEnd();
- }
- glLineWidth(2);
- glBegin(GL_LINES);
- glColor3f(0,0,0);
- glVertex2f(centox,0);
- glVertex2f(centox,800);
- glVertex2f(0,centroy);
- glVertex2f(800,centroy);
- if(centroy<800){
- glVertex2f(centox,800);
- glVertex2f(centox-10,785);
- glVertex2f(centox,800);
- glVertex2f(centox+10,785);
- }
- if(centox<800){
- glVertex2f(785,centroy+10);
- glVertex2f(800,centroy);
- glVertex2f(785,centroy-10);
- glVertex2f(800,centroy);
- }
- glEnd();
- for(int i=0;i<width;i+=scale){
- glLineWidth(1);
- glBegin(GL_LINES);
- glColor3f(0.0,0.0,0.0);
- glVertex2f(i,centroy-10);
- glVertex2f(i,centroy+10);
- glVertex2f(centox-10,i);
- glVertex2f(centox+10,i);
- glEnd();
- }
- double x,y;
- glLineWidth(3);
- glBegin(GL_LINE_STRIP);
- glColor3ub(233,100,52);
- for(x=-30;x<2;x+=0.0001){
- y=-log10(x+2);
- glVertex2f(x*scale+centox,y*scale+centroy);
- }
- for(x=2;x<30;x+=0.0001){
- y=-log10(x+2);
- glVertex2f(x*scale+centox,y*scale+centroy);
- }
- glEnd();
- glColor3f(0.0,0.0,0.0);
- glPushMatrix();
- glTranslated(centox+15,790,0);
- glScaled(0.2,0.2,0);
- glutStrokeCharacter(GLUT_STROKE_ROMAN,'y');
- glPopMatrix();
- glPushMatrix();
- glTranslated(780,centroy-35,0);
- glScaled(0.2,0.2,0);
- glutStrokeCharacter(GLUT_STROKE_ROMAN,'x');
- glPopMatrix();
- char k[11]="0123456789";
- int j=0,s=1,s1=1,s2=1;
- for(int i=centox-2;i<800;i+=scale){
- glPushMatrix();
- glTranslated(i,centroy-30,0);
- glScaled(0.08,0.1,0);
- if(j<10){
- glutStrokeCharacter(GLUT_STROKE_ROMAN,k[j]);
- }
- else{
- glutStrokeCharacter(GLUT_STROKE_ROMAN,k[j/10]);
- glutStrokeCharacter(GLUT_STROKE_ROMAN,k[j%10]);
- }
- j++;
- glPopMatrix();
- }
- for(int i=centox-scale;i>0;i-=scale){
- glPushMatrix();
- glTranslated(i,centroy-30,0);
- glScaled(0.08,0.1,0);
- glutStrokeCharacter(GLUT_STROKE_ROMAN,'-');
- if(s1<10){
- glutStrokeCharacter(GLUT_STROKE_ROMAN,k[s1]);
- }
- else{
- glutStrokeCharacter(GLUT_STROKE_ROMAN,k[s1/10]);
- glutStrokeCharacter(GLUT_STROKE_ROMAN,k[s1%10]);
- }
- s1++;
- glPopMatrix();
- }
- for(int i=centroy+scale-5;i<800;i+=scale){
- glPushMatrix();
- glTranslated(centox+10,i,0);
- glScaled(0.08,0.1,0);
- if(s<10){
- glutStrokeCharacter(GLUT_STROKE_ROMAN,k[s]);
- }
- else{
- glutStrokeCharacter(GLUT_STROKE_ROMAN,k[s/10]);
- glutStrokeCharacter(GLUT_STROKE_ROMAN,k[s%10]);
- }
- s++;
- glPopMatrix();
- }
- for(int i=centroy-scale-5;i>0;i-=scale){
- glPushMatrix();
- glTranslated(centox+10,i,0);
- glScaled(0.08,0.1,0);
- glutStrokeCharacter(GLUT_STROKE_ROMAN,'-');
- if(s2<10){
- glutStrokeCharacter(GLUT_STROKE_ROMAN,k[s2]);
- }
- else{
- glutStrokeCharacter(GLUT_STROKE_ROMAN,k[s2/10]);
- glutStrokeCharacter(GLUT_STROKE_ROMAN,k[s2%10]);
- }
- s2++;
- glPopMatrix();}
- glPushMatrix();
- glColor3ub(0.0,0.0,0.0);
- glTranslated(20,750,0);
- glScaled(0.2,0.2,0);
- char f[20]="-lg(x+2)";
- for(int i=0;i<13;i++){
- glutStrokeCharacter(GLUT_STROKE_ROMAN,f[i]);
- }
- glPopMatrix();
- glFlush();
- glutSwapBuffers();
- }
- void Keyboard(unsigned char key, int x, int y){
- if(key=='+'){
- scale=scale*2;
- }
- if(key=='-'){
- if (scale>20){
- scale=scale/2;
- }
- }
- if(key=='a'){
- centox+=scale;
- }
- if(key=='d'){
- centox-=scale;
- }
- if(key=='w'){
- centroy-=scale;
- }
- if(key=='s'){
- centroy+=scale;
- }
- if(key=='r'){
- centox=400;
- centroy=400;
- }
- glutPostRedisplay();
- }
- int main(int argc,char **argv){
- glutInit(&argc,argv);
- glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGBA);
- glutInitWindowSize(800,800);
- glutCreateWindow("Tretyakov");
- glClearColor(1,1,1,0);
- glMatrixMode(GL_PROJECTION);
- gluOrtho2D(0.0,800.0,0.0,800.0);
- glutDisplayFunc(display);
- glutKeyboardFunc(Keyboard);
- glutMainLoop();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment