• No results found

Practical File of Computer Graphics

N/A
N/A
Protected

Academic year: 2021

Share "Practical File of Computer Graphics"

Copied!
46
0
0

Loading.... (view fulltext now)

Full text

(1)

P

RACTICAL

F

ILE OF

C

OMPUTER

G

RAPHICS

(2)

I

NDEX

Aim

Page

Remarks

1.

Write a program to draw a stick man

2

2.

Write a program to draw a rectangle using

line function

4

3.

Write a program to draw a line using DDA’s line

drawing algorithm

6

4.

Write a program to draw a line using

Bresenham’s line drawing algorithm

9

5.

Write a program to draw a circle using

equation of circle

12

6

Write a program to draw a circle using

Bresenham’s circle drawing algorithm

14

7.

Write a program to draw a circle using midpoint

circle drawing algorithm

17

8.

Write a program to draw a circle using polar co-

ordinates

20

9.

Write a program to fill a circle using Boundary

Fill Algorithm

23

10.

Write a program to fill a circle using Flood Fill

Algorithm

27

11.

Write a program for line clipping using cohen-

Sutherland algorithm

30

12.

Write a program to translate a triangle

about the origin

36

13.

Write a program to scale a triangle about a

fixed point taken as one of the vertex of

the triangle

39

14.

Write a program to rotate a triangle about

a fixed point taken as one of the vertex of

the triangle

(3)

P

RACTICAL

N

O

.1

Write a program to draw a stick man

#include<math.h> #include<conio.h> #include<graphics.h> void main() { intgd=DETECT,gm; int x,y,r,c1; initgraph(&gd,&gm,""); circle(150,70,70); circle(120,50,10); circle(190,50,10); line(155,60,155,80); arc(155,100,180,360,20); line(130,140,130,170); line(170,140,170,170); rectangle(80,170,230,260); line(110,260,110,360); line(205,260,205,360); line(80,190,55,240); line(230,190,255,240); getch(); }

(4)
(5)

P

RACTICAL

N

O

.

2

Write a program to draw a rectangle using line function

#include<graphics.h> void main() { intgd=DETECT,gm; initgraph(&gd,&gm," "); line(100,100,100,300); line(100,100,300,100); line(100,300,300,300); line(300,100,300,300); getch(); }

(6)
(7)

P

RACTICAL

N

O

.

3

Write a program to draw a line using DDA’s line drawing

algorithm

#include<stdio.h> #include<conio.h> #include<graphics.h> #include<dos.h> voidlineDDA(int,int,int,int); void main() { int x1,y1,xn,yn; intgd=DETECT,gm; initgraph(&gd,&gm,"");

printf("enter the starting coordinates of the line:"); scanf("%d%d",&x1,&y1);

printf("enter the ending coordinates of the line:"); scanf("%d%d",&xn,&yn);

lineDDA(x1,y1,xn,yn); getch();

}

voidlineDDA(int x1,int y1,int xn,intyn) {

intdx,dy,m,i;

(8)

{ if(m<=1) { dx=1; dy=(m*dx); } else { dy=1; dx=(dy/m); } x1=x1+dx; y1=y1+dy; { putpixel(x1,y1,RED); delay(20); } } }

(9)
(10)

P

ROGRAM

N

O

.4

Write a program to draw a line using Bresenham’s line

drawing algorithm

#include<conio.h> #include<stdio.h> #include<graphics.h> #include<dos.h> voidlineBres(int,int,int,int); void main() { int x1,y1,xn,yn; intgd=DETECT,gm; initgraph(&gd,&gm,"");

printf("Enter the starting coordinate at line:"); scanf("%d%d", &x1, &y1);

printf("Enter the ending coordinate at line:"); scanf("%d%d", &xn, &yn);

lineBres(x1,y1,xn,yn); getch();

}

