Simple Program to implement Transformation in Graphics(Translation, Rotation, Scaling & Shearing)



#include <iostream>
#include <conio.h>
#include <graphics.h>
#include <math.h>
using namespace std;
main()
{
    int gd = DETECT,gm;
    int x1,x2,x3,y1,y2,y3,choice;
    cout<<"Enter coordinates of the triangle(x1,y1) : ";
    cin>>x1>>y1;
    cout<<"Enter coordinates of the triangle(x2,y2) : ";
    cin>>x2>>y2;
    cout<<"Enter coordinates of the triangle(x3,y13 : ";
    cin>>x3>>y3;
    cout<<"**********MENU**********";
    cout<<"\n1. Translation\n2. Rotation\n3. Scaling\n4. Shearing\n";
    cin>>choice;

    cout<<"Before transformation: \n";
    initgraph(&gd,&gm,"");
    line(x1,y1,x2,y2);
    line(x2,y2,x3,y3);
    line(x3,y3,x1,y1);
    switch(choice)
    {
        case 1:
            {
                int tx,ty;
                cout<<"Enter the x- translation factor: ";
                cin>>tx;
                cout<<"\nEnter the y- translation factor: ";
                cin>>ty;
                x1=x1+tx;
                x2=x2+tx;
                x3=x3+tx;
                y1=y1+ty;
                y2=y2+ty;
                y3=y3+ty;
                cout<<"After transformation: ";
                line(x1,y1,x2,y2);
                line(x2,y2,x3,y3);
                line(x3,y3,x1,y1);
                break;
            }
        case 2:
            {
                int theta;
                cout<<"Enter the rotation angle: ";
                cin>>theta;
                int x1n,y1n,x2n,y2n,x3n,y3n;
                x1n= x1*cos(theta*3.14/180)-y1*sin(theta*3.14/180);
                y1n= x1*sin(theta*3.14/180)+y1*cos(theta*3.14/180);
                x2n= x2*cos(theta*3.14/180)-y2*sin(theta*3.14/180);
                y2n= x2*sin(theta*3.14/180)+y2*cos(theta*3.14/180);
                x3n= x3*cos(theta*3.14/180)-y3*sin(theta*3.14/180);
                y3n= x3*sin(theta*3.14/180)+y3*cos(theta*3.14/180);
                cout<<"After Rotation: ";
                line(x1n,y1n,x2n,y2n);
                line(x2n,y2n,x3n,y3n);
                line(x3n,y3n,x1n,y1n);
                break;
            }
        case 3:
            {
                int sx,sy;

                cout<<"Enter the x- scaling factor: ";
                cin>>sx;
                cout<<"\nEnter the y- scaling factor: ";
                cin>>sy;
                x1=x1*sx;
                x2=x2*sx;
                x3=x3*sx;
                y1=y1*sy;
                y2=y2*sy;
                y3=y3*sy;
                cout<<"After transformation: ";
                line(x1,y1,x2,y2);
                line(x2,y2,x3,y3);
                line(x3,y3,x1,y1);
                break;
            }
        case 4:
            {
                int shx,shy;
                int x1s,y1s,x2s,y2s,x3s,y3s;
                cout<<"Enter the x- shearing factor: ";
                cin>>shx;
                cout<<"\nEnter the y- shearing factor: ";
                cin>>shy;
                x1s=x1+y1*shx;
                x2s=x2+y2*shx;
                x3s=x3+y3*shx;
                y1s=y1+x1*shy;
                y2s=y2+x2*shy;
                y3s=y3+x3*shy;
                cout<<"After transformation: ";
                line(x1s,y1s,x2s,y2s);
                line(x2s,y2s,x3s,y3s);
                line(x3s,y3s,x1s,y1s);
                break;
            }
    }
        getch();
}


OUTPUT:



 Run 1:
Run 2:



Run 3:


Run 4:
 









Comments

Popular posts from this blog

HOW TO SETUP CODE BLOCKS FOR GRAPHICS PROGRAMS

Smile emoji using graphics in Java using Applet