Advertisement
Garey

Graphics.h Functions Ready

Apr 10th, 2019
577
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.79 KB | None | 0 0
  1.  
  2. const int MAX = 5;
  3. const double PI = 3.14;
  4.  
  5. void GetCords(float mat1[][MAX], float mat2[][MAX], int n) {
  6.     int i, j;
  7.  
  8.     for (i = 0; i < n; i++) {
  9.  
  10.         printf("\n Enter Coordinate no %d:- \n", i + 1);
  11.  
  12.         for (j = 0; j < 2; j++) {
  13.             scanf("%f", &mat1[j][i]);
  14.         }
  15.     }
  16.  
  17.     for (i = 0; i < n; i++) {
  18.         mat2[0][i] = mat1[0][i];
  19.         mat1[0][i] = 320 + mat1[0][i];
  20.         mat2[1][i] = mat1[1][i];
  21.         mat1[1][i] = 240 - mat1[1][i];
  22.     }
  23.  
  24.     setcolor(GREEN);
  25.     line(0, 240, 640, 240);
  26.  
  27.     outtextxy(630, 245, "x");
  28.  
  29.     line(320, 0, 320, 480);
  30.  
  31.     outtextxy(310, 0, "y");
  32.     outtextxy(280, 245, "(0,0)");
  33.  
  34.     setcolor(YELLOW);
  35.     moveto(mat1[0][0], mat1[1][0]);
  36.  
  37.     for (i = 0; i < n; i++) {
  38.  
  39.         lineto(mat1[0][i], mat1[1][i]);
  40.         moveto(mat1[0][i], mat1[1][i]);
  41.     }
  42.     lineto(mat1[0][0], mat1[1][0]);
  43.  
  44. }
  45.  
  46. void Scale(float mat2[][MAX], int n) {
  47.     int sx, sy, i, j, k;
  48.     float tmat[MAX][MAX], tot[MAX][MAX];
  49.  
  50.     printf("\n Enter the Scale value of x: ");
  51.     scanf("%d", &sx);
  52.     printf("\n Enter the Scale value of y: ");
  53.     scanf("%d", &sy);
  54.  
  55.     tmat[0][0] = sx;
  56.     tmat[0][1] = 0;
  57.     tmat[1][0] = 0;
  58.     tmat[1][1] = sy;
  59.  
  60.     for (i = 0; i < 2; i++) {
  61.         for (j = 0; j < n; j++) {
  62.  
  63.             tot[i][j] = 0;
  64.  
  65.             for (k = 0; k < 2; k++) {
  66.                 tot[i][j] = tot[i][j] + (tmat[i][k] * mat2[k][j]);
  67.             }
  68.         }
  69.     }
  70.  
  71.     for (i = 0; i < n; i++) {
  72.         tot[0][i] = 320 + tot[0][i];
  73.         tot[1][i] = 240 - tot[1][i];
  74.     }
  75.  
  76.     setcolor(LIGHTRED);
  77.     moveto(tot[0][0], tot[1][0]);
  78.  
  79.     for (i = 0; i < n; i++) {
  80.  
  81.         lineto(tot[0][i], tot[1][i]);
  82.         moveto(tot[0][i], tot[1][i]);
  83.     }
  84.     lineto(tot[0][0], tot[1][0]);
  85. }
  86.  
  87. void Rotate(float mat2[][MAX], int n) {
  88.     int ang, i, j, k;
  89.     float tmat[MAX][MAX], tot[MAX][MAX];
  90.     float rad;
  91.  
  92.     printf("\n Enter the Angle (in Degrees):- \n");
  93.     scanf("%d", &ang);
  94.  
  95.     rad = (ang * PI) / 180;
  96.  
  97.     tmat[0][0] = cos(rad);
  98.     tmat[0][1] = -sin(rad);
  99.     tmat[1][0] = sin(rad);
  100.     tmat[1][1] = cos(rad);
  101.  
  102.     for (i = 0; i < 2; i++) {
  103.         for (j = 0; j < n; j++) {
  104.  
  105.             tot[i][j] = 0;
  106.  
  107.             for (k = 0; k < 2; k++) {
  108.                 tot[i][j] = tot[i][j] + (tmat[i][k] * mat2[k][j]);
  109.             }
  110.         }
  111.     }
  112.  
  113.     for (i = 0; i < n; i++) {
  114.         tot[0][i] = 320 + tot[0][i];
  115.         tot[1][i] = 240 - tot[1][i];
  116.     }
  117.  
  118.     setcolor(LIGHTRED);
  119.     moveto(tot[0][0], tot[1][0]);
  120.  
  121.     for (i = 0; i < n; i++) {
  122.  
  123.         lineto(tot[0][i], tot[1][i]);
  124.         moveto(tot[0][i], tot[1][i]);
  125.     }
  126.  
  127.     lineto(tot[0][0], tot[1][0]);
  128. }
  129.  
  130. void pointRotate(float mat2[][MAX], int n) {
  131.     int ang, i, j, k;
  132.     float tmat[MAX][MAX], tot[MAX][MAX];
  133.     float rad;
  134.     int px, py;
  135.  
  136.     // Get a Point.
  137.     px = mat2[0][0];
  138.     py = mat2[1][0];
  139.  
  140.     printf("\n Enter the Angle (in Degrees):- \n");
  141.     scanf("%d", &ang);
  142.  
  143.     // Inv Translation to Origin.
  144.     for (i = 0; i < n; i++) {
  145.         mat2[0][i] -= px;
  146.         mat2[1][i] -= py;
  147.     }
  148.  
  149.     // Rotation.
  150.     rad = (ang * PI) / 180;
  151.  
  152.     tmat[0][0] = cos(rad);
  153.     tmat[0][1] = -sin(rad);
  154.     tmat[1][0] = sin(rad);
  155.     tmat[1][1] = cos(rad);
  156.  
  157.     for (i = 0; i < 2; i++) {
  158.         for (j = 0; j < n; j++) {
  159.  
  160.             tot[i][j] = 0;
  161.  
  162.             for (k = 0; k < 2; k++) {
  163.                 tot[i][j] = tot[i][j] + (tmat[i][k] * mat2[k][j]);
  164.             }
  165.         }
  166.     }
  167.  
  168.     // Translate from the Origin.
  169.     for (i = 0; i < n; i++) {
  170.         tot[0][i] += px;
  171.         tot[1][i] += py;
  172.     }
  173.  
  174.     for (i = 0; i < n; i++) {
  175.         tot[0][i] = 320 + tot[0][i];
  176.         tot[1][i] = 240 - tot[1][i];
  177.     }
  178.  
  179.     setcolor(LIGHTRED);
  180.     moveto(tot[0][0], tot[1][0]);
  181.  
  182.     for (i = 0; i < n; i++) {
  183.         lineto(tot[0][i], tot[1][i]);
  184.         moveto(tot[0][i], tot[1][i]);
  185.     }
  186.  
  187.     lineto(tot[0][0], tot[1][0]);
  188. }
  189.  
  190. void Translate(int mat[][MAX], int n) {
  191.     int dx, dy, i;
  192.     printf("\n Enter Cordinates (dx, dy):- \n");
  193.     scanf("%d %d", &dx, &dy);
  194.     for (i = 0; i < n; i++) {
  195.         mat[0][i] += dx;
  196.         mat[1][i] -= dy;
  197.     }
  198.  
  199.     setcolor(LIGHTRED);
  200.     moveto(mat[0][0], mat[1][0]);
  201.     for (i = 0; i < n; i++) {
  202.         lineto(mat[0][i], mat[1][i]);
  203.         moveto(mat[0][i], mat[1][i]);
  204.     }
  205.     lineto(mat[0][0], mat[1][0]);
  206.  
  207. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement