要判断平面内一个点位于有向线段的左侧还是右侧,可以结合向量叉乘、向量点乘的代数和几何意义来进行计算判断。
数学基础
a=(x1,y1,0)b=(x2,y2,0)
向量点乘
两个向量点乘的结果是一个标量,有以下两种算法。
a⋅b=x1⋅x2+y1⋅y2
a⋅b=∣a∣⋅∣b∣⋅cosθθ:向量a和b之间的夹角,θ∈[0,π]
向量点乘的正负号有重要意义:
a⋅b=0:cosθ=0,θ=2πa⋅b>0:cosθ>0,θ∈[0,2π)a⋅b<0:cosθ<0,θ∈(2π,π]
实际使用时,通常通过代数计算两向量的点乘结果,根据该结果的正负来做几何上的判断。
向量叉乘
两个向量叉乘的结果是一个向量,有以下两种算法。
a×b=(0,0,x1y2−y1x2)
a×b=(∣a∣∣b∣sinθ)n
模:∣a×b∣=∣a∣⋅∣b∣⋅sinθ
方向:为n的方向,遵守右手螺旋法则,右手握拳,四指沿a、b环绕,则大拇指所指方向就是结果向量的方向。
点在左(右)侧时的向量叉乘区别
AB×AP的方向垂直于纸面向外
AB×AP的方向垂直于纸面向里
- 结论:P在AB左侧时,AB和AP向量叉乘的结果向量垂直纸面向外;P在右侧时,垂直纸面向内。
结合向量点乘进一步推导
前面已知,当两个向量的点乘结果大于零表明两个向量之间的角度不大于90°。
那么要判断一个向量是垂直纸面向外(向内),我们可以将该相连与(0,0,1)向量进行点乘,结果大于零表明垂直纸面向外,小于零表明垂直纸面向内。
z=(0,0,1)(a×b)⋅z=(0,0,x1y2−y1x2)⋅(0,0,1)=x1y2−y1x2
所以,判断平面内一个点位于有向线段的左侧还是右侧,其整体逻辑如下:
x1y2−y1x2>0:AB与AP叉乘结果,垂直纸面向外,P在AB左侧x1y2−y1x2<0:AB与AP叉乘结果,垂直纸面向内,P在AB右侧