3D GAME PROGRAMMING WITH DIRECTX11(4)

来源:互联网 发布:caffe loss大小 编辑:程序博客网 时间:2024/06/06 09:45

最近看日语,这两天才看了第三章,数学部分最后一章,主要是讲转换的。

要求 

1 理解为何线性变换和仿射变换可以用矩阵表示。

2 学会用坐标系转换去缩放、旋转、平移几何体。

3 知道几个变换矩阵可以通过相乘结合成一个矩阵。

4 知道怎么从一个坐标系变换到另一个坐标系,而且用矩阵表示这个变换矩阵。

5 熟悉XNA数学库的那些函数。


3.1 一开始还是一些定义,说了线性变换的判断方法,缩放和旋转的矩阵表示。这里用的都还是3*3矩阵。


3.2 先讲到了齐次坐标,本来呢按常理想,我们用3*3矩阵就可以进行3D转换的,但是有些变换并不能,比如平移等,所以我们就扩充到4*4的矩阵,自然向量点也需要是一个1*4的vector,后面讲到了平移的矩阵表示,自然为了统一,所以旋转和缩放也改用4*4矩阵表示。


3.3这一节就是讲假如我们需要平移,缩放,旋转,可以先将三者先相乘结合成一个变换矩阵,这样在大量数据进行变换的时候会节省很多时间等。


3.4 坐标系的变换,主要分清楚vector和点的不同就好。


3.5主要是要认识到在3D世界(我们所构造的虚拟世界里),你将物体进行转换和对其坐标系进行转换是可以得到同一样的效果的,比如物体向X轴正方向平移1单位,和坐标系整体向X轴负方向平移1单位得到的效果是一样的,其实基本每个物体都会有自己的世界坐标,这样我们就不需要在一个坐标系内操作所有的物体了,而且在各自的坐标系中进行操作,这样来说,就可以达到我们所追求的的效果啦。


3.6就是一些函数,看看就好。



课后题答案:

第5题,记得去正交化,所以(x,y,z)=(1/根号3,1/根号3,1/根号3),代入公式就好。

第17题,记得一个是vector一个是point。

第27题,就是要将一条线段长度变成2,和(1,1,1)方向平行,还有起点变成为(3,1,2),其实进行缩放,旋转,平移就好。

第28题,介绍了一种可以原地缩放的方法,要点是将坐标系原点和图形中心相重叠,具体自己画图吧。


数学部分就酱紫咯,还想深入的话,大神们跟我说去看3D数学基础图形与游戏开发》应该很不错的一本书。

0 0
原创粉丝点击