voidlineBres(int x1,int y1,int xn,intyn) {

int dx = xn-x1,dy=yn-y1; int di = 2*dy-dx;

(11)

putpixel(x1,y1,RED); while(x1<xn) { x1++; if(di<0) { di=di+ds; } else { y1++; di=di+dt; } putpixel(x1,y1,RED); delay(20); } }

(12)
(13)

P

RACTICAL

N

O

.

5

Write a program to draw a circle using equation of circle

#include<conio.h> #include<graphics.h> void main() { intgd=DETECT,gm; int x,y,r,c1; initgraph(&gd,&gm,""); circle(200,200,50); getch(); closegraph(); }

(14)
(15)

P

RACTICAL

N

O

.

6

Write a program to draw a circle using Bresenham’s

circle drawing algorithm

#include<stdio.h> #include<conio.h> #include<dos.h> #include<graphics.h> voidcircleBres(int,int,int); voiddrawcircle(int,int,int,int); void main() { intxc,yc,r; intgd=DETECT,gm; initgraph(&gd,&gm,"");

printf("Enter the centre coordinates of the circle"); scanf("%d%d",&xc,&yc);

printf("Enter radius of circle:"); scanf("%d",&r); circleBres(xc,yc,r); getch(); } voidcircleBres(intxc,intyc,int r) { int x=0,y=r;

(16)

while(x<y) { drawcircle(xc,yc,x,y); x++; if(d<0) d=d+4*(x)+6; else { y--; d=d+4*(x-y)+10; drawcircle(xc,yc,x,y); delay(50); } } } voiddrawcircle(intxc,intyc,intx,int y) { putpixel(xc+x,yc+y,RED); putpixel(xc+y,yc+x,YELLOW); putpixel(xc-x,yc+y,BLUE); putpixel(xc-y,yc+x,GREEN); putpixel(xc-x,yc-y,GREEN); putpixel(xc-y,yc-x,YELLOW); putpixel(xc+y,yc-x,RED); putpixel(xc+x,yc-y,YELLOW); }

(17)
(18)

P

RACTICAL

N

O

.

7

Write a program to draw a circle using midpoint circle

drawing algorithm

#include<stdio.h> #include<conio.h> #include<graphics.h> #include<dos.h> voidcirclemidpoint(int,int,int); voiddrawcircle(int,int,int,int); void main() { intxc,yc,r; intgd=DETECT,gm; initgraph(&gd,&gm,"");

printf("Enter center coordinates of the circle: "); scanf("%d%d",&xc,&yc);

printf("Enter radius of the circle: "); scanf("%d",&r); circlemidpoint(xc,yc,r); getch(); } voidcirclemidpoint(intxc,intyc,int r) { int x=0,y=r; int p=1-r; while(x<y) { drawcircle(xc,yc,x,y); x++; if(p<0) {

(19)

p=p+2*x+1; } else { y--; p=p+2*(x-y)+1; } drawcircle(xc,yc,x,y); delay(50); } } voiddrawcircle(intxc,intyc,intx,int y) { putpixel(xc+x,yc+y,RED); putpixel(xc-x,yc+y,BLUE); putpixel(xc+x,yc-y,GREEN); putpixel(xc-x,yc-y,RED); putpixel(xc+y,yc+xGREEN); putpixel(xc-y,yc+x,YELLOW); putpixel(xc+y,yc-x, YELLOW); putpixel(xc-y,yc-x, YELLOW); }

(20)
(21)

P

RACTICAL

N

O

.

8

Write a program to draw a circle using polar

co-ordinates

#include<graphics.h> #include<math.h> #include<conio.h> voidacircle(inth,intk,int r); voiddpixel(intx,inty,inth,int k); void main() { intgd=DETECT,gm; initgraph(&gd,&gm,""); setbkcolor(YELLOW); acircle(100,100,100); getch(); closegraph(); } voidacircle(inth,intk,int r) { inty,x; int theta; for(theta=0;theta<=360;theta+=1) { x=r*cos(theta); y=r*sin(theta);

