Создание 2D-объекта, указывающего на единичный вектор - PullRequest
1 голос
/ 18 декабря 2011

Предположим, у меня есть объект, который определен как массив векторных точек, и по умолчанию он смотрит вниз по оси + x.Если я хочу сделать объект лицом к единичному вектору, скажем, (0,1), как бы я это сделал?Я бы предположил, что это похоже на трехмерное пространство?

РЕДАКТИРОВАТЬ: я не думаю, что тригонометрические функции необходимы для этого, поэтому, пожалуйста, не используйте углы и / или арктангенс

1 Ответ

1 голос
/ 18 декабря 2011

Это значительно проще для 2D.В 2D вращение объекта может быть просто выражено как один угол.Используйте вектор ориентации, чтобы вызвать процедуру арктангенса, чтобы получить угол, а затем поверните объект на этот угол.

РЕДАКТИРОВАТЬ : Арктангенс отсутствует?Хорошо, вы хотите, чтобы ось X точек в объекте стала вектором (u, v).В этом случае ось y всегда выражается как (-v, u), который также будет единичным вектором, если (u, v) был единичным вектором.

Так что просто сделайте это: если у вас есть точка (x, y) относительно вашего объекта положение относительно мира должно быть (object.xCenter, object.yCenter) + x(u, v) + y(-v, u) = (object.xCenter + u*x - v*y, object.yCenter + v*x + u*y).

Пример: объект расположен в (5,5).Он имеет точку относительно него в точке (2, 2), если смотреть в направлении оси x.Если вы теперь хотите сориентировать его в (sqrt (2) / 2, sqrt (2) / 2) (версия единицы длины (1, 1)), то точка относительно мира - (5, 5 + 2* SQRT (2)).

...