随笔 - 1419  文章 - 388  trackbacks - 0


改变世界的是这样一群人
他们寻找梦想中的乐园
当找不到时
他们亲手创造了它

------------------------



Time is Life

让我们一步步将梦想变成现实

不要迷失在技术的海洋里

任何未经实践检验的理论都是危险而不可靠的

一个人若精神上得不到自由而成为别人思想的奴隶,那么这种人是最可悲的,毋宁死而不做奴隶。

------------------------


吾生也有涯,而知也无涯。
以有涯随无涯,殆已;
已而为知者,殆而已矣!

常用链接

随笔分类(448)

文章分类(17)

3D游戏编程相关链接

搜索

  •  

最新评论

HTML clipboard

向量的点积:

假设向量u(ux, uy)和v(vx, vy),uv之间的夹角为α,从三角形的边角关系等式出发,可作出如下简单推导:

  |u - v||u - v| = |u||u| + |v||v| - 2|u||v|cosα  

===>
 
  (ux - vx2 + (uy - vy)= ux2 + uy2 +vx2+vy2- 2|u||v|cosα

===>
  
   -2uxvx - 2uyvy = -2|u||v|cosα

===>

   cosα = (uxvx + uyvy) / (|u||v|)

这样,就可以根据向量uv的坐标值计算出它们之间的夹角。

定义uv的点积运算: u . v = (uxvx + uyvy),

上面的cosα可简写成: cosα = u . v / (|u||v|)

u . v = 0时(即uxvx + uyvy = 0),向量uv垂直;当u . v > 0时,uv之间的夹角为锐角;当u . v < 0时,uv之间的夹角为钝角。

可以将运算从2维推广到3维。



向量的叉积:

假设存在向量u(ux, uy, uz), v(vx, vy, vz), 求同时垂直于向量u, v的向量w(wx, wy, wz).

因为wu垂直,同时wv垂直,所以w . u = 0, w . v = 0; 即

uxwx + uywy + uzwz = 0;
vxwx + vywy + vzwz = 0;

分别削去方程组的wywx变量的系数,得到如下两个等价方程式:

(uxvy - uyvx)wx = (uyvz - uzvy)wz
(uxvy - uyvx)wy = (uzvx - uxvz)wz

于是向量w的一般解形式为:

w = (wx, wy, wz) = ((uyvz - uzvy)wz / (uxvy - uyvx), (uzvx - uxvz)wz / (uxvy - uyvx), wz)
  = (wz / (uxvy - uyvx) * (uyvz - uzvy, uzvx - uxvz, uxvy - uyvx))

因为:

   ux(uyvz - uzvy) + uy(uzvx - uxvz) + uz(uxvy - uyvx)
 = uxuyvz - uxuzvy + uyuzvx - uyuxvz + uzuxvy - uzuyvx
 = (uxuyvz - uyuxvz) + (uyuzvx - uzuyvx) + (uzuxvy - uxuzvy)  
 = 0 + 0 + 0 = 0

   vx(uyvz - uzvy) + vy(uzvx - uxvz) + vz(uxvy - uyvx)  
 = vxuyvz - vxuzvy + vyuzvx - vyuxvz + vzuxvy - vzuyvx
 = (vxuyvz - vzuyvx) + (vyuzvx - vxuzvy) + (vzuxvy - vyuxvz)
 = 0 + 0 + 0 = 0

由此可知,向量(uyvz - uzvy, uzvx - uxvz, uxvy - uyvx)是同时垂直于向量uv的。

为此,定义向量u = (ux, uy, uz)和向量 v = (vx, vy, vz)的叉积运算为:u x v = (uyvz - uzvy, uzvx - uxvz, uxvy - uyvx)

上面计算的结果可简单概括为:向量u x v垂直于向量uv


根据叉积的定义,沿x坐标轴的向量i = (1, 0, 0)和沿y坐标轴的向量j = (0, 1, 0)的叉积为:

 i x j = (1, 0, 0) x (0, 1, 0) = (0 * 0 - 0 * 1, 0 * 0 - 1 * 0, 1 * 1 - 0 * 0) = (0, 0, 1) = k

同理可计算j x k:
 
 j x k = (0, 1, 0) x (0, 0, 1) = (1 * 1 - 0 * 0, 0 * 0 - 0 * 1, 0 * 0 - 0 * 0) = (1, 0, 0) = i

以及k x i:

 k x i = (0, 0, 1) x (1, 0, 0) = (0 * 0 - 1 * 0, 1 * 1 - 0 * 0, 0 * 0 - 0 * 0) = (0, 1, 0) = j

由叉积的定义,可知:

 v x u = (vyuz - vzuy, vzux - vxuz, vxuy - vyux) = - (u x v)
 


posted on 2007-04-26 18:34 lovedday 阅读(3272) 评论(1)  编辑 收藏 引用 所属分类: ■ 3D Math Basis

FeedBack:
# re: 向量的点积和叉积定义 2008-07-01 20:02 人造地心引力
很好  回复  更多评论
  

标题  
姓名  
主页
验证码 *
内容(提交失败后,可以通过“恢复上次提交”恢复刚刚提交的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
[使用Ctrl+Enter键可以直接提交]

相关链接:
网站导航: