这似乎很重要(在各种论坛上被问了很多),但我绝对需要它作为更复杂算法的构建块。
输入:2D 中的 2 个多边形(A 和 B),每个都作为边列表给出[(x0, y0, x1, y2), ...]
。这些点由double
s对表示。我不知道它们是顺时针,逆时针还是任何方向。我知道它们不一定是凸的。
输出:代表 A、B 和相交多边形 AB 的 3 个多边形。其中任何一个都可能是空 (?) 多边形,例如null
.
优化提示:这些多边形代表房间和地板的边界。所以房间边界通常会与楼层边界完全相交,除非它属于同一平面上的另一个楼层(啊!)。
我有点希望有人已经在 c# 中做到了这一点,并让我使用他们的策略/代码,因为到目前为止我在这个问题上发现的内容相当令人生畏。
编辑:所以看起来我并不完全因为这样做而感到头晕目眩。我想在这里重申所需的输出,因为这是一种特殊情况,可能会使计算更简单:
输出:第一个多边形减去所有相交位,相交多边形(复数可以)。我对第二个多边形并不感兴趣,只是它与第一个多边形的交集。
EDIT2:我目前正在使用GPC(通用多边形剪裁器)库,这使得这非常容易!