2014-07-03 5 views
0

У меня есть многоугольник, где я ищу 2 сегмента, которые составляют приблизительно 90 градусов (+ -20 °). Я всегда нашел первый, который находится между p1 и p2, и я хочу найти p3, но на изображении ниже мы можем видеть, что между p3 и p2 это не прямая линия.Как узнать, когда вектор меняет направление?

enter image description here

Я думал, может быть, глядя прямо не первую точку после p2, но определенное количество очков и посмотреть, если он все еще на 90 ° между p1 p2 и тем моментом, но тогда у меня есть проблема, что она будет не останавливаться на хорошем p3. Поэтому я подумал, что, возможно, функция стоимости, рассчитанная с расстоянием между p2 и точкой зрения и, возможно, с точечным продуктом, но это оказалось не очень хорошо.

Возможно, у кого-то есть идея, как я могу просто игнорировать точки между p3 и p2?

+0

Я полагаю, что ваш вход представляет собой растровое изображение, подобное тому, которое вы изобразили, т. Е. Вы не знаете порядок точек вдоль границы спереди? – MvG

+0

есть. порядок точек по часовой стрелке от точки в верхнем правом углу (высшая точка). Поэтому я перехожу от p2 к p3 – user3314570

+0

Возможно, этот подход в этом [алгоритме упрощения кривой] (http://en.wikipedia.org/wiki/Ramer%E2%80%93Douglas%E2%80%93Peucker_algorithm#Complexity) может оказаться полезным. Выпуклая оболочка также может быть полезна, но она может оказаться непригодной для некоторых случаев. – Nuclearman

ответ