Любой трехмерный вектор (не считая нулевых векторов) имеет несколько допустимых перпендикулярных векторов.
Вы можете рассчитать перпендикулярный вектор, вычислив перекрестное произведение с учетом 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();
Который будет выглядеть примерно так.Синяя стрелка - это вектор вперед, красная стрелка - правый вектор, зеленая стрелка - вверх, а более темный зеленый - эталон, по которому она рассчитывается.
Вот анимированная версия приведенного выше примера.