cg file

30
CET-IILM-AHL COMPUTER GRAPHICS LABORATORY FILE CS 5B 3 rd  YEAR SUBMITTED TO: SUBMITTED BY: Mr PURAN KAUL

Upload: nikhats10

Post on 13-Oct-2015

8 views

Category:

Documents


0 download

DESCRIPTION

cg

TRANSCRIPT

COMPUTER GRAPHICS

CET-IILM-AHLCOMPUTER GRAPHICSLABORATORY FILECS 5B 3rd YEAR

SUBMITTED TO: SUBMITTED BY:Mr PURAN KAUL

INDEXS.NOCONTENTSIGN1Program to Draw a Line using DDA Algorithm2Program to Draw a Line using Bresenham's Algorithm3Program to Draw a Circle using Mid - Point Algorithm4Program to Draw a Circle using Bresenham's Algorithm5Program to Draw an Ellipse using Mid - Point Algorithm62D transformations(Translation, Scaling, Rotation)72D transformation(Reflection and Shearing)83D SCALING93D ROTATION

1. Program to Draw a Line using DDA Algorithm

#include #include #include #include void lineDDA(int, int, int, int);void main(){ clrscr(); int x1, y1, xn, yn; int gd = DETECT, gm; initgraph(&gd, &gm, ""); printf("Enter the starting coordinates of line: "); scanf("%d %d", &x1, &y1); printf("Enter the ending coordinates of line: "); scanf("%d %d", &xn, &yn); lineDDA(x1, y1, xn, yn); getch();} void lineDDA(int x1, int y1, int xn, int yn) { int dx, dy, m, i; m = (yn-y1)/(xn-x1); for (i=x1; i 0){y--;py = py - 2 * rxSq;if (p > 0)p = p + rxSq - py;else{x++;px = px + 2 * rySq;p = p + rxSq - py + px;}drawEllipse(xc, yc, x, y);delay(30);}}void drawEllipse(float xc, float yc, float x, float y){putpixel(xc+x, yc+y, RED);putpixel(xc-x, yc+y, RED);putpixel(xc+x, yc-y, RED);putpixel(xc-x, yc-y, RED);}

OUTPUT:

6. 2D transformations(Translation, Scaling, Rotation)

#include#include#include#include

void translate();void scale();void rotate();

void main(){int ch;int gd=DETECT,gm;initgraph(&gd,&gm,"c:\\tc\\bgi");

setcolor(6);outtextxy (100,88,"Object.");rectangle(100,150,150,100);

printf("---MENU---");printf("\n 1)Translate\n 2)Scale\n 3)Rotate");printf("\nEnter your choice: ");scanf("%d",&ch);cleardevice();

switch(ch){case1: translate();break;case 2: scale();break;case 3: rotate();break;default: printf("you have enterdwrongchoice");break;}getch();closegraph();}

void translate(){int tx,ty;setcolor(2);outtextxy(240,10,"TRANSLATION");outtextxy(238,20,"------------");printf("\nEnter tx: ");scanf("%d",&tx);printf("\nEnter ty: ");scanf("%d",&ty);cleardevice();rectangle(100,150,150,100);printf("\nAfter Translation");rectangle(100+tx,150+ty,150+tx,100+ty);}

void scale(){int sx,sy;setcolor(2);outtextxy(240,10,"SCALING");outtextxy(238,20,"--------");printf("\nEnter sx: ");scanf("%d",&sx);printf("\nEnter sy: ");scanf("%d",&sy);cleardevice();rectangle(100,150,150,100);printf("\nAfter Scaling");rectangle(100*sx,150*sy,150*sx,100*sy);}

void rotate(){floattheta;int x1,x2,x3,x4;int y1,y2,y3,y4;int ax1,ax2,ax3,ax4,ay1,ay2,ay3,ay4;int refx,refy;printf("\nEnter the angle for rotation: ");scanf("%f",&theta);theta=theta*(3.14/180);cleardevice();setcolor(2);outtextxy(240,10,"ROTATE");outtextxy(238,20,"-------");refx=100;refy=100;

x1=100;y1=100;x2=150;y2=100;x3=150;y3=150;x4=100;y4=150;

ax1=refy+(x1-refx)*cos(theta)-(y1-refy)*sin(theta);ay1=refy+(x1-refx)*sin(theta)+(y1-refy)*cos(theta);

ax2=refy+(x2-refx)*cos(theta)-(y2-refy)*sin(theta);ay2=refy+(x2-refx)*sin(theta)+(y2-refy)*cos(theta);

ax3=refy+(x3-refx)*cos(theta)-(y3-refy)*sin(theta);ay3=refy+(x3-refx)*sin(theta)+(y3-refy)*cos(theta);

ax4=refy+(x4-refx)*cos(theta)-(y4-refy)*sin(theta);ay4=refy+(x4-refx)*sin(theta)+(y4-refy)*cos(theta);rectangle(100,150,150,100);line(ax1,ay1,ax2,ay2);line(ax2,ay2,ax3,ay3);line(ax3,ay3,ax4,ay4);line(ax4,ay4,ax1,ay1);}

OUTPUT:

7. 2D transformation(Reflection and Shearing)

#include#include#include#include#includevoid disp(int n,float c[][3]){float maxx,maxy;int i;maxx=getmaxx();maxy=getmaxy();maxx=maxx/2;maxy=maxy/2;i=0;while(i