Você está na página 1de 17

PROGRAM:

#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
void main()
{
int menu=0;
int gdriver = DETECT, gmode, errorcode;
int maxx, maxy;

int midx, midy, xradius, yradius;


int left,top,right,bottom;
initgraph(&gdriver, &gmode, "");
printf(" Gdriver %d - VGA, Gmode %d \n", gdriver, gmode);
setcolor(RED);
while(menu<=8)
{
printf("\n\nMenu : ");
printf("\n 1.Line ");
printf("\n 2.Circle ");
printf("\n 3.Ellipse ");
printf("\n 4.Arc ");
printf("\n 5.Rectangle ");
printf("\n 6.Pieslice ");
printf("\n 7.Bar3D ");
printf("\n 8.Exit");
printf("\n\n\n Enter your Choice : ");
scanf("%d", &menu);
clrscr();
switch(menu)
{
case 1: line(0,0,getmaxx()/2, getmaxy()/2);
break;
case 2: circle(getmaxx()/2,getmaxy()/2, 15);
break;
case 3: ellipse(getmaxx()/2, getmaxy()/2, 0,360,30,15);
break;
case 4: arc(getmaxx()/2, getmaxy()/2, 0,180,15);
break;
case 5: rectangle(220,70,140,300);
break;
case 6: setbkcolor(RED);
setfillstyle(2, getmaxcolor());
pieslice(200, 200, 50, 250, 70);
break;
case 7: bar3d(150, 200, 300, 350, 10, 1);
break;
case 8: exit(0);
}
}
getch();
closegraph();

}
OUTPUT:
PROGRAM:

/* Pie-Chart */
#include <stdio.h>
#include <graphics.h>
#include <stdlib.h>
#include <conio.h>
void main()
{
int gdriver=DETECT,gmode;
int w,c,m;
float div;
initgraph(&gdriver,&gmode,"");
printf("\nEnter the women numbers : ");
scanf("%d",&w);
printf("\nEnter the child numbers : ");
scanf("%d",&c);
printf("\nEnter the men numbers : ");
scanf("%d",&m);
cleardevice();
div=360.0/(w+c+m);
setcolor(2);
setfillstyle(SOLID_FILL,2);
pieslice(getmaxx()/2,getmaxy()/2,0,div*w,100);
setcolor(4);
outtextxy(getmaxx()/2-10,getmaxy()/2-50,"woman");
setfillstyle(LINE_FILL,4);
pieslice(getmaxx()/2,getmaxy()/2,div*w,div*(w+c),100);
setcolor(5);
outtextxy(getmaxx()/2-50,getmaxy()/2+20,"child");
setfillstyle(SLASH_FILL,5);
pieslice(getmaxx()/2,getmaxy()/2,div*(w+c),div*(w+c+m),100);
setcolor(2);
outtextxy(getmaxx()/2+50,getmaxy()/2+20,"men");
line(20,470,20,300);
line(2,460,500,460);
rectangle(30,460,60,350);
getch();
closegraph();
}
OUTPUT:
PROGRAM:

#include<stdio.h>
#include<conio.h>
#include<graphics.h>
#include<stdlib.h>
void main()
{
int gd=DETECT,gm,err;
float x1,y1,x2,y2,dx,dy,c,x,y,i;
initgraph(&gd,&gm,"");
printf("Enter the pair of vertices : ");
scanf("%f %f %f %f",&x1,&y1,&x2,&y2);
dx=abs(x2-x1);
dy=abs(y2-y1);
if(dx>dy)
c=abs(dx);
else
c=abs(dy);
dx=(x2-x1)/c;
dy=(y2-y1)/c;
x=x1;y=y1;
putpixel(x,y,2);
for(i=0;i<x2||i<y2;i++)
{
x=x+dx;
y=y+dy;
putpixel(x,y,2);
}
getch();
closegraph();
}

OUTPUT:
PROGRAM:

/* Bres Line Drawing Algo */


#include <stdio.h>
#include <graphics.h>
#include <conio.h>
void main()
{
int x1,y1,x2,y2,dx,dy,x,y;
int gk,gd=DETECT,gm,count,a,b;
clrscr();
printf("\nEnter the first points :");
scanf("%d%d",&x1,&y1);
printf("\nEnter the second points :");
scanf("%d%d",&x2,&y2);
initgraph(&gd,&gm,"");
dx=abs(x2-x1);
dy=abs(y2-y1);
x=x1;
y=y1;
if(x1<x2)
a=1;
else
a=-1;
if(y1<y2)
b=1;
else
b=-1;
line(x1,y1,x2,y2);
putpixel(x1,y1,GREEN);
if(dx>=dy)
{
gk=2*dy-dx;
count=dx;
outtextxy(x1,y1,"Slope less than 1");
while(count>=0)
{
x=x+a;
if(gk<0)
gk=gk+2*dy;
else
{
gk=gk+2*(dy-dx);
y+=b;
}
putpixel(x,y,GREEN);
delay(30);
count--;
}
}
else
{
gk=2*dx-dy;
outtextxy(x2+2,y2+2,"Slope greater than 1");
count=dy;
while(count>=0)
{
y=y+b;
if(gk<0)
gk=gk+2*dx;
else
{
gk=gk+2*(dx-dy);
x+=a;
}
putpixel(x,y,GREEN);
delay(30);
count--;
}
}
getch();
closegraph();
}

