Как на каждую вершину полилинии сделать точку
Перейти к содержимому

Как на каждую вершину полилинии сделать точку

  • автор:

Точка на каждой вершине (Полилиния)

Все вершины, кроме начальной

В шаблоне группы построитель Точка в каждой вершине создает точечные объекты на указанном расстоянии смещения от каждой вершины вдоль полилинейного объекта, созданного на карте. Построитель становится доступен при использовании шаблонов точечных объектов, когда геометрией первичного объекта является полилиния.

Чтобы просмотреть полный список построителей объектов, обратитесь к разделу Справка по построителям объектов.

Параметры

Положение вдоль линии

  • Нет – расстояние равно нулю. Это установка по умолчанию.
  • Расстояние – указывается в единицах измерения, которые выбираются из ниспадающего списка.
  • Пропорциональное – расстояние задается как отношение к длине сегмента. Например, 50 соответствует 50 процентам и интерпретируется как средняя точка.
  • Слева – отступ отсчитывается слева от сегмента.
  • Справа – отступ отсчитывается справа от сегмента.

Вершина до отступа

  • Отметьте Вершина до отступа , чтобы создать точечные объекты, измеренные от первичного линейного объекта.
  • Отключите эту опцию, чтобы создать точечные объекты, измеренные из объектов или других объектов построения, созданных предыдущим конструктором.
Подсказка:

Несколько линий

Например, отключите эту опцию, чтобы построить точечные объекты, совпадающие с объектами линии смещения, созданными конструктором Несколько простых линий с таким же расстоянием смещения.

Изменить контрольные точки

Редактировать вершины

Инструмент Редактировать вершины редактирует контрольные точки, если они включены. Этот инструмент находится на панели Изменить объекты .

  • Включить контрольные точки для отображения и редактирования контрольных точек.
  • Нажмите клавишу T , чтобы показать квадратный вьюер, следующий за курсором и подсвечивающий вершины и контрольные точки, попадающие в пределы допуска замыкания.

Добавить или удалить контрольную точку

Чтобы добавить контрольную точку, щелкните правой кнопкой на сегменте и выберите Добавить контрольную точку Добавить контрольную точку. Чтобы удалить контрольную точку, задержите курсор над контрольной точкой, щелкните правой кнопкой и выберите Удалить контрольную точку Удалить контрольную точку.

  1. Добавьте свои данные и настройте параметры для редактирования.

Ребро

