一个简单的三维程序.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
一个简单的三维程序(C语言) 此程序实现三维图像,源程序及语句注释已给出,请同学们在TC2.0上运行,并完成以下要求功能: 运行程序,描述出程序的功能以及如何使用程序; 通读程序,画出程序流程图 整个程序流程图 各个子模块流程图 程序中已给出部份注释,请补充完所有语句的注释,并注释每个函数的功能; 尽你的所能修改程序,将修改过的程序界面调整美观,并修改界面上的颜色配置,最后将界面截图保存。 该程序最后上交的电子文稿应包括: 1、程序功能描述 2、流程图 3、最终程序运行界面截图 4、修改了的程序段 最后将该4项放在一个WORD文件中。 5、源程序(包含完整注释) 如发现雷同者,均视为本实习内容不及格。 请自行调试,并“逐行”补全未解释的程序代码。按规定格式完成实习报告,报告内容不得雷同,如发现程序未“逐行”解释或雷同者,均视为本实习内容不及格。 附源代码如下: /*这是一个简单的三维引擎程序,模仿三个天体的运动,一个行星绕轴自转,两个卫星分别绕行星的经线和纬线做公转。(在turboc3.0下编译成功)*/ #includestdio.h #includedos.h #includeconio.h #includegraphics.h #includestdlib.h #includealloc.h #includetime.h #includebios.h #includestring.h #includemath.h #define ESC 27 #define F 80 //此数表示通常情况下操作者离电脑的距离(80厘米) #define HIGHT 480 //屏幕纵向分辩率 #define WIDE 640 //屏幕横向分辨率 #define PAI 3.1415926 //圆周率 #define TIME 0.05 //转动间隔时间(每0.2秒转动5度) typedef struct {float x; float y; }_2D ; //二维坐标点 typedef struct {float x; float y; float z; }_3D; //三维坐标点 typedef struct {int anglex; int angley; int anglez; }Axle; //轴向量(angle x,y,z分别表示向量与x,y,z轴的夹角) typedef struct {//纬度圈由赤道加上南北半球的各四个纬度圈共9个纬度圈组成,经度等分成10个圈 //所以用 二维数组g[9][10]来记录经纬度交点 _3D *g[9][10]; // temp[9][10]用来记录g[9][10]各点从三维变换到二维时的坐标 _2D *temp[9][10]; _3D *center; //自转中心坐标,即球心坐标 _3D *round_center; //公转中心坐标 float r; //球体半径 }Globe; //球体 float Observe_Mat[4][4],World_Mat[4][4]; //观察坐标矩阵 与世界坐标矩阵 float Sin[360],Cos[360]; //存放三角函数值的两个数组,可以减少大量的浮点运算,以提高效率 size_t Size2D,Size3D,Sizeaxle,Sizeglobe; //各结构体的尺寸 _3D *Observe; //观察者所在的位置坐标 Globe *Moon1,*Moon2,*Earth; //卫星1,卫星2,地球 三个球体 int Zangle=5; //转动角速度 //建立三角函数表 void create_table() {int i; for(i=0;i360;i++) {Sin[i]=sin(i*PAI/180); Cos[i]=cos(i*PAI/180); } } //初始化观察者位置 void init_observe() {Observe=(_3D *)malloc(Size3D); Observe-x=160; Observe-y=0; Observe-z=0; } //把单位矩阵赋值给目标矩阵 void to_EMat(float mat[4][4]) {int i,j; for(i=0;i4;i++) for(j=0;j4;j++) mat[i][j]=0; for(i=0;i4;i++) mat[i][i]=1; } //把三维坐标点1的值赋给点2 void _3D_cpy(_3D *point1,_3D *point2) {point1-x=point2-x; poi

文档评论(0)

ipad0c + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档