OUTPUT:

Enter the :55 66


Enter the :200 200
PROGRAM:

#include<stdio.h>
#include<graphics.h>
#include<conio.h>
#include<math.h>
#include<dos.h>
void main()
{
int gdriver=DETECT,gmode,err;
float xt,st,ct,xp,yp,dt,x,y,r;
initgraph(&gdriver,&gmode,"");
printf("Enter the radius of circle: ");
scanf("%f",&r);
setbkcolor(WHITE);
setcolor(YELLOW);
xp=getmaxx()/2;yp=getmaxy()/2;
dt=1.0/r;
st=sin(dt*3.14/180);
ct=cos(dt*3.14/180);
x=0;y=r;
while(y>=x)
{
putpixel(xp+x,yp+y,RED);
putpixel(xp+x,yp-y,RED);
putpixel(xp-x,yp+y,RED);
putpixel(xp-x,yp-y,RED);
putpixel(xp+y,yp+x,RED);
putpixel(xp+y,yp-x,RED);
putpixel(xp-y,yp+x,RED);
putpixel(xp-y,yp-x,RED);
xt=x;
x=x*ct-y*st;
y=y*ct+xt*st;
delay(0);
}
getch();
closegraph();
}
OUTPUT:
PROGRAM:

#include <stdio.h>
#include <graphics.h>
#include <stdlib.h>
#include <conio.h>
int xmin,xmax,ymin,ymax;
void main()
{
int gdriver=DETECT,gmode;
int x1,y1,x2,y2,x3,y3,count=0,x,x4,y4,code1[4],code2[4];
float t;
void codegen(int,int,int[]);
int retcode(int[]);
clrscr();
printf("\nEnter the clipping boundaries : \nXmin : ");
scanf("%d",&xmin);
printf("Xmax : ");
scanf("%d",&xmax);
printf("Ymin : ");
scanf("%d",&ymin);
printf("Ymax : ");
scanf("%d",&ymax);
printf("\nEnter the starting points : ");
scanf("%d%d",&x1,&y1);
printf("\nEnter the ending points : ");
scanf("%d%d",&x2,&y2);
codegen(x1,y1,code1);
codegen(x2,y2,code2);
x3=x1;y3=y1;x4=x2;y4=y2;
while((x=retcode(code1))!=4 && count<2)
{
switch(x)
{
case 0: y3=ymax;break;
case 1: y3=ymin;break;
case 2: x3=xmax;break;
case 3: x3=xmin;
}
if(x<2)
{
t=(y3-y1)/(float)(y2-y1);
x3=x1+t*(x2-x1);
}
else
{
t=(x3-x1)/(float)(x2-x1);
y3=y1+t*(y2-y1);
}
codegen(x3,y3,code1);
}
if(count<2)
{
while((x=retcode(code2))!=4 && count<4)
{
switch(x)
{
case 0: y4=ymax;break;
case 1: y4=ymin;break;
case 2: x4=xmax;break;
case 3: x4=xmin;
}
if(x<2)
{
t=(y4-y1)/(float)(y2-y1);
x4=x1+t*(x2-x1);
}
else
{
t=(x4-x1)/(float)(x2-x1);
y4=y1+t*(y2-y1);
}
count++;
codegen(x4,y4,code2);
}
if(count<4)
{
initgraph(&gdriver,&gmode,"");
line(x3,y3,x4,y4);
rectangle(xmin,ymax,xmax,ymin);
}
else
printf("\nThe line is completly outside ");
}
else
printf("\nThe line is completly outside ");
getch();
closegraph();
}
void codegen(int a,int b,int cod[])
{
cod[0]=(b<=ymax)?0:1;
cod[1]=(b<ymin)?1:0;
cod[2]=(a<=xmax)?0:1;
cod[3]=(a<xmin)?1:0;
}
int retcode(int cod[])
{
int i;
for(i=0;i<4;i++)
if(cod[i]==1)
break;
return i;
}
OUTPUT:
PROGRAM:

/* Liang Barsky’s Line Clipping */


