一个简单的三维程序

一个简单的三维程序

ID:14174767

大小:42.50 KB

页数:14页

时间:2018-07-26

一个简单的三维程序_第1页
一个简单的三维程序_第2页
一个简单的三维程序_第3页
一个简单的三维程序_第4页
一个简单的三维程序_第5页
资源描述:

《一个简单的三维程序》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、一个简单的三维程序/*这是一个简单的三维引擎程序,模仿三个天体的运动,一个行星绕轴自转,两个卫星分别绕行星的经线和纬线做公转。(在turboc3.0下编译成功)*/#include#include#include#include#include#include#include#include#include#include#defineESC27#defineF80//此数

2、表示通常情况下操作者离电脑的距离(80厘米)#defineHIGHT480//屏幕纵向分辩率#defineWIDE640//屏幕横向分辨率#definePAI3.1415926//圆周率#defineTIME0.05//转动间隔时间(每0.2秒转动5度)typedefstruct{floatx;floaty;}_2D;//二维坐标点typedefstruct{floatx;floaty;floatz;}_3D;//三维坐标点typedefstruct{intanglex;intangley;intanglez;}Axle;//轴向量(anglex,y

3、,z分别表示向量与x,y,z轴的夹角)typedefstruct{//纬度圈由赤道加上南北半球的各四个纬度圈共9个纬度圈组成,经度等分成10个圈//所以用二维数组g[9][10]来记录经纬度交点_3D*g[9][10];//temp[9][10]用来记录g[9][10]各点从三维变换到二维时的坐标_2D*temp[9][10];_3D*center;//自转中心坐标,即球心坐标_3D*round_center;//公转中心坐标floatr;//球体半径}Globe;//球体floatObserve_Mat[4][4],World_Mat[4][4];

4、//观察坐标矩阵与世界坐标矩阵floatSin[360],Cos[360];//存放三角函数值的两个数组,可以减少大量的浮点运算,以提高效率size_tSize2D,Size3D,Sizeaxle,Sizeglobe;//各结构体的尺寸_3D*Observe;//观察者所在的位置坐标Globe*Moon1,*Moon2,*Earth;//卫星1,卫星2,地球三个球体intZangle=5;//转动角速度//建立三角函数表voidcreate_table(){inti;for(i=0;i<360;i++){Sin[i]=sin(i*PAI/180);C

5、os[i]=cos(i*PAI/180);}}//初始化观察者位置voidinit_observe(){Observe=(_3D*)malloc(Size3D);Observe->x=160;Observe->y=0;Observe->z=0;}//把单位矩阵赋值给目标矩阵voidto_EMat(floatmat[4][4]){inti,j;for(i=0;i<4;i++)for(j=0;j<4;j++)mat[i][j]=0;for(i=0;i<4;i++)mat[i][i]=1;}//把三维坐标点1的值赋给点2void_3D_cpy(_3D*po

6、int1,_3D*point2){point1->x=point2->x;point1->y=point2->y;point1->z=point2->z;}//把二维坐标点1的值赋给点2void_2D_cpy(_2D*point1,_2D*point2){point1->x=point2->x;point1->y=point2->y;}//初始化各结构体的尺寸voidinit_size(){Size2D=sizeof(_2D);Size3D=sizeof(_3D);Sizeaxle=sizeof(Axle);Sizeglobe=sizeof(Glob

7、e);}//初始化观察坐标矩阵与世界坐标矩阵(设定为单位矩阵)voidinit_Mat(){inti,j;for(i=0;i<4;i++)for(j=0;j<4;j++){Observe_Mat[i][j]=0;World_Mat[i][j]=0;}for(i=0;i<4;i++){Observe_Mat[i][i]=1;World_Mat[i][i]=1;}}//矩阵1乘矩阵2得到矩阵3voidmat_mult(floatmat1[4][4],floatmat2[4][4],floatmat3[4][4]){inti,j;for(i=0;i<4;i

8、++)for(j=0;j<4;j++)mat3[i][j]=mat1[i][0]*mat2[0][j]+ma

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。