微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用多个直线切割分割 2D 多边形

如何解决使用多个直线切割分割 2D 多边形

如何使用多条直线切割线将多边形分割成更小的多边形?想象一下用锋利的刀切纸。我正在寻找一种已知的算法来解决这个问题,或者更好的是现有的 javascript 库。

我认为布尔运算不能解决这个问题,但我当然可能是错的。

Polygon split up using multiple cuts

解决方法

我按照 David Eisenstat 在对问题的评论中提供的步骤进行操作并使其正常工作。所以基本上:

1.查找所有线交点

包括多边形中的所有切割线和每条单独的线。 Bentley-Ottmann sweep line algorithm 可用于查找交点。

2.构建图形

使用交点及其相应的线段很容易做到这一点。

3.在图中查找循环

当时的图表是 decomposed into a collection of oriented cycles

split up polygon using javascript

,

我向 Angus Johnson 的 Clipper 图书馆发誓:

http://www.angusj.com/delphi/clipper/documentation/Docs/Overview/_Body.htm

它使用了 Vatti 算法,该算法涉及一些复杂的树结构来跟踪交叉点。它处理多边形孔洞、多个重叠多边形、将几乎平行的线与固定点合并,它的标记机制让您可以非常详细地跟踪事后在何处相交。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。