Я пытаюсь найти точки перегиба относительно заданной оси (зеленая линия) с помощью ряда (синих) точек, которые образуют путь.Как видно из диаграммы ниже, есть две точки перегиба (розовые линии) или места, где путь меняет направление относительно оси задачи.
Сложность в том, что направление оси может измениться, поэтому она должна работать в любом направлении.Моя первая попытка взять 2 последовательных точки вдоль пути, получить направление между ними, а затем сравнить его с направлением оси.
Пропуская несколько скучных шагов (например, запись предыдущих точек), псевдокод выглядит следующим образомэто:
foreach point cur_point in path:
direction = prev_point - cur_point
(normalize direction)
relative_direction = dir_towards_axis - direction
(normalize relative direction)
if the sign of either x or y has changed between relative_direction and prev_relative_direction
# we have found an inflection point
К сожалению, это не работает.Есть какие-нибудь указатели, где я иду не так?