#include<stdio.h>
#include<conio.h>
#include<graphics.h>
void main()
{
int gd=DETECT,gm;
int x1=0,y1=0,x2=0,y2=0,xa,ya,xb,yb,xmin,ymin,xmax,ymax,i;
float p[4],testvalue=1,q[4],r,u1=0.0,u2=1.0;
clrscr();
initgraph(&gd,&gm,"");
printf("Enter the window coordinates:");
scanf("%d%d%d%d",&xmin,&ymin,&xmax,&ymax);
printf("Enter the line end points:");
scanf("%d%d%d%d",&xa,&ya,&xb,&yb);
rectangle(xmin,ymin,xmax,ymax);
p[0]=xa-xb; q[0]=xa-xmin;
p[1]=xb-xa; q[1]=xmax-xa;
p[2]=ya-yb; q[2]=ya-ymin;
p[3]=yb-ya; q[3]=ymax-ya;
for(i=0;i<4;i++)
{
if(p[i]<0.0)
{
r=(float)(q[i]/p[i]);
if(r>u1)
u1=r;
}
if(p[i]>0.0)
{
r=(float)(q[i]/p[i]);
if(r<u2)
u2=r;
}
if(p[i]==0.0&&q[i]<=0)
testvalue=0;
}
if(testvalue==1)
if(u1<=u2)
{
x1=xa+(u1*(xb-xa));
y1=ya+(u1*(yb-ya));
x2=xa+(u2*(xb-xa));
y2=ya+(u2*(yb-ya));
line(x1,y1,x2,y2);
}
else
printf("\n\tINVISIBLE LINE\n");
else
printf("\n\tINVISIBLE LINE\n");
getch();
closegraph();
}

OUTPUT:
PROGRAM:

#include<stdio.h>
#include<conio.h>
#include<graphics.h>
#include<math.h>
void li(int,int,int,int,int,int);
void main() {
int gdrive=DETECT,gmode,menu,x,y,x5,y5,x1,x2,x3,x4,y1,y2,y3,y4,tx,ty;
float a;
initgraph(&gdrive,&gmode,"");
while(menu!=5) {
printf("\n1.Translation\n2.Rotation\n3.Scaling\n4.Reflection\n5.Exit");
printf("\nEnter your choice : ");
scanf("%d",&menu);
switch(menu) {
case 1:
printf("\nEnter first point:");
scanf("%d%d",&x1,&y1);
printf("Enter second point:");
scanf("%d%d",&x2,&y2);
printf("Enter third point:");
scanf("%d%d",&x,&y);
li(x1,x2,x,y1,y2,y);
printf("\nEnter Translation point:");
scanf("%d%d",&tx,&ty);
x3=x1+tx;y3=y1+ty;
x4=x2+tx;y4=y2+ty;
x5=x+tx;y5=y+ty;
setcolor(RED);
li(x3,x4,x5,y3,y4,y5);
break;
case 2:
printf("\nEnter first point:");
scanf("%d%d",&x1,&y1);
printf("Enter second point:");
scanf("%d%d",&x2,&y2);
printf("Enter third point:");
scanf("%d%d",&x,&y);
li(x1,x2,x,y1,y2,y);
printf("\nEnter angle:");
scanf("%f",&a);
a=a*3.14/180;
x3=x1*cos(a)-y1*sin(a);
y3=x1*sin(a)+y1*cos(a);
x4=x2*cos(a)-y2*sin(a);
y4=x2*sin(a)+y2*cos(a);
x5=x*cos(a)-y*sin(a);
y5=x*sin(a)+y*cos(a);
setcolor(RED);
li(x3,x4,x5,y3,y4,y5);
break;

case 3:
printf("\nEnter first point:");
scanf("%d%d",&x1,&y1);
printf("\nEnter second point:");
scanf("%d%d",&x2,&y2);
printf("Enter third point:");
scanf("%d%d",&x,&y);
li(x1,x2,x,y1,y2,y);
printf("Enter scaling factor:");
scanf("%d%d",&tx,&ty);
x3=x1*tx;y3=y1*ty;
x4=x2*tx;y4=y2*ty;
x5=x*tx;y5=y*ty;
setcolor(RED);
li(x3,x4,x5,y3,y4,y5);
break;

case 4:
line(getmaxx()/2,0,getmaxx()/2,getmaxy());
line(0,getmaxy()/2,getmaxx(),getmaxy()/2);
printf("\nEnter first point:");
scanf("%d%d",&x1,&y1);
printf("Enter second point:");
scanf("%d%d",&x2,&y2);
printf("Enter third point:");
scanf("%d%d",&x,&y);
li(x1+getmaxx()/2,x2+getmaxx()/2,x+getmaxx()/2,y1,y2,y);
li(x1,x2,x,y1,y2,y);
break;

case 5:
exit(0);
}
}
getch();
closegraph();
}
void li(int x1,int x2,int x,int y1,int y2,int y) {
line(x1,y1,x2,y2);
line(x2,y2,x,y);
line(x,y,x1,y1);
}
OUTPUT:

Você também pode gostar