(22)

} } voiddpixel(intx,inty,inth,int k) { putpixel(x+h,y+k,RED); putpixel(y+h,x+k,RED); putpixel(-y+h,x+k,RED); putpixel(-x+h,y+k,RED); putpixel(-x+h,-y+k,RED); putpixel(-y+h,-x+k,RED); putpixel(y+h,-x+k,RED); putpixel(x+h,-y+k,RED); }

(23)
(24)

P

RACTICAL

N

O

.

9

Write a program to fill a circle using Boundary Fill

Algorithm

#include<graphics.h> #include<math.h> #include<conio.h> voiddcircle(inth,intk,int r); voiddpixel(intx,inty,inth,int k);

voidcfill(intx,int y, intfcolor, intbcolor); void main() { intgd=DETECT,gm; initgraph(&gd,&gm,""); setbkcolor(YELLOW); dcircle(30,30,27); cfill(30,30,BLUE,RED); getch(); closegraph(); } voiddcircle(inth,intk,int r) { inty,i;

(25)

for(i=0;i<=r;i++) { y=sqrt((r*r-(i)*(i))); dpixel(i,y,h,k); } } voiddpixel(intx,inty,inth,int k) { putpixel(x+h,y+k,RED); putpixel(y+h,x+k,RED); putpixel(-y+h,x+k,RED); putpixel(-x+h,y+k,RED); putpixel(-x+h,-y+k,RED); putpixel(-y+h,-x+k,RED); putpixel(y+h,-x+k,RED); putpixel(x+h,-y+k,RED); }

voidcfill(intx,int y, intfcolor, intbcolor) {

int current;

(26)

{ putpixel(x,y,fcolor); cfill(x+1,y,BLUE,RED); cfill(x-1,y,BLUE,RED); cfill(x,y+1,BLUE,RED); cfill(x,y-1,BLUE,RED); } }

(27)
(28)

P

RACTICAL

N

O

.

10

Write a program to fill a circle using Flood Fill Algorithm

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

voiddcircle(inth,intk,int r); voiddpixel(intx,inty,inth,int k);

voidffill(intx,int y, intfcolor, intbcolor); void main() { intgd=DETECT,gm; initgraph(&gd,&gm,""); setbkcolor(YELLOW); dcircle(30,30,27); ffill(30,30,YELLOW,BLACK); getch(); closegraph(); } voiddcircle(inth,intk,int r) { inty,i; for(i=0;i<=r;i++) { y=sqrt((r*r-(i)*(i))); dpixel(i,y,h,k); } }

(29)

voiddpixel(intx,inty,inth,int k) { putpixel(x+h,y+k,RED); putpixel(y+h,x+k,RED); putpixel(-y+h,x+k,RED); putpixel(-x+h,y+k,RED); putpixel(-x+h,-y+k,RED); putpixel(-y+h,-x+k,RED); putpixel(y+h,-x+k,RED); putpixel(x+h,-y+k,RED); }

voidffill(intx,int y, intfcolor, intbcolor) { if(getpixel(x,y)==bcolor) { putpixel(x,y,fcolor); ffill(x+1,y,YELLOW,BLACK); ffill(x-1,y,YELLOW,BLACK); ffill(x,y+1,YELLOW,BLACK); ffill(x,y-1,YELLOW,BLACK); } }

(30)
(31)

P

ROGRAM

N

O

.

11

Write a program for line clipping using cohen Sutherland

algorithm

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

typedef unsigned intoutcode;

enum { TOP=0x1, BOTTOM=0x2, RIGHT=0x4, LEFT=0x8 }; voidlineclip(x0,y0,x1,y1,xwmin,ywmin,xwmax,ywmax ) float x0,y0,x1,y1,xwmin,ywmin,xwmax,ywmax;

