Program Name: 2 D Scaling
Program Language:c
Program Requirements:C++ Or C Program Compilers
Program Description:
Scaling is a linear transformation that enlarges or diminishes objects. When we talk about scaling we usually mean some amount of scaling along each dimension. That is, we must specify how much to change the size along each dimension. To know more on what scaling is and its matrix representation see 2D scaling
Source Code:
Program Language:c
Program Requirements:C++ Or C Program Compilers
Program Description:
Scaling is a linear transformation that enlarges or diminishes objects. When we talk about scaling we usually mean some amount of scaling along each dimension. That is, we must specify how much to change the size along each dimension. To know more on what scaling is and its matrix representation see 2D scaling
Source Code:
Code:
#include<graphics.h>
#include<stdio.h>
#include<conio.h>
void scale( int figure[], int edges, int dx, int dy, int cx, int cy )
{
for(int i=0; i < edges; i++)
{
figure[2*i] = (figure[2*i] - cx) * dx + cx;
figure[2*i+1] = (figure[2*i+1] - cy) * dy + cy;
}
}
void main()
{
int figure[20], edges; // A Figure with Max 10 edges.
int dx, dy, cx=0, cy=0;
int gd = DETECT, gm;
clrscr();
printf( "Number of edges: " );
scanf( "%d", &edges );
for(int i=0; i < edges; i++)
{
printf( "Enter edge (x%d,y%d) : ", i , i );
scanf( "%d %d", &figure[2*i], &figure[2*i+1] );
}
figure[2*i] = figure[0];
figure[2*i+1] = figure[1];
edges += 1;
printf( "Enter dx: ");
scanf( "%d", &dx);
printf( "Enter dy: ");
scanf( "%d", &dy);
printf( "Enter the center of scaling: \n");
printf( "cx: ");
scanf( "%d", &cx);
printf( "cy: ");
scanf( "%d", &cy);
initgraph( &gd, &gm, "" );
cleardevice();
setbkcolor(WHITE);
setcolor(GREEN);
setlinestyle(SOLID_LINE, 0, 3);
drawpoly( edges, figure );
getch();
scale(figure,edges,dx,dy,cx,cy);
setcolor(RED);
drawpoly( edges, figure );
getch();
}