Computer Graphics File
Computer Graphics File
Computer Graphics File
Lab Manual
a) Write a program for 2D line drawing as Raster Graphics Display. b) Write a program for circle drawing as Raster Graphics Display. c) Write a program for Polygon filling as Raster Graphics Display. d) Write a program for Line Clipping. e) Write a program for Polygon Clipping. f) Write a program for displaying 3D objects as 2D display using perspective transformation. g) Write a program for rotation of a 3D objects about arbitrary axis. h) Write a program for Hidden surface removal from a 3D objects.
a) User Interface -: Most application that run on personal computer and workstations have user interfaces that rely on desktop window system to manage multiple simultaneous activities , and point and click facilities to allow user to select menu items and other things. b) Interactive plotting in business science and technology -: Computer graphics provide facilities to create 2D and 3D graphs of mathematical, Physical and Economical functions; histograms , bar and pie charts; task scheduling charts; inventory and production charts ; and the like. Office Automation and Electronics Publishing -: Office automation and electronic publishing can produce both traditional and printed (hardcopy) documents and electronic (softcopy) documents that contain text, tables, graphs and other form of drawn or scanned graphics. d) Computer Aided Design -: In computer Aided Design (CAD), interactive graphics is used to design Components and systems of mechanical, electrical , electromechanical, and electronic devices including structures such as buildings , automobile bodies , aero plane and ship hulls , very large scale integration chips , optical system , and telephone and computer networks. e) Simulation and animation for scientific
visualization and entertainment -: Computer produced animated movies and displays of the time-varying behavior of real and simulated objects and become increasingly popular for scientific and engineering visualization. f) Art and Commerce -: Computer graphics is used to produce pictures that express a message and attract attention. Slide production for commercial , Scientific or educational presentation is another coast effective use of graphics.
g) Process Control -: whereas flight simulators or arcade games let users interact with a simulation of a real or artificial world, Many other application enable people ton interact with some aspect of the real world itself.
h) Cartography -: Computer graphics is used to produce both accurate and schematic representation of geographical and other natural phenomena from measuring data.
b) Hardware requirement
Intel Pentium III800 MHz Processor Intel chipset 810 Motherboard 14 colour Monitor Mouse Keyboard 2GB HDD 256 MB RAM
4. List of Experiments
h) write a program to rotate a Circle around any arbitrary point or around the boundary of another
circle. i) write a menu driven program to rotate, scale and translate a line point, square, triangle about the origin.
1) INITGRAPH
Initializes the graphics system.
Declaration
Remarks
Initgraph initializes the graphic system by loading a graphics driver from disk (or validating a registered driver) then putting the system into graphics mode.
Initgraph also resets all graphics settings (color, palette, current position, viewport, etc) to their defaults then resets graph.
3) GETPIXEL, PUTPIXEL
Decleration
Remarks
Return value
4) CLOSE GRAPH
Shuts down the graphic system.
Decleration
Remarks
It then restores the screen to the mode it was in before you called initgraph.
Return value
None.
Decleration
Void far arc(int x, int y, int stangle, int endangle, int radius);
Void far pieslice(int x, int y, int stangle, int endangle, int radius);
Remarks
Pieslice draws a pieslice in the current drawing color, then fills it using the current fill pattern and fill color.
Decleration
Void far ellipse(int x, int y, int stangle, int endangle, int xradius, int yradius)
Void farsectoe(int x, int y, int stangle, int endangle, int xradius, int yradius)
Remarks
Fillellipse draws an elliptical arc in the current drawing color and than fills it with fill color and fill
pattern. Sector draws an elliptical pie slice in the current drawing color and than fills it using the pattern and color defined by setfillstyle or setfillpattern.
7) FLOODFILL
Flood-fills a bounded region.
Decleration
Remarks
The area bounded by the color border is flooded with the current fill pattern and fill color.
If the seed is within an enclosed area, the inside will be filled. If the seed is outside the enclosed area, the exterior will be filled. Floodfill doesnot work with the IBM-8514 driver. Use fillpoly instead of floodfill wherever possible so you can maintain code compatibility with future versions.
Return value
8) GETCOLOR, SETCOLOR
Setcolor returns the current drawing color. Getcolor returns the current drawing color.
Decleration
Remarks
Setcolor sets the current drawing color to color, which can range from 0 to getmaxcolor.
To set a drawing color with setcolor , you can pass either the color number or the equivalent color name.
9) LINE,LINEREL,LINETO
Linrto draws a line from the current position (CP) to(x,y). Onerel draws a line relative distance from current position(CP). Line draws a line between two specified pints.
Decleration
Remarks Lineto draws a line from the CP to (x, y), then moves the CP to (x,y). Linerel draws a line from the CP to a point that is relative distance (dx, dy) from the CP, then advances the CP by (dx, dy). Line draws a line from (x1, y1) to (x2, y2) using the current color, line style and thickness. It does not update the current position (CP).
Return value
None
10)RECTANGLE
Decleration Void far rectangle(int left, int top, int right, int bottom) Draws a rectangle in graphics mode.
Remarks
It draws a rectangle in the current line style, thickness and drawing color.
(left, top) is the upper left corner of the rectangle, and (right, bottom) is its lower right corner.
Return value
None.
1. Start.
4. Input the two line end-points and store the left end-points in (x1,y1).
5. Load (x1,y1) into the frame buffer; that is, plot the first point put x=x1,y=y1.
6. Calculate dx=x2-x1 and dy=y2-y1,and obtain the initial value of decision parameter p as:
a. p=(2dy-dx).
13. Stop.
BRESENHAMS ALGORITHM.
initgraph(&gdriver,&gmode,"C:\\tc\\BGI:"); printf("\nEnter the x-coordinate of the first point ::"); scanf("%d",&x1); printf("\nEnter the y-coordinate of the first point ::"); scanf("%d",&y1); printf("\nEnter the x-coordinate of the second point ::"); scanf("%d",&x2);
dy=y2-y1;
if(p<0)
x=x+1;
p=2*x-dx;
else
putpixel(x,y,7);
getch(); closegraph();
OUTPUT
1. Start.
2. Declare variables x,y,x1,y1,x2,y2,k,dx,dy,s,xi,yi and also declare gdriver=DETECT,gmode. 3. Initialise the graphic mode with the path location in TC folder.
4. Input the two line end-points and store the left end-points in (x1,y1).
5. Load (x1,y1) into the frame buffer;that is,plot the first point.put x=x1,y=y1.
8. Otherwise s= abs(dy).
10. Start from k=0 and continuing till k<s,the points will be
i. x=x+xi.
ii. y=y+yi.
13. Stop.
initgraph(&gdriver,&gmode,"C:\\tc\\bgi:"); printf("enter first point"); scanf("%d%d",&x1,&y1); printf("enter second point"); scanf("%d%d",&x2,&y2); x=x1; y=y1; putpixel(x,y,7); dx=x2-x1; dy=y2-y1; if(abs(dx)>abs(dy))
s=abs(dx);
else
s=abs(dy); xi=dx/s;
putpixel(x,y,7); for(k=0;k<s;k++)
getch(); closegraph();
OUTPUT
1. Start.
7. If (p>0),do p=p+2*(x-y)+1.
9. Then calculate the value of the function circlepoints() with p.arameters (x,y).
10. Place pixels using putpixel at points (x+300,y+300) in specified colour in circlepoints() function shifting the origin to 300 on both x-axis and y-axis. 11. Close Graph.
12. Stop.
int x,y,p,r;
int gdriver=DETECT,gmode; initgraph(&gdriver,&gmode,"C:\\tc\\bgi:"); clrscr(); printf("enter the radius"); scanf("%d",&r); x=0;y=r;p=1-r; while(x<y) {
x++; if(p>0)
p=p+2*(x-y)+1; y--;
else
p=p+2*x+1; circlepoints(x,y); }
getch(); closegraph();
OUTPUT
1. Start.
3. Get the input of radius of major and minor arc from the user.
6. Calculate decision parameter P = (square of minor axis (square of major axis*minor axis) + (0.25* square of major axis). 7. Put the pixels symmetrically at = (0, length of minor axis).
8. while (2*(square of minor axis*x)<=2*(square of major axis*y)), repeat steps 9 to step 17.
9. increment x axis by 1.
10. If P < 0
11. new P = (P+( square of minor axis* square of major axis)+ square of major axis)
12. Else
13. new P = (P+( square of minor axis*x axis)-(2*square of major axis*y axis)+ square of minor axis).
14. Decrement y by 1.
18. This will give us ellipse only across minor axis now to draw an ellipse across major axis we proceed further.
st
quadrant.
22. Decision parameter P1 = ((square of minor axis*e)+( square of major axis*f)-( square of minor axis* square of major axis). 23. While y axis != 0 repeat steps 24 to step 32.
24. If P1>0
25. New P1 = (P1+ square of major axis-(2* square of major axis*x axis)).
26. Else
27. New P1 = (P1+(2*square of minor axis*(x axis+1))-(2* square of major axis*(y axis1))+square of major axis). 28. Increment x axis by 1.
34. Stop.
DRAWING ALGORITHM.
float s,k,e,f,x; double p1,p2; s=r;k=g; e=(pow((s+.5),2)); f=(pow((k-1),2)); p2=((u*e)+(v*f)-(u*v)); ellips(s,k); while(k>=0)
p2=(p2+(2*u*(s+1))-(2*v*(k-1))+v); s++; }
k--; ellips(s,k); }
void main()
long u,v,p1; initgraph(&gdriver,&gmode,"C:\\tc\\bgi::"); printf("\n enter the length of major axis:"); scanf("\t%d",&a); printf("\n enter the length of minor axis:"); scanf("\t%d",&b);
x=0; y=b;
x++; if(p1<0)
p1=(p1+(2*u*v)+v);
else
p1=(p1+(2*u*x)-(2*v*y)+u); y--; }
ellips(x,y);
completellipse(x,y,u,v); getch();
closegraph();
OUTPUT
1. Start.
3. Get the input of window co ordinates from the user and draw a window.
4. Get the input of line co ordinates from user and draw the line.
5. Calculate the region code of each end point of line using relation given in steps 6 to step
6. Let (x,y) be the co ordinates of end point of line and (xmin,ymin), (xmax,ymax) be co ordinates of world window 7. If y ymax = +ve
23. Else.
35. Stop.
int gdriver=DETECT,gmode;
printf("output"); printf("\n");
printf("enter the value of x1,y1,x2,y2:__>"); scanf("%d%d%d%d",&x1,&y1,&x2,&y2); printf("enter the value of xmax,ymax,xmin,ymin:"); scanf("%d%d%d%d",&xmax,&ymax,&xmin,&ymin); storepoints(x2,y2,ymin,ymax,xmax,xmin,b);
for(i=1;i<=4;i++)
flag=0;
if(flag==1)
if(a[1]==1)
yi1=ymax; xi1=x1+((1/m)*(yi1-y1));
else
if(a[2]==1)
yi1=ymin; xi1=x1+((1/m)*(yi1-y1));
if(a[3]==1)
xi1=xmax; yi1=y1+(m*(xi1-x1)); }
if(a[4]==1)
xi1=xmin; yi1=y1+(m*(xi1-x1)); }
else
if(b[1]==1)
yi2=ymax; xi2=x2+((1/m)*(yi2-y2));
else
if(b[2]==1)
yi2=ymin; xi2=x2+((1/m)*(yi2-y2));
else
if(b[3]==1)
xi2=xmax; yi2=y2+((1/m)*(xi2-x2));
else
if(b[4]==1)
xi2=xmin; yi2=y2+(m*(xi2-x2)); }
if(flag==0)
getch(); closegraph();
c[2]=0; if((x1-xmax)>0)
c[3]=1;
else
c[4]=0;
OUTPUT
clrscr();
c[i][j]+=a[i][k]*b[k][j];
x1=(c[i][j]+0.5); a[i][j]=x1; }
getch(); closegraph();
OUTPUT
cout<<"Enter the first coordinates of triangle\n"; cin>>x1>>y1; cout<<"Enter the second coordinates of triangle\n"; cin>>x2>>y2; cout<<"Enter the third coordinates of triangle\n"; cin>>x3>>y3; int poly[8]={x1,y1,x2,y2,x3,y3,x1,y1}; cleardevice(); drawpoly(4,poly); getch(); cout<<"Enter the scaling factors\n"; cin>>sx>>sy;
x4=sx*x1-x1; y4=sy*y1-y1;
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); getch(); closegraph();
OUTPUT
void main()
clrscr();
int x,y,x1,y1,x2,y2,x3,y3;
cout<<"\n
cin>>x2>>y2;
cout<<"\n
cin>>x3>>y3;
x1-=x;
y1-=y;
x2-=x;
y2-=y;
x3-=x;
y3-=y;
OUTPUT
clrscr();
cout<<" OUTPUT"<<endl;
cout<<"Enter the coordinates of point around which rotation is done"<<endl; cin>>h>>k; putpixel(h,k,2);
putpixel(x3,y3,2);
getch(); closegraph();
OUTPUT
clrscr();
cout<<" OUTPUT"<<endl;
getch(); closegraph();
OUTPUT
clrscr();
cout<<"\n Enter 1. for reflection in x-axis:\n"; cout<<"\n Enter 2. for reflection in y-axis:\n"; cout<<"\n Enter 3. for reflection in both the axis:\n"; cin>>x;
break;
line(320,0,320,479);
break;
break;
getch(); closegraph();
OUTPUT