📄 3d.cpp
字号:
#include<stdio.h>
#include<graphics.h>
#include<conio.h>
typedef struct point
{
int x;
int y;
int z;
}Cpoint;
typedef struct edge
{
int st_point;
int end_point;
}Cedge;
typedef struct face
{
int fst_point;
int snd_point;
int thd_point;
int state;
}Cface;
void main()
{
int driver=DETECT,mode;
int maxx=300,maxy=300;
int m,n;
Cpoint tab_point[4]={{0,0,200},{200,100,200},{200,0,0},{100,200,100}};
Cedge tab_edge[6]={{1,2},{2,3},{3,1},{1,4},{2,4},{3,4}};
Cface tab_face[4]={{1,2,4,0},{2,3,4,0},{3,1,4,0},{3,2,1,0}};
int i,j,k;
int a,b,c,mul;
float d;
float Qici[4][4]={{0,0,0,0},
{0,0,0,0},
{0,0,0,0},
{0,0,0,0}};;
float qici[4][4]={{0,0,200,1},
{200,100,200,1},
{200,0,0,1},
{100,200,100,1}};
float arry[4][4]={{1,0,0,0},
{0,1,0,0},
{0,0,0,0},
{0,0,0,1}};
initgraph(&driver,&mode,"e:\\turboc2");
printf("Please input the point:d\n");
scanf("%f",&d);
arry[2][3]=-(1.0/d);
printf("%f\n",arry[2][3]);
for(i=0;i<4;i++)
{a=tab_point[tab_face[i].fst_point-1].y*(tab_point[tab_face[i].snd_point-1].z-tab_point[tab_face[i].thd_point-1].z)
+tab_point[tab_face[i].snd_point-1].y*(tab_point[tab_face[i].thd_point-1].z-tab_point[tab_face[i].fst_point-1].z)
+tab_point[tab_face[i].thd_point-1].y*(tab_point[tab_face[i].fst_point-1].z-tab_point[tab_face[i].snd_point-1].z);
b=tab_point[tab_face[i].fst_point-1].z*(tab_point[tab_face[i].snd_point-1].x-tab_point[tab_face[i].thd_point-1].x)
+tab_point[tab_face[i].snd_point-1].z*(tab_point[tab_face[i].thd_point-1].x-tab_point[tab_face[i].fst_point-1].x)
+tab_point[tab_face[i].thd_point-1].z*(tab_point[tab_face[i].fst_point-1].x-tab_point[tab_face[i].snd_point-1].x);
c=tab_point[tab_face[i].fst_point-1].x*(tab_point[tab_face[i].snd_point-1].y-tab_point[tab_face[i].thd_point-1].y)
+tab_point[tab_face[i].snd_point-1].x*(tab_point[tab_face[i].thd_point-1].y-tab_point[tab_face[i].fst_point-1].y)
+tab_point[tab_face[i].thd_point-1].x*(tab_point[tab_face[i].fst_point-1].y-tab_point[tab_face[i].snd_point-1].y);
mul=a*(-tab_point[tab_face[i].fst_point-1].x)+
b*(-tab_point[tab_face[i].fst_point-1].y)+
c*(d-tab_point[tab_face[i].fst_point-1].z);
if(mul>0)
tab_face[i].state=1;
}
for(i=0;i<4;i++)
{ for(j=0;j<4;j++)
for(k=0;k<4;k++)
Qici[i][j]+=qici[i][k]*arry[k][j];
}
for(i=0;i<4;i++)
{
tab_point[i].x=(int)Qici[i][0];
tab_point[i].y=(int)Qici[i][1];
}
setcolor(RED);
cleardevice();
for(i=0;i<4;i++)
{if(tab_face[i].state==0)
{
setlinestyle(3,1,0);
line(maxx+tab_point[tab_face[i].fst_point-1].x,
maxy-tab_point[tab_face[i].fst_point-1].y,
maxx+tab_point[tab_face[i].snd_point-1].x,
maxy-tab_point[tab_face[i].snd_point-1].y);
line(maxx+tab_point[tab_face[i].snd_point-1].x,
maxy-tab_point[tab_face[i].snd_point-1].y,
maxx+tab_point[tab_face[i].thd_point-1].x,
maxy-tab_point[tab_face[i].thd_point-1].y);
line(maxx+tab_point[tab_face[i].thd_point-1].x,
maxy-tab_point[tab_face[i].thd_point-1].y,
maxx+tab_point[tab_face[i].fst_point-1].x,
maxy-tab_point[tab_face[i].fst_point-1].y);
continue;
}
else continue;
}
for(i=0;i<4;i++)
{if(tab_face[i].state==1)
{
setlinestyle(0,1,0);
line(maxx+tab_point[tab_face[i].fst_point-1].x,
maxy-tab_point[tab_face[i].fst_point-1].y,
maxx+tab_point[tab_face[i].snd_point-1].x,
maxy-tab_point[tab_face[i].snd_point-1].y);
line(maxx+tab_point[tab_face[i].snd_point-1].x,
maxy-tab_point[tab_face[i].snd_point-1].y,
maxx+tab_point[tab_face[i].thd_point-1].x,
maxy-tab_point[tab_face[i].thd_point-1].y);
line(maxx+tab_point[tab_face[i].thd_point-1].x,
maxy-tab_point[tab_face[i].thd_point-1].y,
maxx+tab_point[tab_face[i].fst_point-1].x,
maxy-tab_point[tab_face[i].fst_point-1].y);
continue;
}
else continue;
}
getch();
closegraph();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -