Как определить, пересекаются ли два многоугольника?

Представьте, что у меня есть координата 4 точек, которые образуют многоугольник. Эти точки представлены с помощью PointF в C #. Если у меня есть 2 полигона (используя 8 точек), как я могу определить, пересекаются ли они?

У класса Rectangle есть метод IntersectsWith, но я не смог найти что-то похожее для GraphicsPath или Region. 12224 Любой совет будет принят с благодарностью.

Mosh

8
задан Mosh 1 September 2010 в 05:45
поделиться

1 ответ

Строго говоря, другие ответы, предлагающие алгоритм, вероятно, являются вашим лучшим выбором. Но помимо производительности, вы упомянули, что не можете найти ничего похожего на IntersectsWith для GraphicsPath или Region. Однако существует метод Intersect, который обновляет регион, чтобы он стал пересечением самого себя и другого региона или пути. Вы можете создать два региона, Intersect() один с другим, а затем проверить Region.IsEmpty().

Но я предполагаю, что это, вероятно, довольно медленный способ сделать это и, вероятно, приведет к большому количеству аллокаций, если делать это в цикле.

4
ответ дан 5 December 2019 в 15:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: