Как двигаться в Картизианское пространство вдоль кардинальных направлений при ограничивании поворотов?

Дано представляет собой картезированную систему Corcoriante, от позиции A (X / Y) и положение B (X / Y). Я хочу перейти от A до B. Однако я могу двигаться только на восемь направлений n, ne, e, se, s, sw, w, nw.

Я знаю, что я могу рассчитать «лучшие» из этих направлений, чтобы взять из текущей позиции A через точечный продукт с единицы векторами оси (восемь направлений), где самый большой точечный продукт - это направление Отказ Но этот подход приводит к какому виду «колебания» между двумя направлениями, если A именно между этими двумя двумя.

Итак, я ищу алгоритм, теперь совется этой проблемой попадания от до B с одним или макс. Две направления для использования. Конечно, я сейчас игнорирую какие-либо препятствия, так что теоретически я всегда могу получить от до B с максимумом двух разных направлений. Я мог бы, вероятно, решить эту проблему с кучей If-quices, но я бы предпочел более элегантное решение ...

Я надеюсь, что это было несколько понятно :)

заранее спасибо за любые идеи!

С уважением, Матиас

5
задан Matthias 14 September 2011 в 23:30
поделиться