Приветствую!
(Господа, сразу предупрежу что у меня колоссальные пробелы в области математики и геометрии, потому вопросы могут быть, мягко говоря, глуповатыми).Что нам дано:
Двухмерное пространство x, y.
Объект находящийся в данном пространстве имеющий возможность вращаться вокруг своей оси.
Положение данного объекта в пространстве.
Поворот данного объекта в пространстве в виде нормализованного вектора x, y вокруг своей оси. (вектор x нашего объекта принят как forward вектор, или вектор "направления" объекта).
Что нам нужно: нам нужно знать величину смещения объекта по его X оси в любом направлении, т.е. вперед или назад вне зависимости от поворота объекта в пространстве.
Если объяснить все нагляднее:
Представим стол. На столе лежит линейка. Линейка представляет собой X ось координат. Y осью пускай будет ближайший к нам край стола.
Мы ставим на стол с линейкой машинку. Перед машинки (наш X или forward вектор) направлен вдоль линейки к сторону больших значений.
Итак, наши начальные координаты, допустим: X 0, Y 5.
Теперь двигаем машинку вперед. Доезжаем до X 10. Координаты машинки: X 10, Y 5.
Если поедем назад, то, соответственно, координата машинки по X начнет уменьшаться, Y останется неизменным. Все логично.
Теперь повернем машинку перпендикулярно линейке и поедем опять. Теперь сколько бы мы не проехали вперед или назад, значение X останется неизменным, меняться будет только значение по Y.
Все логично, мы ведь смотрим положение машинки относительно мировых координат, которые неизменны. Но это не отвечает нам на вопрос: машинка едет вперед или назад?
Тогда представим другую ситуацию. Тот же стол, линейка и машинка.
Стартуем в координатах X 0, Y 5. Проезжаем по X до 10. И теперь, вместе с поворотом машинки смещаем (поворачиваем) линейку так, словно машинку с линейкой жестко связывает невидимый перпендикуляр относительно X вектора машинки. Теперь, не смотря на то что мы повернули машинку, линейка по прежнему параллельна ее X вектору.
Теперь в каком бы направлении не ехала наша машинка и как бы она не крутилась (не поворачивала) мы всегда будем иметь некие увеличивающиеся значения при ее движении вперед и уменьшающиеся при движении назад.
Для пущей наглядности картинка:
В вариантах B и С мы видим одну и туже машинку. Левая демонстрирует предыдущее положение в пространстве, правая - текущее.
Как видите, в варианте С мы можем получать искомое - сколько машинка проехала по X. Можем ехать назад и будем по уменьшающемуся значению X точно знать об этом факте.
https://imgur.com/a/Pri1tNq