Monday, January 7, 2013

Computer Graphics Lab programming

 

 

 

PRINT A TEXT USING GRAPHIC FUNCTIONS

 

 

#include<stdio.h>

#include<conio.h>

#include<graphics.h>

#include<dos.h>

void main()

{

            int gd=DETECT,gm,errorcode;

            int y=0,x=0;

            int i;

            char msg[80];

            initgraph(&gd,&gm,"");

            errorcode=graphresult();

            if(errorcode!=grOk)

            {

                        printf("Graphics error %s\n",grapherrormsg(errorcode));

                        printf("Press any key to halt");

                        getch();

                        exit(1);

            }

 

            for(i=1;i<=6;i++)

            {

                        settextstyle(TRIPLEX_FONT,HORIZ_DIR,i);

                        sprintf(msg,"Text");

                        outtextxy(x,y,msg);

                        y+=textheight(msg);

                        x+=textwidth(msg);

            }

            getch();

            closegraph();

}

 

 

 

 

 

 

 

 

 

 

 

 

 

OUTPUT:-

 

 

Text

       Text

           Text

               Text

                 Text

                Text

                   

 

 

 

    

 

 

 

 

           

 

 

DRAW A HOUSE USING GRAPHIC FUNCTIONS

 

 

#include <graphics.h>

#include <stdlib.h>

#include <stdio.h>

#include <conio.h>

 

void main()

{

   /* request auto detection */

   int gdriver = DETECT, gmode, errorcode;

   int xmax, ymax;

   int midx, midy;

   int radius = 10;

 

   /* initialize graphics and local variables */

   initgraph(&gdriver, &gmode, "");

   /* read result of initialization */

   errorcode = graphresult();

   /* an error occurred */

   if (errorcode != grOk)

   {

      printf("Graphics error: %s\n", grapherrormsg(errorcode));

      printf("Press any key to halt:");

      getch();

      exit(1);

   }

 

   setcolor(getmaxcolor());

   xmax = getmaxx();

   ymax = getmaxy();

 

   /* draw a diagonal line */

 

   line(150,150,400,150);

   line(150,300,400,300);

   line(150,150,150,300);

   line(400,150,400,300);

   line(150,150,275,50);

 

   line(400,150,275,50);

   line(275,50,500,50);

   line(400,150,625,150);

   line(500,50,625,150);

   line(625,150,625,300);

   line(400,300,625,300);

 

   //door

   line(250,300,250,250);

   line(300,300,300,250);

   line(250,250,300,250);

   line(250,300,275,290);

   line(250,250,275,260);

   line(275,290,275,260);

 

   //window

   line(450,200,550,200);

   line(450,250,550,250);

   line(450,200,450,250);

   line(550,200,550,250);

   line(450,225,550,225);

   line(500,200,500,250);

   circle(275,100,15);

   /* clean up */

   getch();

   closegraph();

}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

OUTPUT:-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

                       

DRAW A BOAT USING GRAPHIC FUNCTIONS

 

#include<stdio.h>

#include<conio.h>

#include<graphics.h>

#include<dos.h>

void main()

{

            int gd,gm;

            int x1=100,y1=250,x2=150,y2=400,x3=400,y3=400,x4=450,y4=250;

            int a1=150,b1=100,a2=180,b2=250;

            int c1=180,d1=120,c2=210,d2=120,c3=180,d3=150;

            int e1=180,f=300,e2=275,e3=370;

            int i,j=10,r=10;

            clrscr();

            detectgraph(&gd,&gm);

            initgraph(&gd,&gm,"");

            line(x1,y1,x2,y2);

            line(x2,y2,x3,y3);

            line(x3,y3,x4,y4);

            line(x4,y4,x1,y1);

            rectangle(a1,b1,a2,b2);

            line(c1,d1,c2,d2);

            line(c2,d2,c3,d3);

            circle(e1,f,r);

            circle(e2,f,r);

            circle(e3,f,r);

            printf("Press any key to make the boat moving");

            getch();

            for(i=1;i<=10;i++)

            {

                        cleardevice();

                        line(x1+j,y1,x2+j,y2);

                        line(x2+j,y2,x3+j,y3);

                        line(x3+j,y3,x4+j,y4);

                        line(x4+j,y4,x1+j,y1);

                        rectangle(a1+j,b1,a2+j,b2);

                        line(c1+j,d1,c2+j,d2);

                        line(c2+j,d2,c3+j,d3);

                        circle(e1+j,f,r);

                        circle(e2+j,f,r);

                        circle(e3+j,f,r);

                        delay(500);

                        j=j+10;

            }

            getch();

            closegraph();

}

 

 

OUTPUT:-

 

 

 

Press any key to move the boat

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

