- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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
您可能关注的文档
最近下载
- 二年级语文上单元归类复习.pdf VIP
- ASME B18.29.1-2010 螺旋线圈螺纹插入-自由运行和螺纹锁定(英寸系列).pdf VIP
- 电力行业检查标准清单(发电部分).docx VIP
- 2025至2030年中国四川省渔业行业发展趋势预测及投资规划研究报告.docx
- 新苏教版六年级科学上册试卷1-5单元测试卷含答案5单元全册打包期中期末复习.docx VIP
- 危大工程与超过一定规模的危大工程清单(住建部2018第31号文).pdf VIP
- 2025小学科学学科教师基本功大赛试题(理论部分附答案).docx VIP
- 钢筋混凝土化粪池22S702.docx VIP
- L23R401 城镇热水管道直埋敷设图集.docx
- GMP文件管理规程(新版).pdf VIP
文档评论(0)