返回首页
当前位置: 主页 > 编程语言 > C/C++教程 >

向量运算

时间:2016-10-21 13:01来源:电脑教程学习网 www.etwiki.cn 编辑:admin

向量运算

 

向量的定义:

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

 

向量相等的条件:

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

 

向量的表示:

一般情况下,向量由空间中的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,意义就是向后移动.
 

顶一下
(0)
0%
踩一下
(0)
0%
标签(Tag):向量运算
------分隔线----------------------------
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
验证码:点击我更换图片
推荐内容