{

intgd,gm;

outcode code0,code1,codeout; int accept = 0, done=0;

code0 = calcode(x0,y0,xwmin,ywmin,xwmax,ywmax); code1 = calcode(x1,y1,xwmin,ywmin,xwmax,ywmax); do{ if(!(code0 | code1)) { accept =1 ; done =1; } else

if(code0 & code1) done = 1;

(32)

{

floatx,y;

codeout = code0 ? code0 : code1; if(codeout& TOP) { x = x0 + (x1-x0)*(ywmax-y0)/(y1-y0); y = ywmax; } else if(codeout& BOTTOM) { x = x0 + (x1-x0)*(ywmin-y0)/(y1-y0); y = ywmin; } else if ( codeout& RIGHT) { y = y0+(y1-y0)*(xwmax-x0)/(x1-x0); x = xwmax; } else { y = y0 + (y1-y0)*(xwmin-x0)/(x1-x0); x = xwmin; } if(codeout == code0)

(33)

{ x0 = x; y0 = y; code0=calcode(x0,y0,xwmin,ywmin,xwmax,ywma x); } else { x1 = x; y1 = y; code1 = calcode(x1,y1,xwmin,ywmin,xwmax,ywmax); } } } while( done == 0); if(accept) line(x0,y0,x1,y1); rectangle(xwmin,ywmin,xwmax,ywmax); getch(); } intcalcode (x,y,xwmin,ywmin,xwmax,ywmax) floatx,y,xwmin,ywmin,xwmax,ywmax; { int code =0; if(y>ywmax) code |=TOP;

(34)

else if(x >xwmax) code |= RIGHT; else if ( x<xwmin) code |= LEFT; return(code); } main() { float x2,y2,x1,y1,xwmin,ywmin,xwmax,ywmax; intgd=DETECT,gm; clrscr(); initgraph(&gd,&gm,"e:\\tc\\bgi");

printf("\n\n\tEnter the co-ordinates of Line :"); printf("\n\n\tX1 Y1 : ");

scanf("%f %f",&x1,&y1); printf("\n\n\tX2 Y2 : "); scanf("%f %f",&x2,&y2);

printf("\n\tEnter the co_ordinates of window :\n "); printf("\n\txwmin , ywmin : "); scanf("%f %f",&xwmin,&ywmin); printf("\n\txwmax , ywmax : "); scanf("%f %f",&xwmax,&ywmax); clrscr(); line(x1,y1,x2,y2); rectangle(xwmin,ywmin,xwmax,ywmax); getch();

(35)

clrscr();

lineclip(x1,y1,x2,y2,xwmin,ywmin,xwmax,ywmax ); getch();

closegraph(); }

(36)
(37)

P

RACTICAL

N

O

.

12

Write a program to translate a triangle about the origin

#include<stdio.h> #include<conio.h> #include<graphics.h> #include<process.h> #include<math.h> voidRectAngle(intx,inty,intHeight,int Width); void Translate(intx,inty,intHeight,int Width); void main()

{

intgd=DETECT,gm; intx,y,Height,Width; initgraph(&gd,&gm," ");

printf("Enter the First point for the Rectangle:"); scanf("%d%d",&x,&y);

printf("Enter the Height&Width for the Rectangle:"); scanf("%d%d",&Height,&Width);

RectAngle(x,y,Height,Width); getch();

cleardevice();

(38)

} voidRectAngle(intx,inty,intHeight,int Width) { line(x,y,x+Width,y); line(x,y,x,y+Height); line(x+Width,y,x+Width,y+Height); line(x,y+Height,x+Width,y+Height); }

void Translate(intx,inty,intHeight,int Width) {

intNewx,Newy,a,b;

printf("Enter the Transaction coordinates"); scanf("%d%d",&Newx,&Newy); cleardevice(); a=x+Newx; b=y+Newy; RectAngle(a,b,Height,Width); }

(39)
(40)

P

RACTICAL

N

O

.

13

Write a program to scale a triangle about a fixed point

taken as one of the vertex of the triangle

#include<stdio.h> #include<conio.h> #include<graphics.h> void main() { int x1,y1,x2,y2,x3,y3,x4,y4; intsx,sy; int poly[8]; intgd=DETECT,gm; initgraph(&gd,&gm,""); cleardevice();