DRAW A LINE USING DDA ALGORITHM

 

#include <graphics.h>

#include <stdlib.h>

#include <stdio.h>

#include <conio.h>

#include<dos.h>

#define ROUND(a)((int)(a+0.5))

int main(void)

{

   /* request auto detection */

   int gdriver = DETECT, gmode, errorcode;

   int xa,xb,ya,yb;

  // int y=0,x=0,i;

   char msg[25];

   /* initialize graphics and local variables */

   initgraph(&gdriver, &gmode, "");

 

   /* read result of initialization */

   errorcode = graphresult();

   /* an error occurred */

   if (errorcode != grOk)

  {

       printf("Graphics error: %s\n", grapherrormsg(errorcode));

      printf("Press any key to halt:");

      getch();

      exit(1);

  }

printf("Enter the value for x1,y1:\n");

scanf("%d%d",&xa,&ya);

printf("Enter the value for x2,y2:\n");

scanf("%d%d",&xb,&yb);

linedda(xa,ya,xb,yb);

getch();

closegraph();

  return 0;

}

 

 

void linedda(int xa,int ya,int xb,int yb)

{

int dx=xb-xa,dy=yb-ya,steps,k;

float xincr,yincr,x=xa,y=ya;

if(abs(dx)>abs(dy))

steps=abs(dy);

else

steps=abs(dy);

xincr=dx/(float)steps;

yincr=dy/(float)steps;

putpixel(ROUND(x),ROUND(y),GREEN);

for(k=0;k<steps;k++)

{

x+=xincr;

y+=yincr;

putpixel(ROUND(x),ROUND(y),GREEN);

}

}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

OUTPUT:-

 

 

Enter the value for x1,y1:

100

100

Enter the value for x2,y2:

250

300

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

DRAW A LINE USING BRESENHAM ALGORITHM

 

#include <graphics.h>

#include <stdlib.h>

#include <stdio.h>

#include <conio.h>

#include<dos.h>

 

void main()

{

   /* request auto detection */

   int gdriver = DETECT, gmode, errorcode;

   int xa,xb,ya,yb,x,y;

   char msg[25];

   /* initialize graphics and local variables */

   initgraph(&gdriver, &gmode, "");

 

   /* read result of initialization */

   errorcode = graphresult();

   /* an error occurred */

   if (errorcode != grOk)

   {

      printf("Graphics error: %s\n", grapherrormsg(errorcode));

      printf("Press any key to halt:");

      getch();

      exit(1);

  }

  printf("Enter the x1 and y1 value:\n");

  scanf("%d%d",&xa,&ya);

  printf("Enter the x2 and y2 value:\n");

  scanf("%d%d",&xb,&yb);

  linebres(xa,ya,xb,yb);

  getch();

  closegraph();

}

           

void linebres(int xa,int ya,int xb,int yb)

{

            int dx=abs(xa-xb),dy=abs(ya-yb);

            int p=2*dy-dx;

            int twody=2*dy,twodxdy=2*(dy-dx);

            int x,y,xend;

            if(xa>xb)

            {

                    x=xb;y=yb;xend=xa;

            }

           

 

            else

            {

                        x=xa;y=ya;xend=xb;

            }

            putpixel(x,y,YELLOW);

            while(x<xend)

            {

                        x++;

                        if(p<0)

                                    p+=twody;

                        else

                        {

                                    y++;

                                    p+=twodxdy;

                        }

                        putpixel(x,y,YELLOW);

            }

}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

OUTPUT:-

 

 

Enter the x1 and y1 value:

100

100

Enter the x2 and y2value:

250

300

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

DRAW A CIRCLE USING MIDPOINT ALGORITHM

 

 

#include <graphics.h>

#include <stdlib.h>

#include <stdio.h>

#include <conio.h>

#include<dos.h>

 

void main()

{

   /* request auto detection */

   int gdriver = DETECT, gmode, errorcode;

   int x1,x2,x3,x4,xc,yc,r,y1,y2;

   char msg[15];

   /* initialize graphics and local variables */

   initgraph(&gdriver, &gmode, "");

   /* read result of initialization */

   errorcode = graphresult();

   /* an error occurred */

   if (errorcode != grOk)

   {

      printf("Graphics error: %s\n", grapherrormsg(errorcode));

      printf("Press any key to halt:");

      getch();

      exit(1);

   }

   printf("Enter the value for xc,yc,r:");

   scanf("%d%d%d",&xc,&yc,&r);

   circlemidpoint(xc,yc,r);

   getch();

   closegraph();

}

void circlemidpoint(int xc,int yc,int r)

