Advertisement
backstreetimrul

Graphics Final Project

Jul 31st, 2019
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.85 KB | None | 0 0
  1. #include<windows.h>
  2. #include<GL/glut.h>
  3. #include<math.h>
  4. #include<bits/stdc++.h>
  5. using namespace std;
  6. int counter=0;
  7. //Dynamic obj
  8. float xa=0.05,ya=0.05,  xb=0.05,yb=-0.05,   xc=-0.05,yc=-0.05,  xd=-0.05,yd=0.05;
  9. float xr=0,yr=0;
  10.  
  11. //1st Static obj
  12. float x11=0.3,y11=0.0,      x22=0.5,y22=0.0,      x33=0.5,y33=0.2,      x44=0.3,y44=0.2;
  13. float xMax=0.5,yMax=0.2,    xMin=0.3,yMin=0.0;
  14.  
  15. //2nd Static obj
  16. float x111=0.8,y111=0.0,      x222=0.9,y222=0.0,      x333=0.9,y333=0.1,      x444=0.8,y444=0.1;
  17. float xMax2=0.9,yMax2=0.1,    xMin2=0.8,yMin2=0.0;
  18.  
  19. //3rd Static obj
  20. float x1111=-0.5,y1111=0.2,      x2222=-0.4,y2222=0.2,      x3333=-0.4,y3333=0.3,      x4444=-0.5,y4444=0.3;
  21. float xMax3=-0.4,yMax3=0.3,    xMin3=-0.5,yMin3=0.2;
  22.  
  23. //4th obj
  24. float X1=0.0, Y1=0.5;
  25. float r=0.1;
  26.  
  27. //5th obj
  28. float X2=0.0, Y2=-0.5;
  29. float rr=0.15;
  30.  
  31. void createObj(float x1, float y1, float x2, float y2, float x3, float y3, float x4, float y4, float r, float g, float b)
  32. {
  33.     glClear(GL_COLOR_BUFFER_BIT);
  34.     glColor3f(r,g,b);
  35.     glBegin(GL_QUADS);
  36.     glVertex2f(x1,y1);
  37.     glVertex2f(x2,y2);
  38.     glVertex2f(x3,y3);
  39.     glVertex2f(x4,y4);
  40.     //glEnd();
  41. }
  42. void createObjCir(float X, float Y, float rad, float r, float g, float b)
  43. {
  44.     glColor3f(r,g,b);
  45.     glBegin(GL_POLYGON);
  46.     float x,y;
  47.     for(float i=0;i<=360;i+=0.001)
  48.     {
  49.         //r=0.1;
  50.         x=rad*cos(i)+X;
  51.         y=rad*sin(i)+Y;
  52.         glVertex2f(x,y);
  53.     }
  54.     glEnd();
  55.     glFlush();
  56. }
  57.  
  58. void display(void)
  59. {
  60.     //Static objects
  61.     createObj(x11,y11,x22,y22,x33,y33,x44,y44,1.0,0.0,0.0);
  62.     createObj(x1111,y1111,x2222,y2222,x3333,y3333,x4444,y4444,1.0,1.0,0.0);
  63.     createObj(x111,y111,x222,y222,x333,y333,x444,y444,0.0,1.0,1.0);
  64.     glEnd();
  65.  
  66.     //glColor3f(0.0,0.0,1.0);
  67.     createObjCir(X1,Y1,r,0.0,1.0,1.0);
  68.     createObjCir(X2,Y2,rr,1.0,0.0,1.0);
  69.  
  70.     //Obj Dynamically change position
  71.     glColor3f(0.0,0.0,1.0);
  72.     glBegin(GL_QUADS);
  73.     glVertex2f(xa+xr,ya+yr);
  74.     glVertex2f(xb+xr,yb+yr);
  75.     glVertex2f(xc+xr,yc+yr);
  76.     glVertex2f(xd+xr,yd+yr);
  77.  
  78.     glEnd();
  79.     glutSwapBuffers();//as it is not static.
  80. }
  81. void isInsideCir(void)
  82. {
  83.     //for first Circle
  84.     float dis1,dis2,dis3,dis4,dis5,dis6,dis7,dis8;
  85.     dis1=sqrt((((xa+xr)-X1)*((xa+xr)-X1)) + (((ya+yr)-Y1)*((ya+yr)-Y1)));
  86.     dis2=sqrt((((xb+xr)-X1)*((xb+xr)-X1)) + (((yb+yr)-Y1)*((yb+yr)-Y1)));
  87.     dis3=sqrt((((xc+xr)-X1)*((xc+xr)-X1)) + (((yc+yr)-Y1)*((yc+yr)-Y1)));
  88.     dis4=sqrt((((xd+xr)-X1)*((xd+xr)-X1)) + (((yd+yr)-Y1)*((yd+yr)-Y1)));
  89.  
  90.     float avg1,avg11,   avg2,avg22,     avg3,avg33,    avg4,avg44;
  91.     avg1=(((xd+xr)+(xa+xr))/2);
  92.     avg11=ya+yr;
  93.  
  94.     avg2=xa+xr;
  95.     avg22=(((ya+yr)+(yb+yr))/2); //prb
  96.  
  97.     avg3=(((xb+xr)+(xc+xr))/2);
  98.     avg33=ya+yr;
  99.  
  100.     avg4=xa+xr;
  101.     avg44=(((yd+yr)+(yc+yr))/2); //
  102.  
  103.  
  104.     dis5=sqrt(((avg1-X1)*(avg1-X1)) + ((avg11-Y1)*(avg11-Y1)));
  105.     dis6=sqrt(((avg2-X1)*(avg2-X1)) + ((avg22-Y1)*(avg22-Y1)));
  106.     dis7=sqrt(((avg3-X1)*(avg3-X1)) + ((avg33-Y1)*(avg33-Y1)));
  107.     dis8=sqrt(((avg4-X1)*(avg4-X1)) + ((avg44-Y1)*(avg44-Y1)));
  108.  
  109.     if(dis1<r || dis2<r || dis3<r || dis4<r || dis5<r || dis6<r || dis7<r || dis8<r)
  110.     {
  111.         r=0.0;
  112.     }
  113. }
  114. void isInside(void)
  115. {
  116.     if( (((xa+xr)>=xMin && (xa+xr)<=xMax) && ((ya+yr)>=yMin && (ya+yr)<=yMax))
  117.            || (((xb+xr)>=xMin && (xb+xr)<=xMax) && ((yb+yr)>=yMin && (yb+yr)<=yMax))
  118.            || (((xc+xr)>=xMin && (xc+xr)<=xMax) && ((yc+yr)>=yMin && (yc+yr)<=yMax))
  119.            || (((xd+xr)>=xMin && (xd+xr)<=xMax) && ((yd+yr)>=yMin && (yd+yr)<=yMax))  )
  120.     {
  121.         counter++;
  122.         cout<<"Inside"<<counter<<endl;
  123.         x11=0.0,y11=0.0,        x22=0.0,y22=0.0,      x33=0.0,y33=0.0,      x44=0.0,y44=0.0;
  124.     }
  125.     else if( (((xa+xr)>=xMin2 && (xa+xr)<=xMax2) && ((ya+yr)>=yMin2 && (ya+yr)<=yMax2))
  126.            || (((xb+xr)>=xMin2 && (xb+xr)<=xMax2) && ((yb+yr)>=yMin2 && (yb+yr)<=yMax2))
  127.            || (((xc+xr)>=xMin2 && (xc+xr)<=xMax2) && ((yc+yr)>=yMin2 && (yc+yr)<=yMax2))
  128.            || (((xd+xr)>=xMin2 && (xd+xr)<=xMax2) && ((yd+yr)>=yMin2 && (yd+yr)<=yMax2))  )
  129.     {
  130.         counter++;
  131.         cout<<"Inside"<<counter<<endl;
  132.         x111=0.0,y111=0.0,        x222=0.0,y222=0.0,      x333=0.0,y333=0.0,      x444=0.0,y444=0.0;
  133.     }
  134.     else if( (((xa+xr)>=xMin3 && (xa+xr)<=xMax3) && ((ya+yr)>=yMin3 && (ya+yr)<=yMax3))
  135.            || (((xb+xr)>=xMin3 && (xb+xr)<=xMax3) && ((yb+yr)>=yMin3 && (yb+yr)<=yMax3))
  136.            || (((xc+xr)>=xMin3 && (xc+xr)<=xMax3) && ((yc+yr)>=yMin3 && (yc+yr)<=yMax3))
  137.            || (((xd+xr)>=xMin3 && (xd+xr)<=xMax3) && ((yd+yr)>=yMin3 && (yd+yr)<=yMax3))  )
  138.     {
  139.         counter++;
  140.         cout<<"Inside"<<counter<<endl;
  141.         x1111=0.0,y1111=0.0,        x2222=0.0,y2222=0.0,      x3333=0.0,y3333=0.0,      x4444=0.0,y4444=0.0;
  142.     }
  143.  
  144. }
  145. ///Function to use Move object
  146. void keyboard(unsigned char key,int x,int y)
  147. {
  148.     switch(key)
  149.     {
  150.     case 'w':
  151.         {
  152.         yr=yr+0.01;
  153.         isInside();
  154.         isInsideCir();
  155.         glutPostRedisplay();
  156.         break;
  157.         }
  158.     case 's':
  159.         {
  160.         yr=yr-0.01;
  161.         isInside();
  162.         isInsideCir();
  163.         glutPostRedisplay();
  164.         break;
  165.         }
  166.     case 'a':
  167.         {
  168.         xr=xr-0.01;
  169.         isInside();
  170.         isInsideCir();
  171.         glutPostRedisplay();
  172.         break;
  173.         }
  174.     case 'd':
  175.         {
  176.         xr=xr+0.01;
  177.         isInside();
  178.         isInsideCir();
  179.         glutPostRedisplay();
  180.         break;
  181.         }
  182.     }
  183. }
  184.  
  185. int main(int argc, char **argv)
  186. {
  187.     glutInit(&argc, argv); //glut package initialization
  188.     glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB);
  189.     glutInitWindowSize(600,600);//graphics window er console size
  190.     glutInitWindowPosition(100,100);
  191.     glutCreateWindow("----Final Project----");
  192.     glutDisplayFunc(display);//display fuction calling
  193.     glutKeyboardFunc(keyboard);
  194.     glutMainLoop();
  195.     return 0;
  196. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement