Vector3

Класс, представляющий трехмерный вектор.

3Д-вектор — это три упорядоченных числа (обозначенных x, y и z), которые могут использоваться для представления ряда вещей, таких как:

Перечисление Vector3 выдаёт его координаты (x, y, z) в том же порядке.

Пример

const a = new v3d.Vector3(0, 1, 0); // в отсутствии аргументов станет (0, 0, 0) const b = new v3d.Vector3(); const d = a.distanceTo(b);

Конструктор

Vector3(x : Float, y : Float, z : Float)

Создает новый Vector3.

Свойства

.isVector3 : Boolean

Флаг, указывающий, что данный объект является экземпляром Vector3. Только для чтения.

.x : Float

.y : Float

.z : Float

Методы

.add(v : Vector3) → this

Добавляет v к данному вектору.

.addScalar(s : Float) → this

Добавляет скалярное значение s к значениям x, y и z этого вектора.

.addScaledVector(v : Vector3, s : Float) → this

Добавляет v кратный s к текущему вектору.

.addVectors(a : Vector3, b : Vector3) → this

Устанавливает текущий вектор в a + b.

.applyAxisAngle(axis : Vector3, angle : Float) → this

Применяет к текущему вектору вращение, заданное осью и углом.

.applyEuler(euler : Euler) → this

Применяет преобразование Эйлера к текущему вектору путем преобразования углов Эйлера в кватернион и его последующего применения.

.applyMatrix3(m : Matrix3) → this

Умножает текущий вектор на m.

.applyMatrix4(m : Matrix4) → this

Умножает текущий вектор (с неявной 1 в 4-м измерении) и m, и делит на перспективу.

.applyNormalMatrix(m : Matrix3) → this

Умножает текущий вектор на нормальную матрицу m и нормализует результат.

.applyQuaternion(quaternion : Quaternion) → this

Применяет преобразование, заданное кватернионом, к текущему вектору.

.angleTo(v : Vector3) → Float

Возвращает угол между текущеим вектором и вектором v в радианах.

.ceil() → this

Компоненты x, y и z текущего вектора округляются вниз до ближайшего целого значения.

.clamp(min : Vector3, max : Vector3) → this

Если значение x, y или z этого вектора больше, чем значение x, y или z вектора max, оно заменяется соответствующим значением. Если значение x, y или z этого вектора меньше, чем значение x, y или z вектора min, оно заменяется соответствующим значением.

.clampLength(min : Float, max : Float) → this

Если длина этого вектора больше значения max, то она становится max. Если длина этого вектора меньше значения min, она становится min.

.clampScalar(min : Float, max : Float) → this

Если значения x, y или z этого вектора больше максимального значения, они заменяются максимальным значением. Если значения x, y или z этого вектора меньше минимального значения, они заменяются минимальным значением.

.clone() → Vector3

Возвращает новый вектор с теми же значениями x, y и z, что и текущий.

.copy(v : Vector3) → this

Копирует значения свойств x, y и z из указанного вектора в текущий.

.cross(v : Vector3) → this

Устанавливает текущий вектор в векторное произведение самого себя и v.

.crossVectors(a : Vector3, b : Vector3) → this

Устанавливает данный вектор в векторное произведение a и b.

.distanceTo(v : Vector3) → Float

Вычисляет расстояние от данного вектора до v.

.manhattanDistanceTo(v : Vector3) → Float

Вычисляет расстояние городских кварталов от данного вектора до v.

.distanceToSquared(v : Vector3) → Float

Вычисляет квадрат расстояния от данного вектора до v. Если вы просто сравниваете расстояние с другим расстоянием, то следует сравнивать расстояние в квадрате, так как оно вычисляется немного эффективнее.

.divide(v : Vector3) → this

Делит данный вектор на v.

.divideScalar(s : Float) → this

Делит данный вектор на скаляр s.

.dot(v : Vector3) → Float

Вычисляет скалярное произведение текущего вектора и v.

.equals(v : Vector3) → Boolean

Проверяет строгое равенство данного вектора и v.

.floor() → this

Компоненты этого вектора округляются вниз до ближайшего целого значения.

.fromArray(array : Array, offset : Integer) → this

Устанавливает значение x этого вектора в array[offset], y в array[offset + 1] и z в array[offset + 2].

.fromBufferAttribute(attribute : BufferAttribute, index : Integer) → this

Устанавливает значения x, y и z текущего вектора из указанного атрибута.

.getComponent(index : Integer) → Float

index0, 1 или 2.

Если индекс равен 0, возвращается значение x. Если индекс равен 1, возвращается значение y. Если индекс равен 2, возвращается значение z.

.length() → Float

Вычисляет Евклидову длину (длину прямой линии) от (0, 0, 0) до (x, y, z).

.manhattanLength() → Float

Вычисляет расстояние городских кварталов для текущего вектора.

.lengthSq() → Float

Вычисляет квадрат Евклидовой длины (длины прямой) от (0, 0, 0) до (x, y, z). Если вы сравниваете длины векторов, следует сравнивать квадрат длины, так как он вычисляется немного эффективнее.

.lerp(v : Vector3, alpha : Float) → this

