向量点乘和叉乘在计算机图形学中的应用
向量点乘(Dot Product)(内积)
定义:空间中两个向量:a=(x1,y1,z1),b=(x2,y2,z2)。
定义:a和b之间的夹角为θ。
- 代数角度理解:点积是对两个向量对应位置上的值相乘再相加的操作
a⋅b=⎝⎛x1y1z1⎠⎞⋅⎝⎛x2y2z2⎠⎞=x1x2+y1y2+z1z2
- 几何角度理解:点积是两个向量的模与它们夹角余弦的积

a⋅b=∣a∣∣b∣cosθ
- 推导:
设a的终点为A=(x1,y1,z1)
设b的终点为B=(x2,y2,z2)
设原点为O(0,0,0)。
在三角形OAB中,根据余弦定理:

可得:
∣AB∣2=∣a∣2+∣b∣2−2∣a∣∣b∣cosθ
∣a∣=(x12)+(y12)+(z12)
∣b∣=(x22)+(y22)+(z22)
∣AB∣=(x1−x2)2+(y1−y2)2+(z1−z2)2
代入得:
∣a∣∣b∣cosθ=x1x2+y1y2+z1z2
即:
a⋅b=∣a∣∣b∣cosθ=x1x2+y1y2+z1z2
- 结论:
a⋅b 点乘的结果表示a在b方向上的投影与 ∣b∣的乘积。
反映了两个向量在方向上的相似度,结果越大越相似。基于结果可以判断这两个向量是否是同一方向,是否正交垂直。具体对应关系为:
(1) a⋅b >0,则, a 和b 方向基本相同,夹角在 0。 到90。之间。
(2) a⋅b =0,则, a 和b 方向垂直。
(3) a⋅b <0,则, a 和b 方向基本相反,夹角在 90。 到180。之间。
4.点乘的应用:a⋅b
(1)判断向量在方向上的相似度
(2)判断前面(forward)或者后面(backward),如果点积大于0,说明cosθ>0,说明a在前面。
向量叉乘(Cross Product)(外积)(向量积)
定义:空间中两个向量:a=(x1,y1,z1),b=(x2,y2,z2)。
定义:a和b之间的夹角为θ。
- 代数角度理解:
a×b=(y1z2−z1y2,z1x2−x1z2,x1y2−y1x2)
- 几何角度理解:
令 n 为 a和 b所构成的平面的单位向量
a×b=∣a∣∣b∣sinθ∗n
理解: 运算结果还是一个向量,并且与这两个向量都垂直,可以用右手定则确定方向。
- 右手定则:aX b,则用四指头从a旋转至 b。大拇指方向所指就是叉乘结果向量的方向。

- 叉乘的应用:a×b
(1)判断a 和 b的左右关系:
a×b >0,则 a 在 b的右侧。
(2) 判断点是否在三角形内部:


三角形abc按顺序,逆时针,形成 ab、bc、ca。
以每个顶点为基准:形成 ap、bp、cp。
根据叉乘的性质:右手定则:假设p在三角形内部:则必然 ab、bc、ca 都在点p的右侧。
则:计算:ab×ap >0
同理:bc×bp >0
ca×cp >0