Direct3D系列 – 1

向量的定义:

是指空间里的一段有向线段.

 

向量相等的条件:

如果长度相等和方向相同, 就可判定向量相等.

 

向量的表示:

一般情况下,向量由空间中的2点表示. 但是我们在处理和表达的简单, 我们采用一点表示. 下面列出为什么我们能用一点表示向量的原因. 根据向量相等的原理, 就可以把任何向量通过移动, 将向量的起点设置到坐标原点. 因此可以用一点去表示向量.

 

向量的规范化或者规一化:

是指调整向量的模(向量的长度)为1. 向量的模等于(x^2 + y^2 + z^2)再开2次根号.

 

向量的计算:

1. 相加: 结果是两向量组成的平行四边形的对角线(穿过两向量的相交点).

2. 相减: 结果是两向量组成的平行四边形的对角线(不穿过两向量的相交点).

3. 数乘: ku = k*x + k*y +k*z;( 这里k是数值, u是向量)

4. 点乘: u.v = |u||v|cos(a);( u,v是向量, a为两向量的夹角).

5. 叉乘: 得到另外一个向量, 方向和所要相乘的两向量组成的平面垂直.

 

其实, 点乘和叉乘directx9提供了对应的函数, 如叉乘:D3DXVec3Cross, 点乘D3DXVec3Dot. 前面的几种运算可以直接用D3DXVector3运算, 因为它重载了这些操作符.

 

几点应用:

 

1. 可以通过点积的值来计算2个向量之间的夹角.

因为u.v = |u||v|cos(a);( u,v是向量, a为两向量的夹角).

通过acosf这个函数得夹角值.

 

2. 向量乘以常数, 可以用来计算摄像机先前或者向后顺着某一方向移动一段距离, 这里得某一方向一般是指摄像机得look方向.

例如: vecCameraPos += vecLook * fStep;

这里fStep是一常数, 如果大于0,意义就是摄像机沿着看的方向向前移动,如果是小于0,意义就是向后移动.

版权所有,禁止转载. 如需转载,请先征得博主的同意,并且表明文章出处,否则按侵权处理.

    分享到:

Leave a Reply

Your email address will not be published. Required fields are marked *