1. <small id='w9AtV'></small><noframes id='w9AtV'>

    <legend id='w9AtV'><style id='w9AtV'><dir id='w9AtV'><q id='w9AtV'></q></dir></style></legend>

    <i id='w9AtV'><tr id='w9AtV'><dt id='w9AtV'><q id='w9AtV'><span id='w9AtV'><b id='w9AtV'><form id='w9AtV'><ins id='w9AtV'></ins><ul id='w9AtV'></ul><sub id='w9AtV'></sub></form><legend id='w9AtV'></legend><bdo id='w9AtV'><pre id='w9AtV'><center id='w9AtV'></center></pre></bdo></b><th id='w9AtV'></th></span></q></dt></tr></i><div id='w9AtV'><tfoot id='w9AtV'></tfoot><dl id='w9AtV'><fieldset id='w9AtV'></fieldset></dl></div>
    <tfoot id='w9AtV'></tfoot>

      • <bdo id='w9AtV'></bdo><ul id='w9AtV'></ul>

      是否有一种简单快捷的方法来检查多边形是否自相交?

      时间:2023-07-25

            <tbody id='DIBGn'></tbody>
          • <i id='DIBGn'><tr id='DIBGn'><dt id='DIBGn'><q id='DIBGn'><span id='DIBGn'><b id='DIBGn'><form id='DIBGn'><ins id='DIBGn'></ins><ul id='DIBGn'></ul><sub id='DIBGn'></sub></form><legend id='DIBGn'></legend><bdo id='DIBGn'><pre id='DIBGn'><center id='DIBGn'></center></pre></bdo></b><th id='DIBGn'></th></span></q></dt></tr></i><div id='DIBGn'><tfoot id='DIBGn'></tfoot><dl id='DIBGn'><fieldset id='DIBGn'></fieldset></dl></div>
            <tfoot id='DIBGn'></tfoot>

              <legend id='DIBGn'><style id='DIBGn'><dir id='DIBGn'><q id='DIBGn'></q></dir></style></legend>
                <bdo id='DIBGn'></bdo><ul id='DIBGn'></ul>

                <small id='DIBGn'></small><noframes id='DIBGn'>

                本文介绍了是否有一种简单快捷的方法来检查多边形是否自相交?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                问题描述

                我有一个 System.Windows.Shapes.Polygon 对象,其布局完全由一系列点决定.我需要确定这个多边形是否是自相交的,即多边形的任何边是否在一个不是顶点的点与任何其他边相交.

                I have a System.Windows.Shapes.Polygon object, whose layout is determined completely by a series of points. I need to determine if this polygon is self-intersecting, i.e., if any of the sides of the polygon intersect any of the other sides at a point which is not a vertex.

                有没有简单/快速的方法来计算这个?

                Is there an easy/fast way to compute this?

                推荐答案

                • 简单、缓慢、低内存占用:将每个段与所有其他段进行比较并检查交叉点.复杂度O(n2).

                  • Easy, slow, low memory footprint: compare each segment against all others and check for intersections. Complexity O(n2).

                    稍快,中等内存占用(上面的修改版本):将边缘存储在空间桶"中,然后在每个桶的基础上执行上述算法.m 个桶的复杂度 O(n2/m)(假设均匀分布).

                    Slightly faster, medium memory footprint (modified version of above): store edges in spatial "buckets", then perform above algorithm on per-bucket basis. Complexity O(n2 / m) for m buckets (assuming uniform distribution).

                    快速 &高内存占用:使用空间散列函数将边分割成桶.检查碰撞.复杂度O(n).

                    Fast & high memory footprint: use a spatial hash function to split edges into buckets. Check for collisions. Complexity O(n).

                    快速 &低内存占用:使用扫描线算法,例如描述的这里(或这里).复杂度O(n log n)

                    Fast & low memory footprint: use a sweep-line algorithm, such as the one described here (or here). Complexity O(n log n)

                    最后一个是我最喜欢的,因为它具有良好的速度 - 内存平衡,尤其是 Bentley-Ottmann 算法.实现也不太复杂.

                    The last is my favorite as it has good speed - memory balance, especially the Bentley-Ottmann algorithm. Implementation isn't too complicated either.

                    这篇关于是否有一种简单快捷的方法来检查多边形是否自相交?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                上一篇:给定 3 点,我如何计算法线向量? 下一篇:查找圆边上的坐标

                相关文章

                <tfoot id='x8Xug'></tfoot>

                  <i id='x8Xug'><tr id='x8Xug'><dt id='x8Xug'><q id='x8Xug'><span id='x8Xug'><b id='x8Xug'><form id='x8Xug'><ins id='x8Xug'></ins><ul id='x8Xug'></ul><sub id='x8Xug'></sub></form><legend id='x8Xug'></legend><bdo id='x8Xug'><pre id='x8Xug'><center id='x8Xug'></center></pre></bdo></b><th id='x8Xug'></th></span></q></dt></tr></i><div id='x8Xug'><tfoot id='x8Xug'></tfoot><dl id='x8Xug'><fieldset id='x8Xug'></fieldset></dl></div>
                  • <bdo id='x8Xug'></bdo><ul id='x8Xug'></ul>

                    <small id='x8Xug'></small><noframes id='x8Xug'>

                    <legend id='x8Xug'><style id='x8Xug'><dir id='x8Xug'><q id='x8Xug'></q></dir></style></legend>