{

int x=0,y=r,p=1-r;

void circleplotpoints(int,int,int,int);

circleplotpoints(xc,yc,x,y);

while(x<y)

{

x++;

if(p<0)

p+=2*x+1;

else

{

y--;

p+=2*(x-y)+1;

}

circleplotpoints(xc,yc,x,y);

}

}

void circleplotpoints(int xc,int yc,int x,int y)

{

putpixel(xc+x,yc+y,YELLOW);

putpixel(xc-x,yc+y,YELLOW);

putpixel(xc+x,yc-y,GREEN);

putpixel(xc-x,yc-y,GREEN);

putpixel(xc+y,yc+x,GREEN);

putpixel(xc-y,yc+x,RED);

putpixel(xc+y,yc-x,RED);

putpixel(xc-y,yc-x,RED);

}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

OUTPUT:-

 

 

 

Enter the value for xc, yc, r:

250

150

125

 

 

         

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

LINE CLIPPING USING COHEN SUTHERLAND ALGORITHM

 

#include<stdio.h>

#include<conio.h>

#include<graphics.h>

#define FALSE 0

#define TRUE 1

#define LEFTEDGE 0x1

#define RIGHTEDGE 0x2

#define TOPEDGE 0x8

#define BOTTOMEDGE 0x4

#define INSIDE(a) (!a)

#define REJECT(a,b) (a&b)

#define ACCEPT(a,b) (!(a|b))

 

unsigned char encode(int x,int y,int minx,int maxx,int miny,int maxy)

{

            unsigned char code=0X00;

            if(x<minx)

                        code=code|LEFTEDGE;

            if(x>maxx)

                        code=code|RIGHTEDGE;

            if(y<miny)

                        code=code|BOTTOMEDGE;

            if(y>maxy)

                        code=code|TOPEDGE;

            return(code);

}

void swappts(int *x1,int *y1,int *x2,int *y2)

{

            int tx,ty;

            tx=*x1;

            ty=*y1;

            *x1=*x2;

            *y1=*y2;

            *x2=tx;

            *y2=ty;

}

void swapcode(unsigned char *c1,unsigned char *c2)

{

            unsigned char temp;

            temp=*c1;

*c1=*c2;

*c2=temp;

}

 

 

 

void clipline(int minx,int maxx,int miny,int maxy,int x1,int y1,int x2,int y2)

{

            unsigned char code1,code2;

            int done=FALSE;

            int draw=FALSE;

            float m;

            while(!done)

            {

                        code1=encode(x1,y1,minx,maxx,miny,maxy);

                        code2=encode(x2,y2,minx,maxx,miny,maxy);

                        if(ACCEPT(code1,code2))

                        {

                                    done=TRUE;

                                    draw=TRUE;

                        }

                        else if(REJECT(code1,code2))

                                    done=TRUE;

                        else

                        {

                                    if(INSIDE(code1))

                                    {

                                                swappts(&x1,&y1,&x2,&y2);

                                                swapcode(&code1,&code2);

                                    }

                                    if(x2!=x1)

                                                m=(y2-y1)/(x2-x1);

                                    if(code1&LEFTEDGE)

                                    {

                                                y1+=(minx-x1)*m;

                                                x1=minx;

                                    }

                                    else if(code1&RIGHTEDGE)

                                    {

                                                y1+=(maxx-x1)*m;

                                                x1=maxx;

                                    }

                                    else if(code1&BOTTOMEDGE)

                                    {

                                                if(x2!=x1)

                                                            x1+=(miny-y1)/m;

                                                y1=miny;

                                    }

                                    else if(code1&TOPEDGE)

                                    {

                                                if(x2!=x1)

                                                x1+=(maxy-y1)/m;

                                                y1=maxy;

                                    }

                        }

            }

            if(draw)

                        line(x1,y1,x2,y2);

}

 

void main()

{

            int x1,x2,y1,y2,minx,miny,maxx,maxy;

            int gd=DETECT,gm;

            initgraph(&gd,&gm,"");

            printf("Enter the minimum and maximum values of x:");

            scanf("%d%d",&minx,&maxx);

            printf("Enter the minimum and maximum values of y: ");

            scanf("%d%d",&miny,&maxy);

            printf("Enter the first enpoint of line: ");

            scanf("%d%d",&x1,&y1);

            printf("Enter the second endpoint of line: ");

            scanf("%d%d",&x2,&y2);

            printf("BEFORE CLIPPING");

            rectangle(minx,maxy,maxx,miny);

            line(x1,y1,x2,y2);

            getch();

            clrscr();

            printf("AFTER CLIPPING");

            rectangle(minx,maxy,maxx,miny);

            clipline(minx,maxx,miny,maxy,x1,y1,x2,y2);

            getch();

            closegraph();

}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

