Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы_ГК.docx
Скачиваний:
26
Добавлен:
15.04.2019
Размер:
128.49 Кб
Скачать

15. Алгоритмы глобального упрощения линий

Линия рассматривается как целое

Алгоритм Дугласа-Пейкера. Принцип: задание коридора допустимых отклонений r1 в многократный просмотр с помощью этой полосы всех точек линий, начиная с первой и последней, фиксация каждый раз наиболее удаленной от ее центральной линии точки. Так обрабатывается вся исходная линия, пока все точки не окажутся внутри своего коридора. Упрощенная линия будет образована центральными линиями всех построенных коридоров.

Для оценки процесса упрощения используют различные параметры исходной и упрощенной линии (длина, угловатость и кривизна их смещения). Алгоритм Дугласа-Пейкера дает наилучшие результаты: лучше других сохраняет важные геометрические характеристики данных.

16. Алгоритмы определения пересечения линий: простейшие и особые случаи

Определение пересечения линий.

Информация для создания цифровой карты собирается и представляется послойно. Большинство ГИС – технологий анализа и визуализации таких слоев базируется на операции определения пересечения линий. Она является ключевой при выполнении векторных процедур наложения полигонов, слияния и поглощения полигонов и линий, удаления остаточных контуров и т.д. включая выяснения принадлежности точки полигону. Базовой частью алгоритма для этой операции является определение существования точки пересечения 2 линейных отрезков, заданных координатами концов, и вычисление ее координат. Основной вопрос, который решает этот алгоритм – пересекает ли линия соединяющая точки с координатам (х11) и (х22) с линией, соединяющей точки (u1,v1) (u2,v2)

Уравнение отрезка в параметрическом виде:

x=x1=(x2-x1)t, y=y1+(y2-y1)t, где t – параметр (от 0 до 1), начальная точка (х1,у1) соответствует t=0, конечная точка (х2,у2) соответствует t=1. Предполагается что хотя бы одна разность (х2-х1) или (у2-у1) отлична от 0. Аналогично уравнение второй линии:

x= u1=( u2- u1) Ʈ, y=v1+( v2- v1)Ʈ

Точка пересечения определяется системой:

(x2-x1)t-( u2- u1) Ʈ=u1-x1

(y2-y1)t- v1+( v2- v1)Ʈ=v1-y1

t и Ʈ от 0 до 1 (включ)

х=-(а12)/(в12) у=а1-b1х

Для нахождения решения системы уравнений необходимо определить значения трех детерминантов:

Главного Δ=(u2-u1)(y2-y1)-(x2-x1)(v2-v1)

И двух частных Δ(1)=(u2-u1)(v2-y1)-(u1-x1)(v2-v1),

Δ(2)=(x2-x1)(v1-y1)-(u1-x1)(y2-y1).

Возможны следующие случаи:

  1. Если Δ≠0, то существует единственная искомая точка пересечения отрезков, определяемая правилом Крамера: t= Δ(1)/ Δ, Ʈ= Δ(2)/ Δ и усл t и Ʈ от 0 до 1 (вкл).

  2. Если Δi,j=0, то тогда должны быть Δ(1)=0 и Δ(2)=0. В этом случае отрезки будут частично или полностью совпадать. При этом возможны 4 варианта их взаимного расположения

Принадлежность точки полигону

Часто возникает задача определения расположения точки внутри или вне полигона, какой из полигонов содержит каждую из точек и т.п.

Общий подход к решению этого типа задач состоит из 2 процедур:

  1. провести вертикальную линию от исследуемой точки вверх

  2. подсчитать сколько раз эта линия пересечет границу полигона, если число – нечетное, то точка находится внутри полигона, если четное – вне.

Т.к. полигоны представлены с помощью отрезков, то для нахождения пересечения необходимо проверить все отрезки, используя описания вычислений алгоритма. Пересечение считается тогда, когда 2 последние точки на границе полигона, который находится слева и справа от проведения вертикали. Для алгоритма неважно, какую форму имеет полигон – выпуклую или вогнутого многоугольника. Но пересечение может не быть, если совпадает с вертикалью вертикаль участок границы полигона.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]