Закрепите сегмент линии на многоугольник в C#

В этом примере найдены фрагменты сегмента линии, которые лежат внутри и снаружи многоугольника. Он рисует части сегмента, которые лежат вне многоугольника с розовым фоном, и он рисует части сегмента внутри полигона желтым цветом.

Основная идея состоит в том, чтобы найти все точки пересечения между отрезком линии и краями многоугольника. Метод FindIntersection, используемый в этом примере, вычисляет значение t между 0.0 и 1.0, которое указывает положение точки пересечения вдоль сегмента линии. Значение 0.0 означает, что пересечение находится в первой конечной точке сегмента, 1.0 означает, что пересечение находится во второй конечной точке сегмента, а значения между 0.0 и 1.0 означают, что пересечение находится между ними.

После вычисления точек пересечения между отрезком и краями многоугольника программа сортирует эти пересечения по их значениям t. Сортированные точки пересечения - это места, где сегмент поочередно входит и покидает многоугольник.

В следующем коде показан метод ClipLineWithPolygon, который находит точки пересечения.

Этот метод достаточно понятен.

Информацию о методе PointIsInPolygon см. в сообщении Определить, находится ли точка внутри многоугольника в C# .

Информацию о методе FindIntersection см. в сообщении Определить, где две строки пересекаются в C# .

Источник: http://csharphelper.com/blog/2016/01/clip-a-line-segment-to-a-polygon-in-c/

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)

Add a Comment

Ваш e-mail не будет опубликован. Обязательные поля помечены *