⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 3d.cpp

📁 图形学中三维图形的绘制
💻 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 + -