Advertisement
NAbdulla

Graphics Template

Oct 22nd, 2019
475
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.81 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. #include <graphics.h>
  3.  
  4. using namespace std;
  5.  
  6. #define what_is(x) cerr << fixed << setprecision(2) << boolalpha << #x << " = " << x << endl
  7.  
  8. const double PI = acos(-1.0);
  9.  
  10. int xmid, ymid;//middle of the graph window
  11. class Point{
  12.     int x, y;
  13. public:
  14.     Point(int _x, int _y){
  15.         x = _x;
  16.         y = _y;
  17.         y *= -1;/*reflect about x axis*/
  18.         x += xmid;
  19.         y += ymid;
  20.     }
  21.     void setx(int _x){
  22.         x = _x;
  23.         x += xmid;
  24.     }
  25.     void sety(int _y){
  26.         y = _y;
  27.         y *= -1;/*reflect about x axis*/
  28.         y += ymid;
  29.     }
  30.     int getx(){return x;}
  31.     int gety(){return y;}
  32.     string to_string(){
  33.         char str[100];
  34.         sprintf(str, "x: %.2lf y: %.2lf", 1.0*x-xmid, 1.0*y-ymid);
  35.         return str;
  36.     }
  37. };
  38.  
  39. void drawAxes(Point origin){
  40.     int col = getcolor();
  41.     setcolor(LIGHTCYAN);
  42.     line(origin.getx()-origin.getx(), origin.gety(), origin.getx()+origin.getx(), origin.gety());//X axis
  43.     line(origin.getx(), origin.gety()-origin.gety(), origin.getx(), origin.gety()+origin.gety());//Y axis
  44.  
  45.     outtextxy(origin.getx()+1, origin.gety()+1, "O");
  46.     outtextxy(origin.getx() + origin.getx() - textwidth("X")-1, origin.gety()+1, "X");
  47.     outtextxy(origin.getx() - origin.getx(), origin.gety()+1, "X'");
  48.     outtextxy(origin.getx()+1, origin.gety() - origin.gety(), "Y");
  49.     outtextxy(origin.getx()+1, origin.gety() + origin.gety()-textheight("Y'"), "Y'");
  50.     setcolor(col);//set previous color
  51. }
  52.  
  53. void drawGridLines(Point origin, int intv){
  54.     int col = getcolor();
  55.     setcolor(DARKGRAY);
  56.     int stx = origin.getx();
  57.     while(stx-intv > 0)
  58.         stx -= intv;
  59.     int sty = origin.gety();
  60.     while(sty-intv > 0)
  61.         sty -= intv;
  62.     for(int i = stx; i < getmaxx(); i+=intv)
  63.         if(i != origin.getx())
  64.             line(i, 0, i, getmaxy());
  65.     for(int i = sty; i < getmaxy(); i+=intv)
  66.         if(i != origin.gety())
  67.             line(0, i, getmaxx(), i);
  68.  
  69.     char msg[100];
  70.     sprintf(msg, "Side of Square = %d pixel", intv);
  71.     outtext(msg);
  72.     setcolor(col);
  73. }
  74.  
  75. void checkError(){
  76.     int ecode = graphresult();
  77.     if(ecode != grOk) {
  78.         printf("Graphics error: %s\n", grapherrormsg(ecode));
  79.         printf("Press any key to exit...");
  80.         getch();
  81.         exit(1);
  82.     }
  83. }
  84.  
  85. int main()
  86. {
  87.     int gdriver = DETECT;
  88.     int gmode;
  89.     initgraph(&gdriver, &gmode, NULL);
  90.     xmid = getmaxx()/2;
  91.     ymid = getmaxy()/2;
  92.     checkError();
  93.     Point origin(0,0);
  94.     drawAxes(origin);
  95.     drawGridLines(origin, 20);/* to show graph grid(if needed)*/
  96.  
  97.     /*do code*/
  98.    
  99.     //draw line
  100.     Point start(5, 5);
  101.     Point endd(50, 70);
  102.     line(start.getx(), start.gety(), endd.getx(), endd.gety());
  103.     /*end code*/
  104.  
  105.     getch();
  106.     closegraph();
  107.     return 0;
  108. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement