Вычислить перпендикулярный вектор из моей камеры - PullRequest
0 голосов
/ 11 октября 2018

Моя камера выглядит в орфографической перспективе (очень похоже на 2D-пространство), она смотрит на землю сверху.Я пытаюсь определить направление, чтобы мой персонаж двигался влево и вправо.

Учитывая вектор, как я могу получить перпендикулярные векторы?Так что он может двигаться влево и вправо.

1 Ответ

0 голосов
/ 11 октября 2018

Любой трехмерный вектор (не считая нулевых векторов) имеет несколько допустимых перпендикулярных векторов.

Вы можете рассчитать перпендикулярный вектор, вычислив перекрестное произведение с учетом 2 непараллельных векторов.Таким образом, у вас будет другой вектор, для которого он будет рассчитан, скажем, для справки.

Таким образом, предполагая, что у вас есть вектор направления / вперед:

var forward = new THREE.Vector3(0, 0, 1);

Затем используйте другой вектор, такой как THREE.Vector3(0, 1, 0).( Если y вверх, то это будет восходящий единичный вектор. ) Затем, вычисляя перекрестное произведение, мы можем вычислить правый вектор направления (или влево) направление, переключив порядок или просто отрицая вектор вправо ):

var right = forward.cross(new THREE.Vector3(0, 1, 0)).normalize();

Затем вы также можете получить относительный вектор up , выполнив:

var up = right.cross(forward).normalize();

Который будет выглядеть примерно так.Синяя стрелка - это вектор вперед, красная стрелка - правый вектор, зеленая стрелка - вверх, а более темный зеленый - эталон, по которому она рассчитывается.

Вот анимированная версия приведенного выше примера.

Example

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...