printf("Enter the first coordinates of triangle: "); scanf("%d%d",&x1,&y1);

printf("Enter the second coordinates of triangle: "); scanf("%d%d",&x2,&y2);

printf("Enter the third coordinates of triangle: "); scanf("%d%d",&x3,&y3); poly[0]=x1; poly[1]=y1; poly[2]=x2; poly[3]=y2; poly[4]=x3; poly[5]=y3; poly[6]=x1; poly[7]=y1; cleardevice(); drawpoly(4,poly); getch();

(41)

scanf("%d%d",&sx,&sy); x4=sx*x1-x1; y4=sy*y1-y1; x1=sx*x1-x4; y1=sy*y1-y4; x2=sx*x2-x4; y2=sy*y2-y4; x3=sx*x3-x4; y3=sy*y3-y4; poly[0]=x1; poly[1]=y1; poly[2]=x2; poly[3]=y2; poly[4]=x3; poly[5]=y3; poly[6]=x1; poly[7]=y1; getch(); cleardevice(); drawpoly(4,poly);2 getch(); closegraph(); }

(42)

O

UTPUT

(43)

Program No. 14

Write a program to rotate a triangle about a fixed point

taken as one of the vertex of the triangle

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

void TriAngle(int x1,int y1,int x2,int y2,int x3,int y3); void Rotate(int x1,int y1,int x2,int y2,int x3,int y3); void main()

{

intgd=DETECT,gm;

int x1,y1,x2,y2,x3,y3; 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); TriAngle(x1,y1,x2,y2,x3,y3); getch(); cleardevice(); Rotate(x1,y1,x2,y2,x3,y3); setcolor(5); TriAngle(x1,y1,x2,y2,x3,y3); getch(); }

(44)

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

void Rotate(int x1,int y1,int x2,int y2,int x3,int y3) {

int x,y,a1,b1,a2,b2,a3,b3; float Angle;

printf("Enter the angle for rotation: "); scanf("%f",&Angle); cleardevice(); Angle=(Angle*3.14)/180; a1=x2+(x1-x2)*cos(Angle)-(y1-y2)*sin(Angle); b1=y2+(x1-x2)*sin(Angle)+(y1-y2)*cos(Angle); a2=x2+(x2-x2)*cos(Angle)-(y2-y2)*sin(Angle); b2=y2+(x2-x2)*sin(Angle)+(y2-y2)*cos(Angle); a3=x2+(x3-x2)*cos(Angle)-(y3-y2)*sin(Angle); b3=y2+(x3-x2)*sin(Angle)+(y3-y2)*cos(Angle); printf("Rotated: "); TriAngle(a1,b1,a2,b2,a3,b3); }

(45)
(46)

References

Related documents

The shaded boxes below illustrate the complete SAS program used to import the two necessary databases, merge the databases together, ensure the attachments and their

The objectives of this study were: (1) to survey the Republican River Valley and selected tributaries in Nebraska for potentially rare plant species (as listed by the

Sep 1, 2015 - This year, the nisse is coming early to Oregon Coast Community College, where a busy fall term brings gifts aplenty to our students and the communities we serve

Also in 2012, the Department of Broadcasting, Telecommunications, and Mass Media changed its name to Media Studies and Production while the Department of Strategic Communication

relationship during its life in their desired way (e.g. controlling the supplier’s performance based on the contractual agreements or building mixed project teams with

یو نع م تب قارم ه ب تب س ن نار اتسرپ ش رگ ن ي سر رب افلآ( ینورد یگتسبمه ی ) خابنورک 8 / 2 بسک زا سپ همانشسرپ .دیدرگ هبساحم رارق شهوژپ دروم یاهدحاو

Attach your Two recent Passport Size Photographs, Attested copy of CNIC, Domicile (Copy), Education Certificates (Copy), Experience Certificates (Copy) and Original Bank

The set of indicators available in the dataset (for details, see Annex 4) is broadly organised around three topics: (1) inputs and output of the production function, including