Javascript 多边形裁剪

Javascript 多边形裁剪,javascript,polygon,clipping,Javascript,Polygon,Clipping,我这里的问题很难用语言来描述。。。所以我会用图片! 总的来说,我的问题如下: 假设我有一个多边形: 在两点处与开放多边形B相交: 从这个交点形成两个闭合多边形的算法是什么?(请注意,这里有三种解决方案—我正在搜索的解决方案已突出显示) 更好的解决方案是 所有解决方案中最小的解决方案: A不含B 那么,在交叉口发生后如何生成B(和新的a)有什么建议吗?我对多边形数学(以及一般的2D形状交互)是新手,所以我不知道从哪里开始,也不知道从哪里看 谢谢 通过多边形的轮廓“表示”多边形。轮廓是一个

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

假设我有一个多边形:

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

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

更好的解决方案是

  • 所有解决方案中最小的解决方案:
  • A不含B
那么,在交叉口发生后如何生成B(和新的a)有什么建议吗?我对多边形数学(以及一般的2D形状交互)是新手,所以我不知道从哪里开始,也不知道从哪里看

谢谢

通过多边形的轮廓“表示”多边形。轮廓是一个有序的顶点序列(每个顶点由其平面坐标x和y给出)。 在A内绘制的分段多段线是新多边形B轮廓的一部分。同一轮廓的另一部分是轮廓A的两部分之一。您可以选择两部分中的哪一部分(您说的是最小的,但不清楚这意味着什么…最小的面积?)

最后,通过使用同样属于B的轮廓A部分完成B的一系列顶点来闭合B的轮廓。这是所需多边形区域的轮廓/表示,这是您的解决方案


如果您得到2个B(一个用轮廓A的前“一半”完成,另一个用第二个完成),并且希望其中一个具有最小的面积,那么您只需计算两个B的面积(通过使用轮廓顶点的坐标)并选择最小的。您可以通过使用二维多边形顶点的坐标轻松搜索该公式,也可以尝试自己推导该公式。

我相信您要搜索的是所谓的多边形切片,因此您也可以搜索该公式。请注意,理论上,根据行的不同,您可以得到多于2个部分。@GrandmasterB Woah!那东西很强烈。。。而且还远远超过了我的头!也许有更好的办法来解决我的问题。我想做的是用点填充多边形A,让用户通过画线将它们分割成区域(因此是未闭合的多边形B)。。。这是我能想到的唯一方法。。。也许我必须将用户限制为一个线条笔划来简化事情?哦,我知道。一开始听起来很简单:-)您可能会四处寻找执行此操作的现有库。某些现有的javascript图形库可能具有此功能。@GrandmasterB IDK。。。包含一个完整的图形库来执行一项任务似乎有点极端。。。我会进一步调查的!谢谢