Professional Documents
Culture Documents
To Print
To Print
Code:
// midpoint
#include<stdio.h>
#include<conio.h>
#include<math.h>
#include<graphics.h>
#include<dos.h>
void main()
float p;
printf("Enter radius");
scanf("%d", &r);
p = (5/4)-r;
x = 0;
y= r;
while(x <= y)
if(p<0)
x=x+1;
p= p+2*x+3;
}
else
x=x+1;
y=y-1;
p=p+2*(x-y)+5;
delay(100);
getch();
Input:
300
Enter radius80
Output:
2
Code:
//Breshan circle
#include<stdio.h>
#include<conio.h>
#include<math.h>
#include<graphics.h>
#include<dos.h>
void main()
float p;
printf("Enter radius");
scanf("%d", &r);
p = 3-2*r;
x = 0;
y= r;
while(x <= y)
if(p<0)
x=x+1;
p= p+4*x+6;
}
else
x=x+1;
y=y-1;
p=p+4*(x-y)+10;
delay(100);
getch();
Input:
300
Enter radius80
Output:
3
Code:
//boundary fill
#include<stdio.h>
#include<conio.h>
#include<math.h>
#include<graphics.h>
#include<dos.h>
putpixel(sx,sy,fc);
bound_fill(sx+1,sy,fc,bc);
bound_fill(sx,sy+1,fc,bc);
bound_fill(sx,sy-1,fc,bc);
bound_fill(sx-1,sy,fc,bc);
void main()
int gd=DETECT,gm;
initgraph(&gd,&gm,"c:\\TURBOC3\\BGI");
setcolor(WHITE);
circle(300,200,20);
putpixel(302,205,4);
delay(1000);
bound_fill(300,200,GREEN,WHITE);
getch();
}
Output:
4
Code:
// flood fill
#include<stdio.h>
#include<conio.h>
#include<math.h>
#include<graphics.h>
#include<dos.h>
void main()
setcolor(BLUE);
setcolor(RED);
setcolor(WHITE);
getch();
Output:
5
Code:
//2d rotation
#include<stdio.h>
#include<conio.h>
#include<math.h>
#include<graphics.h>
#include<dos.h>
void main()
int gd=DETECT,gm,i,j,k;
int a[3][3];
float b[3][3],r[3][3],p,t;
initgraph(&gd,&gm,"c:\\TURBOC3\\BGI");
scanf("%d%d",&a[0][0],&a[1][0]);
scanf("%d%d",&a[0][1],&a[1][1]);
scanf("%d%d",&a[0][2],&a[1][2]);
a[2][0]=a[2][1]=a[2][2]=1;
printf("Matrix:\n");
for(i=0;i<3;i++){
for(j=0;j<3;j++){
printf("\t%d",a[i][j]);
}
printf("\n");
line(a[0][0],a[1][0],a[0][1],a[1][1]);
line(a[0][1],a[1][1],a[0][2],a[1][2]);
line(a[0][2],a[1][2],a[0][0],a[1][0]);
scanf("%f",&t);
p=(float) (3.14/180)*t;
b[0][0]=cos(p);
b[0][1]=-sin(p);
b[1][0]=sin(p);
b[1][1]=cos(p);
b[0][2]=b[1][2]=b[2][0]=b[2][1]=0.0;
b[2][2]=1.0;
for(i=0;i<3;i++){
for(k=0;k<3;k++){
r[i][k]=0.0;
for(j=0;j<3;j++){
r[i][k]+=b[i][j]*a[j][k];
}
printf("Matrix:\n");
for(i=0;i<3;i++){
for(j=0;j<3;j++){
printf("\n");
line(floor(r[0][0]+0.5),floor(r[1][0]+0.5),floor(r[0][1]+0.5),floor(r[1][1]+0.5));
line(floor(r[0][1]+0.5),floor(r[1][1]+0.5),floor(r[0][2]+0.5),floor(r[1][2]+0.5));
line(floor(r[0][2]+0.5),floor(r[1][2]+0.5),floor(r[0][0]+0.5),floor(r[1][0]+0.5));
getch();
Input:
300
100
300
200
400
200
10
Output:
6
Code:
//2d scaling
#include<stdio.h>
#include<conio.h>
#include<math.h>
#include<graphics.h>
#include<dos.h>
void main()
int gd=DETECT,gm,i,j,k;
int a[3][3];
float b[3][3],r[3][3],sx,sy;
initgraph(&gd,&gm,"c:\\TURBOC3\\BGI");
scanf("%d%d",&a[0][0],&a[1][0]);
scanf("%d%d",&a[0][1],&a[1][1]);
scanf("%d%d",&a[0][2],&a[1][2]);
a[2][0]=a[2][1]=a[2][2]=1;
printf("Matrix:\n");
for(i=0;i<3;i++){
for(j=0;j<3;j++){
printf("\t%d",a[i][j]);
}
printf("\n");
line(a[0][0],a[1][0],a[0][1],a[1][1]);
line(a[0][1],a[1][1],a[0][2],a[1][2]);
line(a[0][2],a[1][2],a[0][0],a[1][0]);
scanf("%f",&sx);
scanf("%f",&sy);
b[0][0]=sx;
b[0][1]=0;
b[1][0]=0;
b[1][1]=sy;
b[0][2]=b[1][2]=b[2][0]=b[2][1]=0.0;
b[2][2]=1.0;
for(i=0;i<3;i++){
for(k=0;k<3;k++){
r[i][k]=0.0;
for(j=0;j<3;j++){
r[i][k]+=b[i][j]*a[j][k];
}
}
printf("Matrix:\n");
for(i=0;i<3;i++){
for(j=0;j<3;j++){
printf("\n");
line(floor(r[0][0]+0.5),floor(r[1][0]+0.5),floor(r[0][1]+0.5),floor(r[1][1]+0.5));
line(floor(r[0][1]+0.5),floor(r[1][1]+0.5),floor(r[0][2]+0.5),floor(r[1][2]+0.5));
line(floor(r[0][2]+0.5),floor(r[1][2]+0.5),floor(r[0][0]+0.5),floor(r[1][0]+0.5));
getch();
Input:
50
100
50
200
200
200
Output:
7
Code:
//2d reflection
#include<stdio.h>
#include<conio.h>
#include<math.h>
#include<graphics.h>
#include<dos.h>
void main()
int gd=DETECT,gm,i,j,k;
int a[3][3];
float b[3][3],r[3][3];
initgraph(&gd,&gm,"c:\\TURBOC3\\BGI");
scanf("%d%d",&a[0][0],&a[1][0]);
scanf("%d%d",&a[0][1],&a[1][1]);
scanf("%d%d",&a[0][2],&a[1][2]);
a[2][0]=a[2][1]=a[2][2]=1;
printf("Matrix:\n");
printf("\t%d",a[i][j]);
printf("\n");
line(a[0][0],a[1][0],a[0][1],a[1][1]);
line(a[0][1],a[1][1],a[0][2],a[1][2]);
line(a[0][2],a[1][2],a[0][0],a[1][0]);
b[0][0]=0;
b[0][1]=1.0;
b[1][0]=1.0;
b[1][1]=0;
b[0][2]=b[1][2]=b[2][0]=b[2][1]=0.0;
b[2][2]=1.0;
r[i][k]=0.0;
r[i][k]+=b[i][j]*a[j][k];
}
}
printf("Matrix:\n");
printf(" %.2f\t",r[i][j]);
printf("\n");
line(r[0][0],r[1][0],r[0][1],r[1][1]);
line(r[0][1],r[1][1],r[0][2],r[1][2]);
line(r[0][2],r[1][2],r[0][0],r[1][0]);
getch();
Input:
50
100
50
200
200
200
Output:
8
Code:
#include<stdio.h>
#include<conio.h>
#include<math.h>
#include<graphics.h>
void main()
float x1, y1, x2, y2, xmin, ymin, xmax, ymax, dx, dy, p[4], q[4], r[4], u1=0.0, u2=1.0;
clrscr();
printf("\n ENTER THE BOUNDARY OF THE CLIPPING WINDOW(XMIN, YMIN, XMAX, YMAX):");
printf("\n\n ENTER THE VALUES OF THE TWO END POINTS OF THE LINE( (X1, Y1) AND (X2, Y2) ):");
clrscr();
getch();
dx = x2 - x1;
dy = y2 - y1;
p[0] = -dx;
p[1] = dx;
p[2] = -dy;
p[3] = dy;
q[0] = x1 - xmin;
getch();
if(p[k] < 0)
u1 = u1>r[k] ? u1 : r[k];
if(p[k] > 0)
u2 = u2<r[k] ? u2 : r[k];
getch();
getch();
x2 = x1 + (dx * u2);
y2 = y1 + (dy * u2);
x1 = x1 + (dx * u1);
y1 = y1 + (dy * u1);
clrscr();
getch();
Input:
100
250
250
ENTER THE VALUES OF THE TWO END POINTS OF THE LINE( (X1, Y1) AND (X2, Y2) ):120
120
300
300
Output:
9
Code:
//dda
#include<stdio.h>
#include<conio.h>
#include<math.h>
#include<graphics.h>
#include<dos.h>
void main(){
int gd=DETECT,gm,xa,ya,xb,yb,dx,dy,step,i;
int h=300,k=200;
float xinc,yinc,x,y;
initgraph(&gd,&gm,"c:\\TURBOC3\\BGI");
scanf("%d %d",&xa,&ya);
scanf("%d %d",&xb,&yb);
dx=(xb-xa);
dy=(yb-ya);
if(abs(dx)>abs(dy)){
step=abs(dx);
}else{
step=abs(dy);
x=xa; y=ya;
putpixel(x,y,4);
line(h,k,640,k);
line(h,k,h,10);
outtextxy(305,207,"O");f
xinc=(float)dx/step;
yinc=(float)dy/step;
for(i=0;i<=step;i++){
x=x+xinc;
y=y+yinc;
putpixel(h+floor(x+0.5),k-floor(y+0.5),4);
delay(30);
getch();
Input:
Enter xa and ya
100
100
Enter xb and yb
150
150
Output:
10
Code:
#include<stdio.h>
#include<conio.h>
#include<math.h>
#include<graphics.h>
void main()
int gd=DETECT,gm,x1,x2,y1,y2,dx,dy,p;
int xs,ys,xe;
initgraph(&gd,&gm,"c:\\TURBOC3\\BGI");
scanf("%d %d",&x1,&y1);
scanf("%d %d",&x2,&y2);
dx=abs(x2-x1);
dy=abs(y2-y1);
if(x1<x2)
{xs=x1;
ys=y1;
xe=x2;
else{
xs=x2;
ys=y2;
xe=x1;
}
p=2*dy-dx;
line(h,k,640,k);
line(h,k,h,10);
putpixel(xs,ys,4);
while(xs<=xe)
if(p<0)
xs=xs+1;
p=p+2*dy;
else{
xs=xs+1;
ys=ys+1;
p=p+2*(dy-dx);
putpixel(h+xs,k-ys,4);
getch();
Input:
100
100
150
150
Output:
11
Code:
#include<stdio.h>
#include<conio.h>
#include<graphics.h>
void main()
int n,x[10],y[10],k=0,ymin=1000000,ymax=0,Y,dx,dy,xi[100],gm,gd,temp,i,j,m;
float slope[100];
scanf("%d",&n);
scanf("%d%d",&x[i],&y[i]);
if(y[i]>ymax)
ymax=y[i];
if(y[i]<ymin)
ymin=y[i];
detectgraph(&gd,&gm);
initgraph(&gd,&gm,"C:\\TURBOC3\\BGI");
x[n]=x[0];
y[n]=y[0];
line(x[i],y[i],x[i+1],y[i+1]);
}
dx=x[i+1]-x[i];
dy=y[i+1]-y[i];
if(dy==0)slope[i]=1.0;
if(dx==0)slope[i]=0.0;
slope[i]=(float)dx/dy;
k=0;
xi[k]=(int)(x[i]+slope[i]*(j-y[i]));
k++;
if(xi[i]>xi[i+1])
temp=xi[i];
xi[i]=xi[i+1];
xi[i+1]=temp;
setcolor(2);
line(xi[i],j,xi[i+1]+1,j);
delay(100);
getch();
Input:
100
100
200
200
200
Output:
12
Code:
#include<stdio.h>
#include<math.h>
#include<graphics.h>
main()
int x1,y1,x2,y2,gd,gm;
int ymax,a[4][8];
float par[4][4],b[4][8];
int i,j,k,m,n,p;
double L1,phi;
a[0][0] = 100;
a[1][0] = 100;
a[2][0] = 100;
a[0][1] = 200;
a[1][1] = 100;
a[2][1] = 100;
a[0][2] = 200;
a[1][2] = 200;
a[2][2] = 100;
a[0][3] = 100;
a[1][3] = 200;
a[2][3] = 100;
a[0][4] = 100;
a[1][4] = 100;
a[2][4] = 200;
a[0][5] = 200;
a[1][5] = 100;
a[2][5] = 200;
a[0][6] = 200;
a[1][6] = 200;
a[2][6] = 200;
a[0][7] = 100;
a[1][7] = 200;
a[2][7] = 200;
L1 = 0.5;
par[0][0] = 1;
par[0][1] = 0;
par[0][2] = L1*cos(phi);
par[0][3] = 0;
par[1][0] = 0;
par[1][1] = 1;
par[1][2] = L1*sin(phi);
par[1][3] = 0;
par[2][0] = 0;
par[2][1] = 0;
par[2][2] = 0;
par[2][3] = 0;
par[3][0] = 0;
par[3][1] = 0;
par[3][2] = 0;
par[3][3] = 1;
m=4;
n=4;
p=8;
b[i][k] = 0;
detectgraph(&gd,&gm);
initgraph(&gd,&gm, "c:\\tc\\bgi");
ymax = getmaxy();
x1=(int) b[0][j];
y1=(int) b[1][j];
x2=(int) b[0][j+1];
y2=(int) b[1][j+1];
line( x1,ymax-y1,x2,ymax-y2);
x1=(int) b[0][3];
y1=(int) b[1][3];
x2=(int) b[0][0];
y2=(int) b[1][0];
line( x1,ymax-y1,x2,ymax-y2);
setcolor(11);
x1=(int) b[0][j];
y1=(int) b[1][j];
x2=(int) b[0][j+1];
y2=(int) b[1][j+1];
line( x1,ymax-y1,x2,ymax-y2);
x1=(int) b[0][7];
y1=(int) b[1][7];
x2=(int) b[0][4];
y2=(int) b[1][4];
line( x1,ymax-y1,x2,ymax-y2);
setcolor(13);
x1=(int) b[0][i];
y1=(int) b[1][i];
x2=(int) b[0][4+i];
y2=(int) b[1][4+i];
line( x1,ymax-y1,x2,ymax-y2);
getch();
getch();
}
Output:
13
Code:
#include<stdio.h>
#include<math.h>
#include<graphics.h>
main()
int x1,y1,x2,y2,gd,gm;
int ymax,a[4][8];
float par[4][4],b[4][8];
int i,j,k,m,n,p;
a[0][0] = 100;
a[1][0] = 100;
a[2][0] = -100;
a[0][1] = 200;
a[1][1] = 100;
a[2][1] = -100;
a[0][2] = 200;
a[1][2] = 200;
a[2][2] = -100;
a[0][3] = 100;
a[1][3] = 200;
a[2][3] = -100;
a[0][4] = 100;
a[1][4] = 100;
a[2][4] = -200;
a[0][5] = 200;
a[1][5] = 100;
a[2][5] = -200;
a[0][6] = 200;
a[1][6] = 200;
a[2][6] = -200;
a[0][7] = 100;
a[1][7] = 200;
a[2][7] = -200;
detectgraph(&gd,&gm);
initgraph(&gd,&gm, "c:\\tc\\bgi");
ymax = getmaxy();
xp = 300;
yp = 320;
zp = 100;
x = a[0][j];
y = a[1][j];
z = a[2][j];
b[0][j] = xp - ( (float)( x - xp )/(z - zp)) * (zp);
x1=(int) b[0][j];
y1=(int) b[1][j];
x2=(int) b[0][j+1];
y2=(int) b[1][j+1];
line( x1,ymax-y1,x2,ymax-y2);
x1=(int) b[0][3];
y1=(int) b[1][3];
x2=(int) b[0][0];
y2=(int) b[1][0];
setcolor(11);
x1=(int) b[0][j];
y1=(int) b[1][j];
x2=(int) b[0][j+1];
y2=(int) b[1][j+1];
x1=(int) b[0][7];
y1=(int) b[1][7];
x2=(int) b[0][4];
y2=(int) b[1][4];
setcolor(7);
x1=(int) b[0][i];
y1=(int) b[1][i];
x2=(int) b[0][4+i];
y2=(int) b[1][4+i];
getch();
getch();
}
Output:
14
Code:
#include<stdio.h>
#include<conio.h>
#include<graphics.h>
int x,y,z;
void main()
float u;
int gd,gm,ymax,i,n,c[4][3];
c[i][0]=0;
c[i][1]=0;
scanf("%d %d",&c[i][0],&c[i][1]);
}
c[4][0]=c[0][0];
c[4][1]=c[0][1];
detectgraph(&gd,&gm);
initgraph(&gd,&gm,"C:\\Turboc3\\bgi");
ymax = 480;
setcolor(13);
line(c[i][0],ymax-c[i][1],c[i+1][0],ymax-c[i+1][1]);
setcolor(3);
n=3;
u=(float)i/40.0;
bezier(u,n,c);
if(i==0)
moveto(x,ymax-y);
}
else
lineto(x,ymax-y);
getch();
getch();
int j;
float v,b;
float blend(int,int,float);
x=0;
y=0;
z=0;
b=blend(j,n,u);
x=x+(p[j][0]*b);
y=y+(p[j][1]*b);
z=z+(p[j][2]*b);
}
float blend(int j,int n,float u)
int k;
float v,blend;
v=C(n,j);
v*=u;
v *= (1-u);
blend=v;
return(blend);
int k,a,c;
a=1;
a*=k;
a=a/k;
}
c=a;
return(c);
Input:
X0 y0:200
300
X1 y1:300
400
X2 y2:300
300
X3 y3:100
200
Output:
15
Code:
//viewing transformation
#include<graphics.h>
#include<conio.h>
#include<stdio.h>
void main ()
printf ("Please enter Window coordinates \n First enter XMax, YMax =");
cleardevice ();
delay (50);
//Window
//drawing a triangle
// viewport
V_xmin = 300;
V_ymin = 30;
V_xmax = 550;
V_ymax = 350;
// calculatng Sx and Sy
// drawing triangle
getch ();
closegraph ();
}
Input:
Output: