1.4 叉积

叉积(cross product)是向量数学定义的第二种乘法形式。它与点积不同,点积的计算结果是一个标量,而叉积的计算结果是一个向量;另外,叉积只能用于3D向量(2D向量没有叉积)。通过对两个3D向量uv计算叉积,可以得到第3个向量w,该向量同时垂直于uv。也就是说,w既垂直于uw也垂直于v(参见图1.13)。设u=(ux,uy,uz),v=(vx,vy,vz),则叉积为:

\({\bf{w}} = {\bf{u}} \times {\bf{v}} = ({u_y}{v_z} - {u_z}{v_y},{u_z}{v_x} - {u_x}{v_z},{u_x}{v_y} - {u_y}{v_x})\)   (1.5)

图1.13
图1.13 通过为两个3D向量uv计算叉积,可以得到第3个向量w,该向量同时垂直于uv。如果读者抬起左手,将拇指之外的其他4个手指指向第一个向量u的方向,然后朝着v的方向沿角度0≤θ≤π弯曲手指,此时拇指所指的方向即为w=u×v的方向;这叫做左手拇指定则(left-hand-thumb rule)。

注意:如果你处理的是一个右手坐标系,则需要使用右手拇指定则(right-hand-thumb rule):如果抬起右手,将拇指之外的其他4个手指指向第一个向量u的方向,然后朝着v的方向沿角度0≤θ≤π弯曲手指,此时拇指所指的方向即为w=u×v的方向。

【例1.6】

u= (2, 1,3)、v= (2, 0,0)。计算w=u×vz=v×u,并验证w既垂直于u,也垂直于v。由公式1.5可得,

w=u×v

= (2, 1,3)×(2, 0,0)

= (1 ∙ 0 − 3 ∙ 0,3 ∙ 2 − 2 ∙ 0,2 ∙ 0 − 1 ∙ 2)

= (0, 6, −2)

z=v×u

= (2, 0,0) × (2, 1,3)

= (0 ∙ 3 − 0 ∙ 1,0 ∙ 2 − 2 ∙ 3,2 ∙ 1 − 0 ∙ 2)

= (0, −6,2)

该结果说明u×vv×u。也就是,叉积不支持交换律。实际上,它可以表达为u×v= −v×u。读者可以通过左手拇指定则来判断由这个叉积得出的向量。如果你从第1个向量朝着第2个向量的方向卷曲手指时(通常选择角度最小的路径),你的拇指会指向最终得到的向量的方向,如图1.13所示。为了说明w既垂直于u,也垂直于v,我们回顾1.3节的内容:如果uv=0,则uv(即,向量相互垂直)。因为

wu= (0, 6, −2) ∙ (2, 1,3) =0 ∙ 2 +6 ∙ 1+ (−2) ∙ 3 =0

wv= (0, 6, −2) ∙ (2, 0,0) =0 ∙ 2 +6 ∙ 0+ (−2) ∙ 0 =0

我们得出结论:w既垂直于u,也垂直于v

1.4.1 2D伪叉积

叉积可以计算垂直于给定两个3D向量的向量。在2D的情况中,并不存在这种情况,但我们常常要求出垂直于给定2D向量u = (ux,uy)的向量v。图1.14展示了这种操作的几何图景,从图中可以看出v = (-uy, ux)。数学证明很简单:

uv= (ux,uy)•(-uy,ux)= -uxuy+ uyux= 0

所以uv。而u•-v=uxuy+ uy(-ux) =0,也为零,所以还能得出结论:u⊥-v

图1.14
图1.14 u向量的2D伪叉积为一个垂直于它的向量v

1.4.2 使用叉积进行正交规范化

在1.3.1节中,我们介绍了一种正交化一组向量的处理方法。对3D的情况来说,还可以使用叉积对一组向量(这些向量近似正交,但由于数值累积精度的误差,会变得不再正交)进行正交规范化操作。可参见图1.15理解这个过程的几何图景:

1.令\({{\bf{w}}_0} = \frac{{{{\bf{v}}_0}}}{{\left\| {{{\bf{v}}_0}} \right\|}}\)

2.令\({{\bf{w}}_2} = \frac{{{{\bf{w}}_0} \times {{\bf{v}}_1}}}{{\left\| {{{\bf{w}}_0} \times {{\bf{v}}_1}} \right\|}}\)

3.令\({{\bf{w}}_1} = {{\bf{w}}_2} \times {{\bf{w}}_0}\)。由后面的练习14可知,因为w2w0且||w2||=||w0||=1,所以||w2×w0||=1,这样我们就无需进行规范化操作了。

图1.15
图1.15 使用叉积进行3D正交化

至此,完成了向量集{w0,w1,w2}的正交规范化处理。

注意:在前面的示例中,我们首先令\({{\bf{w}}_0} = \frac{{{{\bf{v}}_0}}}{{\left\| {{{\bf{v}}_0}} \right\|}}\),表示从v0变化到w0并没有改变向量的方向,只是改变了大小。但是,w1w2的方向与v1v2的方向并不相同。根据应用程序的需要,选择哪个向量不改变方向可能会很重要。例如,本书的后面我们将会使用三个正交向量{v0,v1,v2}代表相机的朝向,其中第三个向量v2表示相机的观察方向。当正交规范化这三个向量时,我们常常不想改变观察的方向,因此,我们会首先使用上面的算法处理v2,然后修改v0v1生成正交向量。

文件下载(已下载 628 次)

发布时间:2014/9/10 下午8:59:53  阅读次数:4945

2006 - 2024,推荐分辨率 1024*768 以上,推荐浏览器 Chrome、Edge 等现代浏览器,截止 2021 年 12 月 5 日的访问次数:1872 万 9823 站长邮箱

沪 ICP 备 18037240 号-1

沪公网安备 31011002002865 号