OUTPUT:-

           

            Enter the minimum and maximum values of x: 300  400

 

            Enter the minimum and maximum values of y: 300  400

 

            Enter the first endpoint  of line: 275  300

 

            Enter the second endpoint of line: 350  420

 

            BEFORE CLIPPING

           

 

                                                                               

 

 

AFTER CLIPPING                            

 

 

                                                                                                                                      

                                                                       

                                                      

 

         

 

 

LINE CLIPPING USING LIANG BARSKY ALGORITHM

 

#include<stdio.h>

#include<conio.h>

#include<graphics.h>

#include<dos.h>

#define ROUND(a)((int)(a+0.5))

int cliptest(float p,float q,float *u1,float *u2)

{

            float r;

            int retval=1;

            if(p<0.0)

            {

                        r=q/p;

                        if(r>*u2)

                                    retval=0;

                        if(r>*u1)

                                    *u1=r;

            }

            else if(p>0.0)

            {

                        r=q/p;

                        if(r<*u1)

                                    retval=0;

                        if(r<*u2)

                                    *u2=r;

            }

            else if(q<0.0)

                        retval=0;

            return(retval);

}

void clipline(int minx,int miny,int maxx,int maxy,int x1,int y1,int x2,int y2)

{

            float u1=0.0,u2=1.0,dx=x2-x1,dy;

            if(cliptest(-dx,x1-minx,&u1,&u2))

                        if(cliptest(dx,maxx-x1,&u1,&u2))

                        {

                                    dy=y2-y1;

                                    if(cliptest(-dy,y1-miny,&u1,&u2))

                                                if(cliptest(dy,maxy-y1,&u1,&u2))

                                                {

                                                            if(u2<1.0)

                                                            {

                                                                        x2=x1+u2*dx;

                                                                        y2=y1+u2*dy;

                                                            }

                                                            if(u1>0.0)

                                                            {

                                                                        x1+=u1*dx;

                                                                        y1+=u1*dy;

                                                            }

                                                            line(x1,y1,x2,y2);

                                                }

                        }

}

void main()

{

            int gdriver=DETECT,gmode,x1,y1,x2,y2,minx,miny,maxx,maxy;

            initgraph(&gdriver,&gmode,"");

            clrscr();

            printf("Enter the min & max x values: ");

            scanf("%d %d",&minx,&maxx);

            printf("Enter the min & max y values: ");

            scanf("%d %d",&miny,&maxy);

            printf("Enter the first endpoint: ");

            scanf("%d %d",&x1,&y1);

            printf("Enter the second endpoint: ");

            scanf("%d %d",&x2,&y2);

            clrscr();

            printf("Before Clipping");

            line(x1,y1,x2,y2);

            rectangle(minx,maxy,maxx,miny);

            getch();

            clrscr();

            printf("After Clipping");

            clipline(minx,miny,maxx,maxy,x1,y1,x2,y2);

            rectangle(minx,maxy,maxx,miny);

            getch();

}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

OUTPUT:-

 

            Enter the min & max x values:: 300  400

 

            Enter the min & max x values:: 300  400

 

            Enter the first endpoint  : 275  300

 

            Enter the second endpoint : 350  420

 

            Before Clipping

           

 

                                                                               

 

 

After Clipping                            

 

 

                                                                                                                                      

                                                                       

                                                      

 

 

 

 

2 DIMENSIONAL ROTATION

 

 

#include<math.h>

#include<stdlib.h>

#include<stdio.h>

#include<conio.h>

#include<graphics.h>

float px[10],py[10],tx[10],ty[10];

void disp1();

void disp2();

void translation();

void scaling();

void rotation();

int vertices;

void main()

{

            int gd=DETECT,gm,i;

            initgraph(&gd,&gm,"");

            if(graphresult()!=grOk)

            {

                       printf("Graphics error");

                        getch();

                        return;

            }

            printf("Enter number of vertices : ");

            scanf("%d",&vertices);

            printf("Enter the x and y coordinates : ");

            for(i=0;i<vertices;i++)

            {

                        scanf("%f%f",&px[i],&py[i]);

            }

            disp1();

            rotation();

            disp2();

            getch();

            return;

}

void disp1()

{

            int i;

            for(i=0;i<vertices-1;i++)

            {

                       line(px[i],py[i],px[i+1],py[i+1]);

                       line(px[vertices-1],py[vertices-1],px[0],py[0]);

            }

}

 

void disp2()

{

            int i;

            for(i=0;i<vertices-1;i++)

            {

                       line(tx[i],ty[i],tx[i+1],ty[i+1]);

                       line(tx[vertices-1],ty[vertices-1],tx[0],ty[0]);

            }

}

void rotation()

{

            float a,rx,ry,dir,s;

            int i;

            printf("Enter the rotation angle : ");

            scanf("%f",&a);

            printf("Enter the rotation point coordinates : ");

            scanf("%f%f",&rx,&ry);

            printf("Enter the direction of rotation 1 for clockwise and  2 for anticlockwise:");

            scanf("%f",&dir);

            if(dir==1)

                        s=1;

            else

                        s=-1;

            for(i=0;i<vertices;i++)

            {

                        tx[i]=(rx + (px[i]-rx)*cos(a) - (py[i]-ry)*sin(a)*s);

                        ty[i]=(ry + (px[i]-rx)*sin(a)*s + (py[i]-ry)*cos(a));

            }

            getch();

}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2 DIMENSIONAL ROTATION

 

OUTPUT:-

 

Enter the number of vertices:3

 

Enter the coordinate 1: 100 200

 

Enter the coordinate 2: 200 200

 

Enter the coordinate 3: 200 200

 

Enter the rotation angle: 90

 

Enter the rotation point: 200 200

 

Enter the direction (1.Clockwise 2.Anti Clockwise) : 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2 DIMENSIONAL SCALING

 

#include<conio.h>

#include<graphics.h>

#include<stdlib.h>

int px[10],py[10],tx[10],ty[10];

void disp1();

void disp2();

void scaling();

int i,n=0;

void main()

{

/*reqest auto detection */

   int gdriver = DETECT, gmode, errorcode;

   /* initialize graphics and local variables */

   initgraph(&gdriver, &gmode, "");

 

   /* read result of initialization */

   errorcode = graphresult();

   /* an error occurred */

   if (errorcode != grOk)

   {

      printf("Graphics error: %s\n", grapherrormsg(errorcode));

      printf("Press any key to halt:");

      getch();

      exit(1);

   }

 

   setcolor(getmaxcolor());

   printf("\n\n Enter the no of vertics:");

   scanf("%d",&n );

   printf("\n\nEnter the value for coordinate:");

   for(i=0;i<n;i++)

  {

            scanf("%d",&px[i]);

scanf("%d",&py[i]);

  }

  clrscr();

  disp1();

  scaling();

  clrscr();

  disp2();

  getch();

  closegraph();

}

void disp1()

{

for(i=0;i<n-1;i++)

line(px[i],py[i],px[i+1],py[i+1]);

line(px[n-1],py[n-1],px[0],py[0]);

getch();

}

void disp2()

{

for(i=0;i<n-1;i++)

line(tx[i],ty[i],tx[i+1],ty[i+1]);

line(tx[n-1],ty[n-1],tx[0],ty[0]);

getch();

}

void scaling()

{

int sx,sy;

printf("Enter the scaling vector:");

scanf("%d %d",&sx,&sy);

for(i=0;i<n;i++)

           {

                       tx[i]=px[i]*sx;

ty[i]=py[i]*sy;

}

}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

                                    2-DIMENSIONAL SCALING

 

 

OUTPUT:

 

 

Enter the number of vertices: 3

Enter the x and y coordinates : 100

150

150

150

150

100

Enter scale factors (2 values ) :

2

2

 

 

 

 

 

2 DIMENSIONAL TRANSLATION

 

#include<stdio.h>

#include<conio.h>

#include<graphics.h>

#include<stdlib.h>

int px[10],py[10],tx[10],ty[10];

void disp1();

void disp2();

void translation();

int i,n=0;

void main()

{

   /*reqest auto detection */

   int gdriver = DETECT, gmode, errorcode;

 

 

   /* initialize graphics and local variables */

   initgraph(&gdriver, &gmode, "");

 

   /* read result of initialization */

   errorcode = graphresult();

   /* an error occurred */

   if (errorcode != grOk)

   {

      printf("Graphics error: %s\n", grapherrormsg(errorcode));

      printf("Press any key to halt:");

      getch();

      exit(1);

   }

   setcolor(getmaxcolor());

   printf("\n\n Enter the no of vertics:");

   scanf("%d",&n );

   printf("\n\nEnter the value for coordinate:");

   for(i=0;i<n;i++)

  {

scanf("%d",&px[i]);

scanf("%d",&py[i]);

  }

  clrscr();

  disp1();

  translation();

  clrscr();

  disp2();

  getch();

  closegraph();

}

 

void disp1()

{

for(i=0;i<n-1;i++)

line(px[i],py[i],px[i+1],py[i+1]);

line(px[n-1],py[n-1],px[0],py[0]);

getch();

}

void disp2()

{

for(i=0;i<n-1;i++)

line(tx[i],ty[i],tx[i+1],ty[i+1]);

line(tx[n-1],ty[n-1],tx[0],ty[0]);

getch();

}

void translation()