Убедитесь, что слой, который вы собираетесь редактировать, доступен для редактирования; что система координат, назначенная активной карте, подходит для типа выполняемых вами изменений; и что функция замыкания настроена таким образом, что она будет помогать работать эффективно и точно. Чтобы курсор точно выполнял замыкание на ребро, включите замыкание и включите агент замыкания Ребро .

  • На ленте щелкните вкладку Редактирование . В группе Объекты щелкните Изменить Изменить объекты.
  • Щелкните Редактировать вершины Редактировать вершинына панели Изменить объекты .

    Чтобы найти этот инструмент, разверните Изменить форму или введите Вершины в текстовом окне Поиск .

    Активная выборка

    Щелкните инструмент Изменить выборку на панели инструмента и выберите полилинейный или полигональный объект.

    По выборке

    Если вы выбрали более одного объекта, выберите объект еще раз. В качестве альтернативы щелкните объект в виде выборки панели, чтобы подсветить его на карте, щелкните правой кнопкой мыши и щелкните Выбрать только это .

    Примечание:

    Вкладки Объекты и Ребра

    Если включена Топология карты, щелкните вкладку Объекты , чтобы показать инструмент выборки объектов. Вкладки Объекты и Ребра не требуются для завершения этого рабочего процесса. Эти вкладки доступны, только если включена топология карты или топология базы геоданных, чтобы вы могли переключаться между редактированием контрольных точек объектов и топологических ребер и узлов.

    Выбранный объект будет выделен на карте маркерами контрольных точек. По умолчанию в настройках проекта первая контрольная точка обозначена зеленым цветом, а последняя — красным.

  • Наведите курсор на сегмент.
  • Щелкните правой кнопкой сегмент, когда курсор примет форму сегмента Курсор сегмента, и щелкните Добавить контрольную точку Добавить контрольную точку.

    Или нажмите клавишу A и щелкните сегмент.

    Удалить контрольную точку

    Чтобы удалить контрольную точку, щелкните правой кнопкой и выберите Удалить контрольную точку .

    Либо щелкните контрольную точку и нажмите клавишу Delete либо нажмите клавишу D и щелкните контрольную точку.

    Завершить

  • Чтобы завершить объект, щелкните Готово или нажмите клавишу F2 .
  • Выбрать и переместить контрольную точку

    Чтобы выбрать и переместить контрольную точку, перетащите ее при помощи курсора. Чтобы выбрать и перетащить несколько контрольных точек одновременно, нажмите Ctrl+Shift и щелкните каждую из них.

    1. Добавьте свои данные и настройте параметры для редактирования.

    Убедитесь, что слой, который вы собираетесь редактировать, доступен для редактирования; что система координат, назначенная активной карте, подходит для типа выполняемых вами изменений; и что функция замыкания настроена таким образом, что она будет помогать работать эффективно и точно.

  • На ленте щелкните вкладку Редактирование . В группе Объекты щелкните Изменить Изменить объекты.
  • Щелкните Редактировать вершины Редактировать вершинына панели Изменить объекты .

    Чтобы найти этот инструмент, разверните Изменить форму или введите Вершины в текстовом окне Поиск .

    Активная выборка

    Щелкните инструмент Изменить выборку на панели инструмента и выберите полилинейный или полигональный объект.

    По выборке

    Если вы выбрали более одного объекта, выберите объект еще раз. Или щелкните объект в виде выборки панели, чтобы подсветить его на карте, щелкните правой кнопкой мыши и щелкните Выбрать только это .

    Примечание:

    Вкладки Объекты и Ребра

    Если включена Топология карты, щелкните вкладку Объекты , чтобы показать инструмент выборки объектов. Вкладки Объекты и Ребра не требуются для завершения этого рабочего процесса. Эти вкладки доступны, только если включена топология карты или топология базы геоданных, чтобы вы могли переключаться между редактированием контрольных точек объектов и топологических ребер и узлов.

    Выбранный объект будет выделен на карте с контрольными точками и маркерами контрольных точек. По умолчанию в настройках проекта первая контрольная точка обозначена зеленым цветом, а последняя — красным.

    Направленный курсор

  • Наведите курсор на контрольную точку.
  • Перетащите контрольную точку, когда курсор станет направленным .

    Чтобы выбрать и перетащить несколько контрольных точек одновременно, нажмите Ctrl+Shift и щелкните каждую из них. Чтобы выбрать совпадающие контрольные точки, воспользуйтесь инструментом Выбрать лассо Выбрать лассона панели инструментов. Выбрать контрольные точки

    Завершить

  • Чтобы завершить объект, щелкните Готово или нажмите клавишу F2 .
  • Конвертировать вершину или контрольную точку

    Чтобы конвертировать контрольную точку в вершину или вершину в контрольную точку, щелкните правой кнопкой контрольную точку или вершину и нажмите соответствующую команду.

    1. Добавьте свои данные и настройте параметры для редактирования.

    Убедитесь, что слой, который вы собираетесь редактировать, доступен для редактирования; что система координат, назначенная активной карте, подходит для типа выполняемых вами изменений; и что функция замыкания настроена таким образом, что она будет помогать работать эффективно и точно.

  • На ленте щелкните вкладку Редактирование . В группе Объекты щелкните Изменить Изменить объекты.
  • Щелкните Редактировать вершины Редактировать вершинына панели Изменить объекты .

    Чтобы найти этот инструмент, разверните Изменить форму или введите Вершины в текстовом окне Поиск .

    Активная выборка

    Щелкните инструмент Изменить выборку на панели инструмента и выберите полилинейный или полигональный объект.

    По выборке

    Если вы выбрали более одного объекта, выберите объект еще раз. Или щелкните объект в виде выборки панели, чтобы подсветить его на карте, щелкните правой кнопкой мыши и щелкните Выбрать только это .

    Примечание:

    Вкладки Объекты и Ребра

    Если включена Топология карты, щелкните вкладку Объекты , чтобы показать инструмент выборки объектов. Вкладки Объекты и Ребра не требуются для завершения этого рабочего процесса. Эти вкладки доступны, только если включена топология карты или топология базы геоданных, чтобы вы могли переключаться между редактированием вершин объектов и топологических ребер и узлов.

    Выбранный объект будет выделен на карте маркерами вершин. По умолчанию в настройках проекта первая вершина обозначена зеленым цветом, а последняя — красным.

    Направленный курсор

  • Наведите курсор на вершину или на контрольную точку.
  • Щелкните правой кнопкой вершину или контрольную точку, когда курсор станет направленным и выберите одну из следующих команд:

    Конвертировать вершину в контрольную точку Конвертировать вершину в контрольную точку Доступна при выполнении правого щелчка по вершине.
    Конвертировать контрольную точку в вершину Конвертировать контрольную точку в вершину Доступна при выполнении правого щелчка по контрольной точке.

    Завершить

  • Чтобы завершить объект, щелкните правой клавишей и выберите Готово или нажмите клавишу F2 .
  • В этом разделе
    1. Добавить или удалить контрольную точку
    2. Выбрать и переместить контрольную точку
    3. Конвертировать вершину или контрольную точку

    Список вершин полилинии в таблицу(программно).

    Ivanco

    Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

    Поделиться

    Расскажите друзьям

    Нравится Официальный форум компании Нанософт Разработка? Расскажите друзьям!

    • Ответов 56
    • Создана 8 г
    • Последний ответ 22 май
    Топ авторов темы
    Популярные дни
    • 11 сент 2019 5 постов
    • 22 февр 2017 4 постов
    • 22 авг 2017 4 постов
    • 17 март 2017 3 постов
    Популярные посты

    Ivanco

    Ivanco

    21 февраля, 2016

    1.Появился пользовательский интерфейс: 2.Появилась возможность реверса полилинии. 3.Добавлена возможность нумерации вершин полилинии текстом в модели. Команда для запуска: «PLL_APP» Работоспо

    Ivanco

    Ivanco

    скорректировал. изначальная длинна полки все равно жестко задана, но сейчас она масштабируется. попробуйте вообщем, отпишитесь удобно ли. новую версию прикрепил. PLL_APP.dll

    Ivanco

    Ivanco

    18 сентября, 2016

    Приложение обновлено до v0.2. Добавлено: -Удаление одинаковых/совпадающих вершин у полилинии. -Команда «упростить» позволяющая упрощать полилинию путем удаления коротких участков. Исправлено:

    Упрощение полигональной цепи

    Упрощение полигональной цепи — процесс, позволяющий уменьшить число точек полилинии.

    Задача

    Дана некоторая полилиния, заданная последовательностью точек [math] a_1, a_2, . a_n[/math] , и некоторое [math]\varepsilon[/math] . Требуется найти цепь [math] a_1, a_i, a_j, . a_n [/math] , являющейся подпоследовательностью исходной. Для этой цепи верно, что для всех [math]k[/math] , таких что [math] i \lt k \lt j:[/math] [math]\rho(a_k, Segment(a_i, a_j)) \le \varepsilon[/math] для любых соседних [math]i[/math] и [math]j[/math] .

    Существует также альтернативная задача, в которой вместо [math]\varepsilon[/math] задано число [math]k[/math] вершин в итоговой цепи. В этом случае требуется составить цепь [math] a_1, a_i, a_j, . a_n [/math] заданной длины таким образом, что максимально необходимое [math]\varepsilon[/math] для условия [math] \rho(a_k, Segment(a_i, a_j)) \le \varepsilon[/math] было минимально.

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

    Мотивация

    Такая задача встречается при обработки векторной графики и построении карт. Например, есть цепь, несколько точек которой попадают в один и тот же пиксель. Очевидно, что тогда можно упростить все эти точки в одну. В этом случае и пригодится упрощение, одним из вариантов реализации которого является алгоритм Дугласа-Пекера (Douglas-Peucker).

    В случае, когда у нас есть несколько устройств с разным dpi, например, монитор и принтер, то, взяв за [math]\varepsilon[/math] половину расстояния, которое помещается на одной из границ пикселя, мы можем растеризовать одну и ту же цепь для разных устройств.

    Алгоритм Дугласа-Пекера

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

    Описание

    Начальная полилиния представляет собой упорядоченный набор точек.

    Алгоритм рекурсивно делит полилинию. Входом алгоритма служат координаты всех точек между первой и последней включая их, а так же [math]\varepsilon[/math] . Первая и последняя точка сохраняются неизменными. После чего алгоритм находит точку, наиболее удалённую от отрезка, состоящего из первой и последней (оптимальный способ поиска расстояния от точки до отрезка рассмотрен ниже). Если точка находится на расстоянии, меньше, чем [math]\varepsilon[/math] , то все точки, которые ещё не были отмечены к сохранению, могут быть выброшены из набора, и получившаяся прямая сглаживает кривую с точностью не ниже [math]\varepsilon[/math] .

    Если же расстояние больше [math]\varepsilon[/math] , то алгоритм рекурсивно вызывает себя на наборе от начальной до данной и от данной до конечной точек (данная точка будет отмечена к сохранению).

    По окончанию всех рекурсивных вызовов итоговая полилиния строится только из тех точек, что были отмечены к сохранению.

    Псевдокод

    DouglasPeucker(int first, int last, double eps)

    max = -infinity index = -1 for (int i = first + 1; i < last; i++) distance = dist(points[i], segment(points[first],points[last])) if (distance >max && distance > eps) max = distance, index = i if(index == -1) return else answer[index] = true DouglasPeucker(first, index, eps) DouglasPeucker(index, last, eps)

    Пример

    Example DP.png

    Рассмотрим пример для точек, заданных на рисунке, где сплошная линия отражает исходную линию, и [math]\varepsilon = \sqrt 2[/math] .

    Шаг Действие
    [math]1[/math] Найдем наиболее удаленную точку от отрезка [math]1-5[/math] , это точка [math]3[/math]
    [math]2[/math] Расстояние до точки [math]3[/math] больше [math]\sqrt 2[/math] , добавляем ее в ответ
    [math]3[/math] Запустим алгоритм для точек [math]1[/math] и [math]3[/math]
    [math]4[/math] Найдем наиболее удаленную точку от отрезка [math]1-3[/math] , это точка [math]2[/math]
    [math]5[/math] Расстояние до точки [math]2[/math] меньше [math]\sqrt 2[/math] , возвращаемся
    [math]6[/math] Запустим алгоритм для точек [math]3[/math] и [math]5[/math]
    [math]7[/math] Найдем наиболее удаленную точку от отрезка [math]3-5[/math] , это точка [math]4[/math]
    [math]8[/math] Расстояние до точки [math]4[/math] меньше [math]\sqrt 2[/math] , возвращаемся
    [math]9[/math] Алгоритм завершен

    Полилиния, полученная в результате работы алгоритма, отражается черной пунктирной линией.

    Время работы

    Ожидаемая сложность алгоритма может быть оценена выражением [math]\Theta(n\log n)[/math] в лучшем случае, когда номер наиболее удаленной точки всегда оказывается лексикографически центральным. Однако, в худшем случае сложность алгоритма составляет [math]O(n^2)[/math] . Это достигается, например, в случае, если номер наиболее удаленной точки всегда соседний к номеру граничной точки.

    Замечания к алгоритму

    Топология

    К сожалению, алгоритм Дугласа-Пекера в ходе своей работы не сохраняет топологию. Это означает, что в ответе мы можем получить линию с самопересечениями.

    В статье де Берга (de Berg) «A New Approach to Subdivision Simplification»(1995) приведен алгоритм, позволяющий решать чуть более общую задачу, чем текущая: упрощение полигональной цепи с учетом обязательных особых точек, не входящих в нее и с учетом топологии. Можно использовать алгоритм и для текущего случая, задав множество особых точек пустым. Время работы алгоритма при этом составит [math]O(n^2\log n)[/math] . Краткое описание алгоритма дано ниже.

    Оптимальность

    Оптимальный по количеству точек ответ

    Ответ алгоритма Дугласа-Пекера

    Алгоритм может находить не минимальный по количеству точек ответ. Рассмотрим пример, в котором исходная линия с некоторым приближением будет представлять полуокружность. Мы можем подобрать такое [math]\varepsilon[/math] , что алгоритм добавит три точки помимо стартовой и конечной (точки через каждую четверть исходной линии), в то же время мы можем взять две точки через каждую треть исходной линии, для которых упрощение также верно.

    Решение альтернативной задачи

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

    Реализация

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

    Поиск расстояния от точки до отрезка

    Идея

    При определении расстояния от точки до отрезка нужно сначала проанализировать взаимное расположение точки и отрезка прямой, то есть, проверить, куда опустится перпендикуляр из точки: непосредственно на отрезок или на прямую, являющуюся продолжением рассматриваемого отрезка.

    Если перпендикуляр падает на отрезок, то ответом будет расстояние от исходной точки до точки пересечения отрезка с перпендикуляром, иначе — расстояние от исходной точки до одного из концов отрезка.

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

    Реализация

    DistancePtoS1.png

    Даны точка [math]O[/math] и отрезок, заданный точками [math]A[/math] и [math]B[/math] .

    • [math]R_1[/math] — отрезок [math][O; A][/math]
    • [math]R_2[/math] — отрезок [math][O; B][/math]
    • [math]R_[/math] — отрезок [math][A; B][/math]
    • [math]|R_1| \ge \sqrt<|R_2|^2+|R_|^2>[/math] , то ответ это [math]|R_2|[/math] , так как угол между [math]R_2[/math] и [math]R_[/math] при данном условии [math] \ge 90^[/math]
    • [math]|R_2| \ge \sqrt<|R_1|^2+|R_|^2>[/math] , то ответ это [math]|R_1|[/math] , так как угол между [math]R_1[/math] и [math]R_[/math] при данном условии [math] \ge 90^[/math]
    • Оба предыдущих условия ложны, то [math]\operatorname (\frac<| \overrightarrow \times \overrightarrow|><|\overrightarrow|>)[/math] , где [math] \overrightarrow = B — A[/math] и [math] \overrightarrow = A — O[/math] . Это следует из формул для площади параллелограмма через векторное произведение и через произведения основания на высоту

    Обзор ускорения работы алгоритма Дугласа-Пекера

    Как описано выше, в худшем случае алгоритм работает за [math]O(n^2)[/math] . Можно внести дополнения, которые позволят получить [math]O(n\log n)[/math] в худшем случае. Ускорение основывается на уменьшении времени поиска наиболее удаленной вершины. Это можно осуществить благодаря идее о том, что наиболее удаленная вершина лежит на выпуклой оболочке полигональной цепи. Описание ускорения взято из статьи Хершберга(Hershberger) «Speeding Up the Douglas-Peucker Line-Simplification Algorithm» (1992).

    Для построения выпуклой оболочки используется алгоритм Мелкмана, который работает для двумерной полигональной цепи без самопересечений за [math]O(n)[/math] , строя все промежуточные выпуклые оболочки, которые пригодятся в дальнейшем.

    После построения выпуклой оболочки используется бинарный поиск для нахождения наиболее удаленной вершины за [math]O(\log n)[/math] . Затем, если потребуется, действия повторятся рекурсивно, как и в оригинальном алгоритме, но заново строить оболочки не имеет смысла, так как промежуточные уже были построены. Использовав их, можно разбить текущую оболочку на две за [math]O(\log n)[/math] .

    В итоге получается, что в худшем случае [math]O(n)[/math] разбиений за [math]O(\log n)[/math] и поиск за [math]O(\log n)[/math] , что дает [math]O(n\log n)[/math] .

    Замечания

    К сожалению, у данного метода есть несколько недостатков по сравнению с оригинальным алгоритмом, некоторые из которых уже были упомянуты:

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

    Алгоритм Реуманна-Виткама

    Pw2.png

    Алгоритм Реуманна-Виткама (Reumann-Witkam) определяет прямую через первые две точки цепи, последняя из последовательных точек начиная со второй, удаленных небольше чем на [math]\varepsilon[/math] , соединяются прямой, а все промежуточные точки исключаются.

    Алгоритм продолжится последовательно для оставшихся точек до тех пор, пока не будет достигнута последняя.

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

    Алгоритм Опхейма

    Op.png

    Алгоритм Опхейма (Opheim) несколько схож с алгоритмом Реуманна-Виткама. В этом алгоритме мы рассматриваем все вершины в [math]\varepsilon[/math] радиусе от первой, и строим луч из текущей и последней, попавшей в радиус. Если таких точек нет, то берется следующая за исходной.

    Последующие вершины упрощаются до тех пор, пока их расстояние до луча превосходит [math]\varepsilon[/math] и радиальное расстояние до первой точки превосходит [math]\varepsilon[/math] . Затем алгоритм продолжается для оставшихся точек до тех пор, пока не будет достигнута последняя.

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

    Алгоритм Ланга

    La.png

    Алгоритм Ланга (Lang) определяет фиксированный размер поисковой области для упрощения. Две точки, что образуют поисковую область, составляют отрезок. Этот отрезок используется для расчета перпендикулярного расстояния до каждой промежуточной точки. Если рассчитанное расстояние больше заданного [math]\varepsilon[/math] , область поиска будет уменьшен путем исключения ее последней точки.

    Этот процесс будет продолжаться, пока все рассчитанные расстояния не будут ниже заданного [math]\varepsilon[/math] , или когда нет больше промежуточных точек. Все промежуточные точки удаляются, а новая область поиска определяется, начиная с последней точки в старой области.

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

    Алгоритм, сохраняющий топологию

    Алгоритм сохраняющий топологию, как было упомянуто ранее, содержится в статье де Берга A New Approach to Subdivision Simplification, где расскрываются также детали реализации, здесь же описывается идея алгоритма. Также стоит обратить внимание, что исходная полигональная цепь должна быть без самопересечений.

    Алгоритм делится на четыре основных этапа:

    • Создание графа [math]G_1[/math] , в котором помимо исходных ребер, добавлены все возможные сокращенные ребра. Иначе говоря ребра, для который верно, что [math]i \lt j[/math] и для любого [math]t[/math] , такого что [math]i \lt t \lt j[/math] , верно [math]\rho(V_t, \overline) \le \varepsilon[/math] .
    • Создание графа [math]G_2[/math] , в котором добавлены все возможные ребра, не нарушающие топологию. На этом этапе построение выполняется без учета [math]\varepsilon[/math] .
    • Создание графа [math] G = G_1 \cap G_2[/math] , в котором будет содержаться кратчайшая полигональная цепь без самопересечений по построению [math]G_1[/math] и [math]G_2[/math] .
    • Поиск кратчайшего пути в [math]G[/math] , как в невзвешенном графе, этот путь и будет являться ответом на задачу.

    Ссылки

    • Алгоритм Дугласа-Пекера
    • Поиск расстояния от точки до отрезка
    • Поиск расстояния от точки до прямой
    • «Speeding Up the Douglas-Peucker Line-Simplification Algorithm»
    • Алгоритм Мелкмана
    • Алгоритм Мелкмана
    • Двоичный поиск на выпуклой оболочке
    • «A New Approach to Subdivision Simplification»
    • Алгоритмы и визуализатор упрощения полигональной цепи

    Добавить комментарий

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