Вставка точки в полигон

254
05 марта 2017, 08:37

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

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

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

алгоритм выберет позицию между точками 3 и 4, вмето 1 и 2.

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

Оба треугольника-кандидата имеют тупые углы у основания.

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

Answer 1

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

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

READ ALSO
Книги по Windows Forms C++

Книги по Windows Forms C++

Посоветуйте, пожалуйста, книги по Windows Forms C++

328
Кросскомпиляция проектов на основе ActiveMQ-cpp

Кросскомпиляция проектов на основе ActiveMQ-cpp

Откомпилировал и инсталлировал ActiveMQ-cpp на стороннем устройстве (ARM'e)Запустил на нем бинарные файлы примеров; они работают

341
Работа протокола SIP - авторизация

Работа протокола SIP - авторизация

Только начал изучение данного вопросаНа данный момент нужно просто проверить актуальность пароля SIP-аккаунта

234