查找多边形内侧的算法
Algorithm to find the inner side of a polygon
在我的类似 CAD 的应用程序中,我有不同种类的二维多边形。可以凹也可以凸,可以顺时针也可以逆时针画。
现在我想找出这样一个多边形的内侧在哪里,意味着在它的开头我想添加一个向量,它与下一个向量成 90 度角,但指向多边形的内侧多边形。
所以:知道如何计算这个并找到这个附加向量的内侧吗?
谢谢!
在任何地方取一个点,创建新向量列表,每个向量从该点到您的边缘向量,将此列表中每个向量与下一个向量(包括最后一个与第一个)的角度相加。如果点在外面,结果为 0,如果在里面,则结果为 360(顺时针)或 -360(逆时针)。
给定多边形的 n 个边向量 v_1, ..., v_n 你可以找到如下的内侧:
- for i from 1 to n calculate the angle between v_i, v_(i+1) (for i=n use v_n and v_1 instead)
- 总结这些角度
如果总和为 2pi/-2pi(或 360/-360 度)则内侧位于 "to the right/left"
在我的类似 CAD 的应用程序中,我有不同种类的二维多边形。可以凹也可以凸,可以顺时针也可以逆时针画。
现在我想找出这样一个多边形的内侧在哪里,意味着在它的开头我想添加一个向量,它与下一个向量成 90 度角,但指向多边形的内侧多边形。
所以:知道如何计算这个并找到这个附加向量的内侧吗?
谢谢!
在任何地方取一个点,创建新向量列表,每个向量从该点到您的边缘向量,将此列表中每个向量与下一个向量(包括最后一个与第一个)的角度相加。如果点在外面,结果为 0,如果在里面,则结果为 360(顺时针)或 -360(逆时针)。
给定多边形的 n 个边向量 v_1, ..., v_n 你可以找到如下的内侧:
- for i from 1 to n calculate the angle between v_i, v_(i+1) (for i=n use v_n and v_1 instead)
- 总结这些角度
如果总和为 2pi/-2pi(或 360/-360 度)则内侧位于 "to the right/left"