{

int dx,dy;

printf("Enter the translation vector:");

scanf("%d %d",&dx,&dy);

for(i=0;i<n;i++)

{

tx[i]=px[i]+dx;

ty[i]=py[i]+dy;

}

}

 

                                   

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2 DIMENSIONAL TRANSLATION

 

 

OUTPUT:-

 

Enter the number of vertices:3

 

Enter the coordinate 1: 100 200

 

Enter the coordinate 2: 200 200

 

Enter the coordinate 3: 200 200

 

Enter the translation vector: 50 50

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3 DIMENSIONAL TRANSLATION

 

#include<stdio.h>

#include<conio.h>

#include<graphics.h>

#include<math.h>

float px[10],py[10],tx[10],ty[10],tx2[10],ty2[10],px2[10],py2[10];

void disp1();

void disp2();

void translation();

float depth,vertices;

void main()

{

            int gd=DETECT,gm,i;

            initgraph(&gd,&gm,"");

            if(graphresult()!=grOk)

            {

                       printf("Graphics error");

                       getch();

                       return;

            }

            printf("Enter number of vertices : ");

            scanf("%f",&vertices);

            printf("Enter the depth value : ");

            scanf("%f",&depth);

            printf("Enter the x and y coordinates : ");

            for(i=0;i<vertices;i++)

            {

                       scanf("%f%f",&px[i],&py[i]);

                       px2[i]=px[i]+depth;

                       py2[i]=py[i]+depth;

            }

            disp1();

            translation();

            disp2();

            getch();

}

void disp1()

{

            int i;

            for(i=0;i<vertices-1;i++)

            {

                        line(px[i],py[i],px[i+1],py[i+1]);

                        line(px2[i],py2[i],px2[i+1],py2[i+1]);

            }

            line(px[vertices-1],py[vertices-1],px[0],py[0]);

            line(px2[vertices-1],py2[vertices-1],px2[0],py2[0]);

 

            for(i=0;i<vertices;i++)

                        line(px[i],py[i],px2[i],py2[i]);

}

void disp2()

{

            int i;

            for(i=0;i<vertices-1;i++)

            {

                        line(tx[i],ty[i],tx[i+1],ty[i+1]);

                        line(tx2[i],ty2[i],tx2[i+1],ty2[i+1]);

            }

            line(tx[vertices-1],ty[vertices-1],tx[0],ty[0]);

            line(tx2[vertices-1],ty2[vertices-1],tx2[0],ty2[0]);

            for(i=0;i<vertices;i++)

                        line(tx[i],ty[i],tx2[i],ty2[i]);

            return;

}

void translation()

{

            float dx,dy,i;

            printf("Enter the translation value ( 2 values )  : ");

            scanf("%f%f",&dx,&dy);

            for(i=0;i<vertices;i++)

            {

                        tx[i]=px[i]+dx;

                        ty[i]=py[i]+dy;

                       tx2[i]=dx+px2[i];

                        ty2[i]=dy+py2[i];

            }

}

 

 

                       

 

 

 

 

 

 

 

 



 

 

 

 

 

3-DIMENSIONAL TRANSLATION

 

 

OUTPUT:

 

 

Enter the number of vertices: 3

Enter the depth value : 10

Enter the x and y coordinates : 100

200

200

200

200

100

 

 

 

 

 

 

 

 

 

 

 

3 DIMENSIONAL SCALING

 

#include<stdio.h>

#include<conio.h>

#include<graphics.h>

#include<math.h>

float px[10],py[10],tx[10],ty[10],tx2[10],ty2[10],px2[10],py2[10];

void disp1();

void disp2();

void scaling();

float depth,vertices;

void main()

{

            int gd=DETECT,gm,i;

            initgraph(&gd,&gm,"");

            if(graphresult()!=grOk)

            {

                        printf("Graphics error");

                       getch();

                       return;

            }

            printf("Enter number of vertices : ");

            scanf("%f",&vertices);

            printf("Enter the depth value : ");

            scanf("%f",&depth);

            printf("Enter the x and y coordinates : ");

            for(i=0;i<vertices;i++)

            {

                       scanf("%f%f",&px[i],&py[i]);

                       px2[i]=px[i]+depth;

                       py2[i]=py[i]+depth;

            }

            disp1();

            scaling();

            disp2();

            getch();

            return;

}

void disp1()

{

            int i;

            for(i=0;i<vertices-1;i++)

            {

                       line(px[i],py[i],px[i+1],py[i+1]);

                       line(px2[i],py2[i],px2[i+1],py2[i+1]);

            }

            line(px[vertices-1],py[vertices-1],px[0],py[0]);

            line(px2[vertices-1],py2[vertices-1],px2[0],py2[0]);

            for(i=0;i<vertices;i++)

            line(px[i],py[i],px2[i],py2[i]);

}

