如何判断一个点是否更靠线段的右侧?
How to tell whether a point is more to the right of a segment?
我怎么知道AB右边的第一段是什么?
所以我们从 A 开始,到达 B,然后我需要走最右边 - 到 C。
但是我如何从数学上找到这个呢?
请记住,在任何方向上都可能有更多来自 B 的段。
(其中一些或全部可能在 B 的左侧 - 在我的图像中 C 和 D 在右侧)
我们确实有顶点的所有坐标 - x 和 y!
我正在考虑
- 判断 C 和 D 是在通过 AB 的线的右侧还是左侧,
- 如果两者都在右边,画一条从C到AB的垂线和一条从D到AB的垂线
从 A 到垂线的距离最短者获胜?
您有坐标 AX、AY、BX、BY 和 PX、PY 每隔一个点。
需要计算所有点P[i]
中向量P-B
和A-B
之间的最小角度
abx = AX - BX
aby = AY - BY //calculate once
pbx = PX - BX
pby = PY - BY //calculated for every point
angle = atan2(-pbx*aby+pby*abx, pbx*abx+pby*aby)
if angle < 0:
angle += 2*Math.pi //to make range 0..2*Pi
计算每个点的角度(在某些语言中使用函数atan2
、Math.atan2
以及向量的叉积和点积),然后选择最小值-它对应于“最右转弯”
我怎么知道AB右边的第一段是什么? 所以我们从 A 开始,到达 B,然后我需要走最右边 - 到 C。 但是我如何从数学上找到这个呢? 请记住,在任何方向上都可能有更多来自 B 的段。 (其中一些或全部可能在 B 的左侧 - 在我的图像中 C 和 D 在右侧)
我们确实有顶点的所有坐标 - x 和 y!
我正在考虑
- 判断 C 和 D 是在通过 AB 的线的右侧还是左侧,
- 如果两者都在右边,画一条从C到AB的垂线和一条从D到AB的垂线 从 A 到垂线的距离最短者获胜?
您有坐标 AX、AY、BX、BY 和 PX、PY 每隔一个点。
需要计算所有点P[i]
P-B
和A-B
之间的最小角度
abx = AX - BX
aby = AY - BY //calculate once
pbx = PX - BX
pby = PY - BY //calculated for every point
angle = atan2(-pbx*aby+pby*abx, pbx*abx+pby*aby)
if angle < 0:
angle += 2*Math.pi //to make range 0..2*Pi
计算每个点的角度(在某些语言中使用函数atan2
、Math.atan2
以及向量的叉积和点积),然后选择最小值-它对应于“最右转弯”