一尘不染

如何判断一个点是在一条线的右边还是左边

c#

我有几点要点。我想将它们分为2个不同的集合。为此,我选择两个点( ab
)并在它们之间画一条假想线。现在,我要使一组中的该行剩余的点和另一组中的该行右边的点。

如何确定给定点 z 是在左侧还是右侧?我试图计算 azb 之间的角度-小于180度的角度在右侧,大于180度的左侧-
但是由于ArcCos的定义,计算出的角度始终小于180°。是否存在用于计算大于180°的角度的公式(或用于选择右侧或左侧的任何其他公式)?


阅读 1830

收藏
2020-05-19

共1个答案

一尘不染

使用vector的行列式符号(AB,AM),其中M(X,Y)查询点为:

position = sign((Bx - Ax) * (Y - Ay) - (By - Ay) * (X - Ax))

0在线上,+1在一侧,-1在另一侧。

2020-05-19