void disp2()

{

            int i;

            for(i=0;i<vertices-1;i++)

            {

                       line(tx[i],ty[i],tx[i+1],ty[i+1]);

                       line(tx2[i],ty2[i],tx2[i+1],ty2[i+1]);

            }

            line(tx[vertices-1],ty[vertices-1],tx[0],ty[0]);

            line(tx2[vertices-1],ty2[vertices-1],tx2[0],ty2[0]);

            for(i=0;i<vertices;i++)

                        line(tx[i],ty[i],tx2[i],ty2[i]);

            return;

}

void scaling()

{

            float sx,sy,sz,i,dep;

            printf("Enter the scale factors(3 values): ");

            scanf("%f%f%f",&sx,&sy,&sz);

            for(i=0;i<vertices;i++)

            {

                       tx[i]=px[i]*sx;

                        ty[i]=py[i]*sy;

                        dep=depth*sz;

                       tx2[i]=tx[i]+dep;

                       ty2[i]=ty[i]+dep;

            }

}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

                                    3-DIMENSIONAL SCALING

 

 

OUTPUT:

 

 

Enter the number of vertices: 3

Enter the depth value : 15

Enter the x and y coordinates : 100

50

50

50

50

100

Enter the scale factors ( 3 values ) : 2

2

2

 

 

 

3 DIMENSIONAL ROTATION

 

#include<stdio.h>

#include<conio.h>

#include<graphics.h>

#include<math.h>

float px[10],py[10],tx[10],ty[10],tx2[10],ty2[10],px2[10],py2[10];

void disp1();

void disp2();

void rotation();

float depth,vertices;

void main()

{

            int gd=DETECT,gm,i;

            initgraph(&gd,&gm,"");

            if(graphresult()!=grOk)

            {

                       printf("Graphics error");

                       getch();

                       return;

            }

            printf("Enter number of vertices : ");

            scanf("%f",&vertices);

            printf("Enter the depth value : ");

            scanf("%f",&depth);

            printf("Enter the x and y coordinates : ");

            for(i=0;i<vertices;i++)

            {

                       scanf("%f%f",&px[i],&py[i]);

                       px2[i]=px[i]+depth;

                       py2[i]=py[i]+depth;

            }

            disp1();

            rotation();

            disp2();

            getch();

}

void disp1()

{

            int i;

            for(i=0;i<vertices-1;i++)

            {

                        line(px[i],py[i],px[i+1],py[i+1]);

                        line(px2[i],py2[i],px2[i+1],py2[i+1]);

            }

            line(px[vertices-1],py[vertices-1],px[0],py[0]);

            line(px2[vertices-1],py2[vertices-1],px2[0],py2[0]);

 

            for(i=0;i<vertices;i++)

            line(px[i],py[i],px2[i],py2[i]);

}

void disp2()

{

            int i;

            for(i=0;i<vertices-1;i++)

            {

                       line(tx[i],ty[i],tx[i+1],ty[i+1]);

                        line(tx2[i],ty2[i],tx2[i+1],ty2[i+1]);

            }

            line(tx[vertices-1],ty[vertices-1],tx[0],ty[0]);

            line(tx2[vertices-1],ty2[vertices-1],tx2[0],ty2[0]);

            for(i=0;i<vertices;i++)

                       line(tx[i],ty[i],tx2[i],ty2[i]);

}

void rotation()

{

            float i,an,rx,ry,dir,s,a;

            printf("Enter the rotation angle : ");

            scanf("%f",&an);

            printf("Enter the rotation point : ");

            scanf("%f%f",&rx,&ry);

            printf("Enter the dircetion of rotation [1 for clockwise / 2 for anticlockwise] : ");

            scanf("%f",&dir);

            if(dir==1)

                        s=1;

            else

                        s=-1;

            a=an*3.14/180;

            for(i=0;i<vertices;i++)

            {

                       tx[i]=rx+(px[i]-rx)*cos(a) - (py[i]-ry)*sin(a)*s;

                       ty[i]=ry+(px[i]-rx)*sin(a)*s  + (py[i]-ry)*cos(a);

                       tx2[i]=rx+(px2[i]-rx)*cos(a) - (py2[i]-ry)*sin(a)*s;

                       ty2[i]=ry+(px2[i]-rx)*sin(a)*s + (py2[i]-ry)*cos(a);

            }

}

 

 

 

 

 

 

 

 

 

 

                                    3-DIMENSIONAL ROTATION

 

 

OUTPUT:

 

 

Enter the number of vertices: 3

Enter the depth value : 20

Enter the x and y coordinates : 100

150

150

150

150

100

Enter the rotation angle: 30

Enter the rotation point : 50

50

