1.4 叉积
来源:互联网 发布:微信附近人采集软件 编辑:程序博客网 时间:2024/05/21 19:26
1.4 叉积
叉积(cross product)是向量数学定义的第二种乘法形式。它与点积不同,点积的计算结果是一个标量,而叉积的计算结果是一个向量;另外,叉积只能用于3D向量(2D向量没有叉积)。通过对两个3D向量u和v计算叉积,可以得到第3个向量w,该向量同时垂直于u和v。也就是说,w既垂直于u,w也垂直于v(参见图1.13)。设u=(ux,uy,uz),v=(vx,vy,vz),则叉积为:
图1.13 通过为两个3D向量u和v计算叉积,可以得到第3个向量w,该向量同时垂直于u和v。如果读者抬起左手,将拇指之外的其他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×v和z=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×v≠v×u。也就是,叉积不支持交换律。实际上,它可以表达为u×v= −v×u。读者可以通过左手拇指定则来判断由这个叉积得出的向量。如果你从第1个向量朝着第2个向量的方向卷曲手指时(通常选择角度最小的路径),你的拇指会指向最终得到的向量的方向,如图1.13所示。为了说明w既垂直于u,也垂直于v,我们回顾1.3节的内容:如果u∙v=0,则u⊥v(即,向量相互垂直)。因为
w∙u= (0, 6, −2) ∙ (2, 1,3) =0 ∙ 2 +6 ∙ 1+ (−2) ∙ 3 =0
和
w∙v= (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)。数学证明很简单:
u•v= (ux,uy)•(-uy,ux)= -uxuy+ uyux= 0
所以u⊥v。而u•-v=uxuy+ uy(-ux) =0,也为零,所以还能得出结论:u⊥-v。
图1.14 u向量的2D伪叉积为一个垂直于它的向量v
1.4.2 使用叉积进行正交规范化
在1.3.1节中,我们介绍了一种正交化一组向量的处理方法。对3D的情况来说,还可以使用叉积对一组向量(这些向量近似正交,但由于数值累积精度的误差,会变得不再正交)进行正交规范化操作。可参见图1.15理解这个过程的几何图景:
1.令
2.令
3.令
图1.15 使用叉积进行3D正交化
至此,完成了向量集{w0,w1,w2}的正交规范化处理。
注意:在前面的示例中,我们首先令
- 1.4 叉积
- 叉积
- 叉积
- 叉积
- 叉积
- 叉积
- 叉积
- 叉积
- [zz]叉积
- 1.4
- 1.4
- 1.4
- 1.4
- 1.4
- 1.4
- 1.4
- 1.4
- 1.4
- PB对数据窗口的查询语句进行动态修改
- 安装安卓studio
- 开篇
- [区间DP 思路题] BZOJ 4350 括号序列再战猪猪侠
- 将给定的字符串与给定的长度的汉字字符串两端对齐
- 1.4 叉积
- c++ 构造函数注意事项
- codeforces 554d[补]
- Plugin is too old, please update to a more recent version问题根本解决办法
- 主键生成策略优劣比较以及应用
- Android杂谈(22)GreenDAO的使用
- 【b604】2K进制数
- bzoj【1552/3506】[Cerc2007]robotic sort
- Android UI控件之ListView&RecyclerView