wpf - 查找折线之间交点的算法

标签 wpf algorithm computational-geometry polyline line-intersection

Bentley-Ottmann 算法适用于查找直线集的交点。但是我有很多折线:

enter image description here

有没有办法找到一组折线的交点?

我正在弄清楚,但与此同时,如果有人可以提供一些指示或想法,那将很有帮助。谢谢阅读。顺便说一下,我使用的是 WPF/C#,所有折线都是 PathGeometry。

图片来源:http://www.sitepen.com/blog/wp-content/uploads/2007/07/gfx-curve-1.png

最佳答案

扫描线算法有一个很好的理论,但很难稳健地实现。您需要处理垂直线段,并且可能会出现两条以上的线段在一个点上相交(甚至共享一条公共(public)线段)的情况。

我会使用 R-Tree 存储折线线段的边界框,然后使用 R-Tree 查找可能相交的元素。只有这些需要进行交集测试。优点是您可以为每条折线使用单独的 R 树,从而避免检测自相交(如果需要)。

考虑使用 CGAL 的精确谓词内核来获得可靠的结果。

关于wpf - 查找折线之间交点的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8119403/

相关文章:

wpf - 数学运算符可以应用于绑定(bind)路径吗?

php - 8 拼图,图树路径生成器

algorithm - 三角划分

math - 使用 d3 检查三角形高度的逻辑

wpf - 如何在 WPF 中创建重复的对角线作为背景?

c# - XAML - TextTrimming 不适用于 LineBreaks?

c# - 发布应用程序时实体返回 null

php - 获取螺旋矩阵的对角线值

algorithm - 最大比例子串

algorithm - 用直线划分平面上的点