Enter the direction of rotation (1-Clockwise, 2-Anticlockwise) : 1

 

 

 

 

 

 

 

 

 

 

 

 

DEVELOPING AN ANIMATION USING GUIDE LAYER TECHNIQUE

 

 

Step 1 : Create a new Flash document

 

Step 2 : Choose View > Grid > Show Grid

 

Step 3 : In the Timeline, select Frame 1

 

Step 4 : In Frame 1, use the oval tool to create a circle that represents a ball

 

Step 5 : In the timeline, select Frame 20, and choose Insert > Frame

 

Step 6 : In the Timeline, select Frame 1

 

Step 7 : Choose Insert > Create Motion Tween

 

Step 8 : In the timeline, position in Frame 5, drag the ball to a new position

 

Step 9 : Do the same for Frame 10, 15 and 20

 

Step 10 : At the bottom of the timeline, click the add guide layer button

 

Step 11 : With the motion guide layer selected, use the pencil tool to draw a line on the stage showing the path

 

Step 12 : In Frame 1, drag the circle to position over the beginning of the motion path

 

Step 13 : In Frame 20, drag the circle to reposition it over the end of the motion path

 

Step 14 : Select  the first and select Control > Play

 

Step 15 : Stop

 

 

GUIDE LAYER ANIMATION

 

Output

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

DEVELOPING AN ANIMATION USING ONION SKIN TECHNIQUE

 

 

Step 1 : Create a new Flash document

 

Step 2 : Choose View > Grid > Show Grid

 

Step 3 : In the Timeline, select Frame 1

 

Step 4 : In the Tool Box, select the oval tool

 

Step 5 : Near the top of the edge, draw a circle

 

Step 6 : In the Timeline, select Frame 2

 

Step 7 : Choose Insert > Timeline > Key frame

 

Step 8 : Select the ball and reposition it at the bottom of the previous ball

 

Step 9 : Similarly create some more key frames and do the same in such a way that balls are positioned in a wave form

 

Step 10 : In the status bar of the timeline, check the onion skin button

 

Step 11 : In the timeline, check and modify onion marker button. Select Onion 2, Onion 5 or Onion all

 

Step 12 : Select Control > Play

 

Step 13 : Stop

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

OUTPUT:-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

DEVELOPING AN ANIMATION USING MASKING OF LAYER

 

 

Step 1 : Create a new Flash document

Step 2 : Insert one more layer, rather than the default layer.

Step 3 : Rename the top layer to "Mask" and the layer below that to "background".

Step 4 : Import your picture to the "background" layer.

Step 5 : Using Oval tool from your tool box, draw a circle in your "Mask" layer and delete it's border.

Step 6 : Drag the circle to one end of your picture.

Step 7 : Now go to"frame 40" of your "Mask" layer and press "F6" to insert a new keyframe.

Step 8 : Now go to "frame 40" of your "background" layer and press "F5" to insert frames, so that your background image is available all through your mask.

Step 9 : Select "frame 40" of your "Mask" layer, that is your new keyframe, Keeping the playhead on "frame 40" of "Mask" layer, drag the circle to other end of your picture.

Step 10 : Now go back to "frame 1" of your "Mask" layer, keeping the playhead on "frame 1" of your "Mask" layer, select Shape tween in your properties window.

Step 11 : Right click on the "Mask" layer (the area where you named the layer not where the frames exist) and select Mask.

Step 12 : select Control > Play

 

Step 13 : Stop

 

 

 

 

 

 

 

 

 

 

 

 

     OUTPUT:-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

IMAGE EDITING USING CROPING

 

 

Step 1 : Create a new Photoshop document

Step 2 : Import a picture on to the document

Step 3 : Select the Crop tool

Step 4 : Drag over the part of the image you want to keep to create a marquee.

Step 5 : To complete the crop, press Enter or double-click inside the cropping marquee.

Step 6 : Stop

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

OUTPUT:-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

IMAGE EDITING USING CLONING

 

 

Step 1 : Create a new Photoshop document

Step 2 : Import a picture on to the document

Step 3 : Select the Clone Stamp Tool from the toolbox.

Step 4 : On the Options bar across the top of the screen, select the brush size and type of brush you want to use

Step 5 : Move the cursor over the image to the area you would like to reproduce elsewhere.

Step 6 : Hold down the Alt key and click to select the area to clone from.

Step 7 : When you release the mouse, the brush will appear on the image in the shape of the brush selected. Crosshairs will appear over the area to be reproduced and move with the brush.

Step 8 : Click repeatedly or drag the mouse to reproduce the pattern.

Step 9 : Stop

 

 

 

 

 

 

 

 

 

 

 

 

OUTPUT:-

 

 

 

 

 

0 comments:

Post a Comment