Линейно интерполирует между текущим вектором и v, где alpha - процентное расстояние вдоль линии - alpha = 0 оставит текущий вектор, а alpha = 1 установит v.

.lerpVectors(v1 : Vector3, v2 : Vector3, alpha : Float) → this

Устанавливает текущий вектор как вектор, линейно интерполированный между v1 и v2, где alpha - процентное расстояние вдоль линии, соединяющей два вектора - alpha = 0 установит v1, а alpha = 1 установит v2.

.max(v : Vector3) → this

Если значение x, y или z этого вектора меньше значения x, y или z v, заменит это значение соответствующим значением max.

.min(v : Vector3) → this

Если значение x, y или z этого вектора больше, чем значение x, y или z v, заменит это значение соответствующим значением min.

.multiply(v : Vector3) → this

Умножает текущий вектор на v.

.multiplyScalar(s : Float) → this

Умножает текущий вектор на скаляр s.

.multiplyVectors(a : Vector3, b : Vector3) → this

Устанавливает текущий вектор равным a * b, покомпонентно.

.negate() → this

Инвертирует текущий вектор - то есть устанавливает x = -x, y = -y и z = -z.

.normalize() → this

Преобразует текущий вектор в единичный вектор — то есть, устанавливает его равным вектору с тем же направлением, что и текущий, но с длиной равной 1.

.project(camera : Camera) → this

camera — камера для проецирования.

Проецирует текущий вектор из мирового пространства в пространство нормализованных координат (NDC) камеры.

.projectOnPlane(planeNormal : Vector3) → this

planeNormal — вектор, представляющий нормаль к плоскости.

Проецирует текущий вектор на плоскость путем вычитания из него вектора, спроецированного на нормаль плоскости.

.projectOnVector(v : Vector3) → this

Проецирует текущий вектор на v.

.reflect(normal : Vector3) → this

normal — нормаль к отражающей плоскости.

Отражает текущий вектор от плоскости, ортогональной к normal. Предполагается, что нормаль имеет единичную длину.

.round() → this

Компоненты этого вектора округляются до ближайшего целого значения.

.roundToZero() → this

Компоненты этого вектора округляются в сторону нуля (вверх, если отрицательные, вниз, если положительные) до целого значения.

.set(x : Float, y : Float, z : Float) → this

Устанавливает компоненты x, y и z текущего вектора.

.setComponent(index : Integer, value : Float) → null

Если индекс равен 0, устанавливает x в value. Если индекс равен 1, устанавливает y в value. Если индекс равен 2, устанавливает z в value.

.setFromCylindricalCoords(radius : Float, theta : Float, y : Float) → this

Устанавливает текущий вектор из цилиндрических координат radius, theta и y.

.setFromEuler(euler : Euler) → this

Устанавливает координаты x, y и z вектора из x, y, and z компонент указанных углов Эйлера.

.setFromMatrixColumn(matrix : Matrix4, index : Integer) → this

Устанавливает компоненты x, y и z текущего вектора из столбца index матрицы matrix.

.setFromMatrix3Column(matrix : Matrix3, index : Integer) → this

Устанавливает компоненты x, y и z текущего вектора из столбца index матрицы matrix.

.setFromMatrixPosition(m : Matrix4) → this

Устанавливает текущий вектор в элементы позиции матрицы преобразования m.

.setFromMatrixScale(m : Matrix4) → this

Устанавливает текущий вектор на масштабные элементы матрицы преобразования m.

.setFromSpherical(s : Spherical) → this

Задает текущий вектор из сферических координат s.

.setFromSphericalCoords(radius : Float, phi : Float, theta : Float) → this

Задает текущий вектор из сферических координат radius, phi и theta.

.setLength(l : Float) → this

Устанавливает текущий вектор в вектор с тем же направлением, что и этот, но с длиной равной l.

.setScalar(scalar : Float) → this

Устанавливает значения x, y и z текущего вектора равными scalar.

.setX(x : Float) → this

Заменяет значение x текущего вектора на x.

.setY(y : Float) → this

Заменяет значение y текущего вектора на y.

.setZ(z : Float) → this

Заменяет значение z текущего вектора на z.

.sub(v : Vector3) → this

Вычитает v из текущего вектора.

.subScalar(s : Float) → this

Вычитает s из компонент x, y и z текущего вектора.

.subVectors(a : Vector3, b : Vector3) → this

Устанавливает текущий вектор в a - b.

.toArray(array : Array, offset : Integer) → Array

Возвращает массив [x, y, z], или копирует x, y и z в предоставленный массив.

.transformDirection(m : Matrix4) → this

Преобразует направление текущего вектора по матрице (левое верхнее подмножество 3 x 3 из m) и затем нормализует результат.

.unproject(camera : Camera) → this

camera — камера для проецирования.

Проецирует текущий вектор из пространства нормализованных координат (NDC) камеры в мировое пространство.

.random() → this

Устанавливает каждый компонент текущего вектора в псевдослучайное значение между 0 и 1, исключая 1.

.randomDirection() → this

Устанавливает вектор в вектор с единичной длиной и случайным направлением.

Пазлы

Следующие пазлы могут использоваться для работы с векторами без необходимости писать код:

Исходный файл

О том как получить исходный код этого модуля читайте тут.