Alweys

skaliranje

Jun 19th, 2021 (edited)
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.65 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. #include <graphics.h>
  3. #define N 10
  4.  
  5. using namespace std;
  6.  
  7. struct tocka
  8. {
  9.     int x;
  10.     int y;
  11. };
  12.  
  13. struct lik
  14. {
  15.     tocka tocke[N];
  16.     int brTocaka = 0;
  17. };
  18.  
  19. void unosTocaka(lik *p)
  20. {
  21.     for(int i=0;i<N;i++)
  22.     {
  23.         cin>>(*(p)).tocke[i].x;
  24.         if((*(p)).tocke[i].x < 0)
  25.         {
  26.             printf("Prekid unosa\n");
  27.             break;
  28.         }
  29.  
  30.         cin>>(*(p)).tocke[i].y;
  31.         if((*(p)).tocke[i].y < 0)
  32.         {
  33.             printf("Prekid unosa\n");
  34.             break;
  35.         }
  36.         (*(p)).brTocaka++;
  37.         printf("[%d] Unesena tocka: [%d, %d]\n",(*(p)).brTocaka, (*(p)).tocke[i].x,(*(p)).tocke[i].y);
  38.     }
  39. }
  40.  
  41. void crtanje(lik *p)
  42. {
  43.     int x = (*(p)).tocke[0].x;
  44.     int y = (*(p)).tocke[0].y;
  45.     moveto(x,y);
  46.     setfillstyle(SOLID_FILL,RED);
  47.     circle(x,y,5);
  48.     floodfill(x,y,15);
  49.     for(int i = 1; i<(*(p)).brTocaka;i++)
  50.     {
  51.         int x2 = (*(p)).tocke[i].x;
  52.         int y2 = (*(p)).tocke[i].y;
  53.         setfillstyle(SOLID_FILL,RED);
  54.         circle(x2,y2,5);
  55.         floodfill(x2,y2,15);
  56.         lineto(x2,y2);
  57.         moveto(x2,y2);
  58.     }
  59. }
  60.  
  61. void crtanjeSvih(lik *p)
  62. {
  63.     for(int i=0;i<N;i++)
  64.     {
  65.         crtanje(p);
  66.     }
  67. }
  68.  
  69. void skaliraj(lik *p, int postotak)
  70. {
  71.     float scalar;
  72.  
  73.     scalar = (postotak / 100.0f);
  74.  
  75.     int pocX = (*(p)).tocke[0].x;
  76.     int pocY = (*(p)).tocke[0].y;
  77.  
  78.     int x = (*(p)).tocke[0].x * scalar;
  79.     int y = (*(p)).tocke[0].y * scalar;
  80.  
  81.     float distX = pocX-x;
  82.     float distY = pocY-y;
  83.     x += distX;
  84.     y += distY;
  85.     moveto(x,y);
  86.     setfillstyle(SOLID_FILL,GREEN);
  87.     circle(x,y,6);
  88.     floodfill(x,y,15);
  89.     for(int i = 1; i<(*(p)).brTocaka;i++)
  90.     {
  91.         int x2 = (*(p)).tocke[i].x * scalar;
  92.         int y2 = (*(p)).tocke[i].y * scalar;
  93.         x2 += distX;
  94.         y2 += distY;
  95.         setfillstyle(SOLID_FILL,GREEN);
  96.         circle(x2,y2,6);
  97.         floodfill(x2,y2,15);
  98.         lineto(x2,y2);
  99.         moveto(x2,y2);
  100.     }
  101. }
  102.  
  103. int main()
  104. {
  105.     lik likovi[10];
  106.     initwindow(1000,1000);
  107.     /*
  108.     for(int i=0;i<1;i++)
  109.     {
  110.         unosTocaka(&likovi[i]);
  111.     }*/
  112.     //unosTocaka(&likovi[0]);
  113.  
  114.     likovi[0].tocke[0].x = 100;
  115.     likovi[0].tocke[0].y = 100;
  116.     likovi[0].tocke[1].x = 200;
  117.     likovi[0].tocke[1].y = 100;
  118.     likovi[0].tocke[2].x = 200;
  119.     likovi[0].tocke[2].y = 200;
  120.     likovi[0].tocke[3].x = 100;
  121.     likovi[0].tocke[3].y = 200;
  122.     likovi[0].tocke[4].x = 100;
  123.     likovi[0].tocke[4].y = 100;
  124.     likovi[0].brTocaka = 5;
  125.     crtanje(&likovi[0]);
  126.  
  127.     int a;
  128.     cin>>a;
  129.     skaliraj(&likovi[0], a);
  130.     system("pause");
  131.     return 0;
  132. }
  133.  
Add Comment
Please, Sign In to add comment