如何判断二维向量B相对于参考向量A的朝向(左侧/右侧)
二维向量B相对A的左右侧判断方法
核心判断逻辑基于二维向量的叉积运算,无需计算角度,效率极高:
- 先明确两个向量的坐标:假设起点重合的二维向量A坐标为
(Ax, Ay),向量B坐标为(Bx, By) - 计算二者的有向叉积:
cross = Ax * By - Ay * Bx - 根据叉积符号直接判定位置:
- 若
cross > 0:B位于A的左侧(即从A逆时针旋转到B的方向) - 若
cross < 0:B位于A的右侧(即从A顺时针旋转到B的方向) - 若
cross = 0:A与B共线,不存在左右区分,二者方向可能相同或相反
注:该逻辑的底层原理是二维叉积的几何意义为两个向量组成的平行四边形的有向面积,符号直接对应了两个向量的相对旋转方向,天然适配平面左右区域的划分需求。
如果需要快速实现可以参考以下Python代码片段:
def get_relative_side(vector_a: tuple[float, float], vector_b: tuple[float, float]) -> int: cross_product = vector_a[0] * vector_b[1] - vector_a[1] * vector_b[0] if cross_product > 1e-9: # 加入浮点误差容限 return 1 # 左侧 elif cross_product < -1e-9: return -1 # 右侧 else: return 0 # 共线
内容的提问来源于stack exchange,提问作者G.Azma
相关产品推荐
相关产品推荐

