3D游戏从入门到精通

3D游戏从入门到精通

ID:39546142

大小:110.50 KB

页数:27页

时间:2019-07-05

3D游戏从入门到精通_第1页
3D游戏从入门到精通_第2页
3D游戏从入门到精通_第3页
3D游戏从入门到精通_第4页
3D游戏从入门到精通_第5页
资源描述:

《3D游戏从入门到精通》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、2.10.1坐标系在D3D里使用的坐标系是左手坐标系,就是当你看屏幕时,左手边是X轴的负方向,右手边是X轴的正方向。屏幕下边是Y轴的负方向,屏幕上边是Y轴的正方向。远离屏幕是Z轴的负方向,指向屏幕里面是Z轴的正方向。坐标系还有右手坐标系,还有其它各种各样的坐标系。如果需要从其它坐标里的图形显示在D3D里,就需要进行转换。2.10.2点在三维空间里表示物体位置,就需要用坐标来表示。由上面的坐标系可知,任何一点,都可以用三个坐标轴的值来表示。比如表示零点,就是O(0,0,0)。只要给出三个坐标轴的值,就可以知道这个点在什么位置了。从坐标系里

2、,就知道我们定义的坐标轴是有方向的。那么在坐标系里的点,是否也有方向呢?为了表示方便,使用起来简单,在D3D里的点也是有方向的。用向量来表一个点的位置和方向。一个点的方向,都是从原点出发指向这点的方向。比如下面的图中,OA就是一个点的位置和方向。从几何上知道这种表示方法了,但在程序里是怎么样表示一个向量呢?在编程里,是需要特定的编程语言来表达向量的。由于C++具有强大的功能和特别快的处理速度,目前大部份游戏都是采用C++来编写。因此D3D游戏也不例外地采用C++。如果你还不会使用C++,建议你先去找本C++的书来看看,然后再接着看本书,

3、否则很多东西是看不懂的。在C++里是使用结构(struct)或者类(class)来表达一个向量的。下面就是D3D里的向量表示方法:typedefstruct_D3DVECTOR{floatx;floaty;floatz;}D3DVECTOR;D3DVECTOR向量定义了三个成员x,y,z来表示坐标系三个坐标轴的值。这里使用typedef来定义向量类型,以后就可以使用它来定义其它向量类型变量了。为了方便对它的操作,因此又需要继承它,生成一个新类D3DXVECTOR3。D3DXVECTOR3类有很多方法,使用起来非常方便。因而在程序里,主要

4、使用它来定义变量,这样就有很函数可以使用了。比如赋值,相加,相减等等。它的定义如下:typedefstructD3DXVECTOR3:publicD3DVECTOR{public:D3DXVECTOR3(){};D3DXVECTOR3(CONSTFLOAT*);D3DXVECTOR3(CONSTD3DVECTOR&);D3DXVECTOR3(CONSTD3DXFLOAT16*);D3DXVECTOR3(FLOATx,FLOATy,FLOATz);//castingoperatorFLOAT*();operatorCONSTFLOAT*(

5、)const;//assignmentoperatorsD3DXVECTOR3&operator+=(CONSTD3DXVECTOR3&);D3DXVECTOR3&operator-=(CONSTD3DXVECTOR3&);D3DXVECTOR3&operator*=(FLOAT);D3DXVECTOR3&operator/=(FLOAT);//unaryoperatorsD3DXVECTOR3operator+()const;D3DXVECTOR3operator-()const;//binaryoperatorsD3DXVECTOR

6、3operator+(CONSTD3DXVECTOR3&)const;D3DXVECTOR3operator-(CONSTD3DXVECTOR3&)const;D3DXVECTOR3operator*(FLOAT)const;D3DXVECTOR3operator/(FLOAT)const;friendD3DXVECTOR3operator*(FLOAT,CONSTstructD3DXVECTOR3&);BOOLoperator==(CONSTD3DXVECTOR3&)const;BOOLoperator!=(CONSTD3DXVECT

7、OR3&)const;}D3DXVECTOR3,*LPD3DXVECTOR3;在这里已经实现向量的加减、数乘、数除,也许你发现这里有没有点积和叉积运算。它们是通过其它公共函数实现的。说到这里,如果你对点积和叉积运算不是很懂,看来又需要去看看《向量代数》了。在游戏里,要表示一个人沿着OA的方向行走,那么只需要对着OA向量数乘,就可以了。有了这样的向量类型定义,就可像下面那样方便使用:D3DXVECTOR3vOA(1.0f,1.0f,1.0f);2.10.1平面的表示3D空间里的物体都是实体的,主要由平面组成。比如正方体,就有6个平面。在D

8、3D里组成三维物体的基本平面是三角形,无论是多么复杂的物体,都是有三角形组成的。并且D3D里支持显示最小的图形也是三角形,它是没有点和直线显示的。因此,要显示正方体,就需要把每个平面分成两个三角形,才能显示

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

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

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