多边形裁剪

时间:2017-05-27 04:42:59

标签: javascript polygon clipping

我在这里的问题很难用语言描述......所以我会用图片! 一般来说,我的问题如下:

说我有Polygon A:

Polygon A

通过开放多边形B在两点处相交:

Polygon B Intersecting A

我可以在这个交叉点形成两个闭合多边形的算法是什么? (请注意,这里有三个解决方案,我正在搜索的那个解决方案突出显示)

enter image description here

优选的解决方案是

  • 所有解决方案中最小的一个:
  • 包含B

那么,关于如何在交叉点之后生成B(和新的A)的任何建议?我是Polygon Math(和一般的2D Shape交互)的新手,所以我不知道从哪里开始或在哪里看!

谢谢!

1 个答案:

答案 0 :(得分:0)

你用他们的轮廓“代表”你的多边形。轮廓是以某种方式排序的顶点序列(每个顶点由其平面坐标x和y给出)。 你在A中绘制的分段折线是新多边形B的轮廓的一部分。同一轮廓的另一部分是轮廓A的两半之一。你选择两个中的哪一个(你说最小的,但目前尚不清楚这意味着什么......最小的区域?)。

最后,你关闭B的轮廓,通过完成它的一系列顶点,轮廓A的那部分也属于你所需的多边形区域的轮廓/表示,这就是你的解决方案

如果你有2个B(一个用轮廓A的第一个“半”完成,另一个用第二个完成),并且想要一个面积最小的那个,你只需计算两个B中每一个的面积(通过使用轮廓顶点的坐标)并选择最小的。您可以通过使用顶点的坐标轻松搜索为您提供2D多边形区域的公式,或者您可以尝试自己派生它。