博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
模拟3d
阅读量:4548 次
发布时间:2019-06-08

本文共 4063 字,大约阅读时间需要 13 分钟。

1 #include 
2 #include
3 #include
4 #include
5 6 #define maxp 10000 7 #define end 1000.0 8 #define T 0 9 #define space 3.0 10 #define change 2.0 11 #define beginning 450.0 12 13 struct ddd{ 14 double x; 15 double y; 16 double z; 17 COLORREF color; 18 }; 19 20 ddd a[maxp],q; 21 double f; 22 int cnt = 0,get; 23 24 void print(ddd p){ 25 f = (end - p.z) / (end - q.z); 26 putpixel((p.x - q.x) * f,(p.y - q.y) * f,p.color); 27 } 28 29 double len(ddd aa,ddd bb){ 30 return sqrt((aa.x-bb.x)*(aa.x-bb.x)+(aa.y-bb.y)*(aa.y-bb.y)+(aa.z-bb.z)*(aa.z-bb.z)) - 150.0; 31 } 32 33 void lll(int xx,int yy,int zz,int xxx,int yyy,int zzz){ 34 int pp; 35 if(xx != xxx){ 36 for(pp = xx;pp <= xxx;pp += space){ 37 cnt++; 38 a[cnt].x = pp * 1.0; 39 a[cnt].y = yy * 1.0; 40 a[cnt].z = zz * 1.0; 41 } 42 return; 43 } 44 if(yy != yyy){ 45 for(pp = yy;pp <= yyy;pp += space){ 46 cnt++; 47 a[cnt].x = xx * 1.0; 48 a[cnt].y = pp * 1.0; 49 a[cnt].z = zz * 1.0; 50 } 51 return; 52 } 53 if(zz != zzz){ 54 for(pp = zz;pp <= zzz;pp += space){ 55 cnt++; 56 a[cnt].x = xx * 1.0; 57 a[cnt].y = yy * 1.0; 58 a[cnt].z = pp * 1.0; 59 } 60 return; 61 } 62 } 63 64 void main() 65 { 66 67 initgraph(1000, 1000, NOMINIMIZE); // ÕâÀïºÍ TC ÂÔÓÐÇø±ð 68 69 setorigin(500,500); 70 71 setbkcolor(WHITE); 72 73 srand(time(NULL)); 74 75 q.x = 100.0; 76 q.y = 70.0; 77 q.z = 10.0; 78 79 /* 80 for(int f = 0;f < maxp;f++){ 81 a[f].x = rand() % 100 + 50; 82 a[f].y = rand() % 100 + 20; 83 a[f].z = rand() % 100 + 200; 84 } 85 */ 86 lll(50,20,200,50,120,200); // 87 lll(50,20,200,150,20,200); // 88 lll(50,20,200,50,120,300); // 89 lll(50,20,300,50,120,300); // 90 lll(50,120,200,50,120,300); // 91 lll(50,120,200,150,120,200); // 92 lll(150,20,200,150,120,200); // 93 lll(50,120,300,150,120,300); // 94 lll(150,120,200,150,120,300); // 95 lll(50,20,300,150,20,300); 96 lll(150,20,200,150,20,300); 97 lll(150,20,300,150,120,300); 98 99 lll(0,0,0,0,0,100);100 lll(0,0,0,0,200,0);101 lll(0,0,0,300,0,0);102 /*103 for(int ii = 0;ii <= maxp;ii++){104 if(a[ii].x >= 145){105 a[ii].color = LIGHTRED;106 }107 if(a[ii].y >= 115){108 a[ii].color = LIGHTRED;109 }110 if(a[ii].z >= 295){111 a[ii].color = LIGHTRED;112 }113 114 if(a[ii].x <= 55){115 a[ii].color = LIGHTRED;116 }117 if(a[ii].y <= 25){118 a[ii].color = LIGHTRED;119 }120 if(a[ii].z <= 205){121 a[ii].color = LIGHTRED;122 }123 124 }125 */126 127 for(int i = 0;i < cnt;i++){128 a[i].color = RGB(len(a[i],q) / change,len(a[i],q) / change,len(a[i],q) / change);129 }130 131 while(1){132 /*133 for(;;){134 q.x += 1;135 cleardevice();136 for(int k = 0;k < maxp;k++){137 print(a[k]);138 }139 Sleep(T);140 }141 */142 cleardevice();143 for(int k = 0;k < maxp;k++){144 print(a[k]);145 }146 Sleep(T);147 get = getch();148 if(get == 0x48)q.y += 10;149 if(get == 0x50)q.y -= 10;150 if(get == 0x4b)q.x -= 10;151 if(get == 0x4d)q.x += 10;152 if(get == 0x77)q.z += 10;153 if(get == 0x73)q.z -= 10;154 if(get == 0x1b)return;155 }156 157 getch();158 closegraph(); 159 160 }

 在环境下编译。。。

键盘上下左右控制。

转载于:https://www.cnblogs.com/frankying/p/6613143.html

你可能感兴趣的文章
前端知识点
查看>>
Java的访问权限
查看>>
HTML5 1.5 表格元素
查看>>
SMT(SF)
查看>>
Android系列--DOM、SAX、Pull解析XML
查看>>
关于64位 MS SQL 导入导出 Oracle 引发 ORA-06413 的解决方法
查看>>
java.io.UnsupportedEncodingException
查看>>
浅析手机抓包方法实践(zt)
查看>>
记一次MySQl 安装1067错误
查看>>
DirectSound的应用
查看>>
MessageDigest简单介绍
查看>>
BBSXP最新漏洞 简单注入检測 万能password
查看>>
python基础学习笔记(十一)
查看>>
上网必备AdBlock,远离广告!
查看>>
又一篇,讲解Wcf、Silverlight3.0与Nhibernate的集成方案
查看>>
WP异步传递参数
查看>>
async-await 异步请求
查看>>
MSDN for 2010的那些麻烦事
查看>>
四个正则
查看>>
这七种数据分析领域中最为人称道的降维方法
查看>>