8. 2D Scaling Program Using C Programming

#include<stdio.h>
#include<conio.h>
#include<graphics.h>
#include<process.h>
#include<math.h>

int x1, y1, x2, y2, x3, y3, mx, my;

void draw();
void scale();

void main() {
   int gd = DETECT, gm;

   initgraph(&gd, &gm, " ");
   printf("Enter the 1st point for the triangle:");
   scanf("%d%d", &x1, &y1);
   printf("Enter the 2nd point for the triangle:");
   scanf("%d%d", &x2, &y2);

   printf("Enter the 3rd point for the triangle:");
   scanf("%d%d", &x3, &y3);

   draw();

   scale();
}

void draw() {
   line(x1, y1, x2, y2);
   line(x2, y2, x3, y3);
   line(x3, y3, x1, y1);
}

void scale() {
   int x, y, a1, a2, a3, b1, b2, b3;
   int mx, my;

   printf("Enter the scalling coordinates");
   scanf("%d%d", &x, &y);

   mx = (x1 + x2 + x3) / 3;
   my = (y1 + y2 + y3) / 3;

   cleardevice();

   a1 = mx + (x1 - mx) * x;
   b1 = my + (y1 - my) * y;
   a2 = mx + (x2 - mx) * x;

   b2 = my + (y2 - my) * y;
   a3 = mx + (x3 - mx) * x;
   b3 = my + (y3 - my) * y;

   line(a1, b1, a2, b2);
   line(a2, b2, a3, b3);
   line(a3, b3, a1, b1);

   draw();
   getch();
}