VISUALIZING PROJECTIONS OF 3D IMAGES
Aim :
To write a C program for implementation of Visualizing Projections Of 3d Images.
Algorithm:
Step 1: Start the program.
Step 2: input the number of edges.
Step 3: input the start pt. and end pt. for the all the edges.
Step 4: draw and display the image obtained from the these points.
Step 5: generate the top view and display it.
Step 6: generate the side view and display it.
Step 7: generate the front view and display it.
Step 8: Stop the program.
PROGRAM :
#include<stdio.h>
#include<conio.h>
#include<graphics.h>
#include<math.h>
struct point
{
int x,y,z;
};
struct edge
{
struct point start;
struct point end;
};
float pi=3.14/180.0;
void convert2d(int *x,int *y,int *z)
{
int xp,yp;
xp=(*x)+(*z)*cos(pi*45)/tan(pi*45);
yp=(*y)+(*z)*sin(pi*45)/tan(pi*45);
*x=xp;
*y=yp;
}
void screen(int *x,int *y)
{
int xm,ym;
xm=getmaxx();
ym=getmaxy();
*x=xm/2+*x;
*y=ym/2-*y;
}
void draw3d(struct edge po[],int n)
{
int i,x1,y1,z1,x2,y2,z2;
for(i=0;i<n;i++)
{
x1=po[i].start.x;
y1=po[i].start.y;
z1=po[i].start.z;
convert2d(&x1,&y1,&z1);
x2=po[i].end.x;
y2=po[i].end.y;
z2=po[i].end.z;
convert2d(&x2,&y2,&z2);
screen(&x1,&y1);
screen(&x2,&y2);
line(x1,y1,x2,y2);
}
}
void main()
{
int gd=DETECT,gm=0;
int i,tx,ty,tz,sx,sy,sz,n;
int xx1,xx2,yy1,yy2;
float rx,ry,rz;
struct edge p[50],q[50],r[50],s[50],t[50],v[50];
initgraph(&gd,&gm,"c:\\tc\\bgi");
cleardevice();
printf("\nEnter the number of edges:");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("\nStart pt for edge %d(x,y,z):",i+1);
scanf("%d%d%d",&p[i].start.x,&p[i].start.y,&p[i].start.z);
printf("\nEnd pt for edge %d(x,y,z):",i+1);
scanf("%d%d%d",&p[i].end.x,&p[i].end.y,&p[i].end.z);
}
cleardevice();
printf("\n3D VIEW");
draw3d(p,n);
getch();
cleardevice();
printf("\nTOP VIEW");
for(i=0;i<n;i++)
{
xx1=p[i].start.x;
yy1=p[i].start.z;
xx2=p[i].end.x;
yy2=p[i].end.z;
screen(&xx1,&yy1);
screen(&xx2,&yy2);
line(xx1,yy1,xx2,yy2);
}
getch();
cleardevice();
printf("\nSIDE VIEW");
for(i=0;i<n;i++)
{
xx1=p[i].start.z;
yy1=p[i].start.y;
xx2=p[i].end.z;
yy2=p[i].end.y;
screen(&xx1,&yy1);
screen(&xx2,&yy2);
line(xx1,yy1,xx2,yy2);
}
getch();
cleardevice();
printf("\nFRONT VIEW");
for(i=0;i<n;i++)
{
xx1=p[i].start.x;
yy1=p[i].start.y;
xx2=p[i].end.x;
yy2=p[i].end.y;
screen(&xx1,&yy1);
screen(&xx2,&yy2);
line(xx1,yy1,xx2,yy2);
}
getch();
cleardevice();
}
Aim :
To write a C program for implementation of Visualizing Projections Of 3d Images.
Algorithm:
Step 1: Start the program.
Step 2: input the number of edges.
Step 3: input the start pt. and end pt. for the all the edges.
Step 4: draw and display the image obtained from the these points.
Step 5: generate the top view and display it.
Step 6: generate the side view and display it.
Step 7: generate the front view and display it.
Step 8: Stop the program.
PROGRAM :
#include<stdio.h>
#include<conio.h>
#include<graphics.h>
#include<math.h>
struct point
{
int x,y,z;
};
struct edge
{
struct point start;
struct point end;
};
float pi=3.14/180.0;
void convert2d(int *x,int *y,int *z)
{
int xp,yp;
xp=(*x)+(*z)*cos(pi*45)/tan(pi*45);
yp=(*y)+(*z)*sin(pi*45)/tan(pi*45);
*x=xp;
*y=yp;
}
void screen(int *x,int *y)
{
int xm,ym;
xm=getmaxx();
ym=getmaxy();
*x=xm/2+*x;
*y=ym/2-*y;
}
void draw3d(struct edge po[],int n)
{
int i,x1,y1,z1,x2,y2,z2;
for(i=0;i<n;i++)
{
x1=po[i].start.x;
y1=po[i].start.y;
z1=po[i].start.z;
convert2d(&x1,&y1,&z1);
x2=po[i].end.x;
y2=po[i].end.y;
z2=po[i].end.z;
convert2d(&x2,&y2,&z2);
screen(&x1,&y1);
screen(&x2,&y2);
line(x1,y1,x2,y2);
}
}
void main()
{
int gd=DETECT,gm=0;
int i,tx,ty,tz,sx,sy,sz,n;
int xx1,xx2,yy1,yy2;
float rx,ry,rz;
struct edge p[50],q[50],r[50],s[50],t[50],v[50];
initgraph(&gd,&gm,"c:\\tc\\bgi");
cleardevice();
printf("\nEnter the number of edges:");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("\nStart pt for edge %d(x,y,z):",i+1);
scanf("%d%d%d",&p[i].start.x,&p[i].start.y,&p[i].start.z);
printf("\nEnd pt for edge %d(x,y,z):",i+1);
scanf("%d%d%d",&p[i].end.x,&p[i].end.y,&p[i].end.z);
}
cleardevice();
printf("\n3D VIEW");
draw3d(p,n);
getch();
cleardevice();
printf("\nTOP VIEW");
for(i=0;i<n;i++)
{
xx1=p[i].start.x;
yy1=p[i].start.z;
xx2=p[i].end.x;
yy2=p[i].end.z;
screen(&xx1,&yy1);
screen(&xx2,&yy2);
line(xx1,yy1,xx2,yy2);
}
getch();
cleardevice();
printf("\nSIDE VIEW");
for(i=0;i<n;i++)
{
xx1=p[i].start.z;
yy1=p[i].start.y;
xx2=p[i].end.z;
yy2=p[i].end.y;
screen(&xx1,&yy1);
screen(&xx2,&yy2);
line(xx1,yy1,xx2,yy2);
}
getch();
cleardevice();
printf("\nFRONT VIEW");
for(i=0;i<n;i++)
{
xx1=p[i].start.x;
yy1=p[i].start.y;
xx2=p[i].end.x;
yy2=p[i].end.y;
screen(&xx1,&yy1);
screen(&xx2,&yy2);
line(xx1,yy1,xx2,yy2);
}
getch();
cleardevice();
}
OUTPUT:
Start pt for edge 1 (x,y,z) : 0 0 0
End pt for edge 1 (x,y,z) : 200 0 0
Start pt for edge 2 (x,y,z) : 200 0 0
End pt for edge 2 (x,y,z) : 200 0 100
Start pt for edge 3 (x,y,z) : 200 0 100
End pt for edge 3 (x,y,z) : 0 0 100
Start pt for edge 4 (x,y,z) : 0 0 100
End pt for edge 4 (x,y,z) : 0 0 0
Start pt for edge 5 (x,y,z) : 0 100 0
End pt for edge 5 (x,y,z) : 200 100 0
Start pt for edge 6 (x,y,z) : 200 100 0
End pt for edge 6 (x,y,z) : 200 100 100
Start pt for edge 7 (x,y,z) : 200 100 100
End pt for edge 7 (x,y,z) : 0 100 100
Start pt for edge 8 (x,y,z) : 0 100 100
End pt for edge 8 (x,y,z) : 0 100 0
Start pt for edge 9 (x,y,z ) : 0 100 0
End pt for edge 9 (x,y,z) : 0 0 0
Start pt for edge 10 (x,y,z): 200 100 0
End pt for edge 10 (x,y,z) : 200 0 0
Start pt for edge 11 (x,y,z): 200 100 100
End pt for edge 11 (x,y,z) : 200 0 100
Start pt for edge 12 (x,y,z): 0 100 100
End pt for edge 12 (x,y,z) : 0 0 100
No comments:
Post a Comment