Vector4

Класс, представляющий четырехмерный вектор. Четырехмерный вектор — это упорядоченная четверка чисел (обозначенных x, y, z и w), которая может быть использована для представления ряда вещей, таких как:

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

Пример

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

Конструктор

Vector4(x : Float, y : Float, z : Float, w : Float)

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

Свойства

.isVector4 : Boolean

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

.x : Float

.y : Float

.z : Float

.w : Float

.width : Float

Псевдоним для z.

.height : Float

Псевдоним для w.

Методы

.add(v : Vector4) → this

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

.addScalar(s : Float) → this

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

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

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

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

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

.applyMatrix4(m : Matrix4) → this

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

.ceil() → this

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

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

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

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

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

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

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

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

.clone() → Vector4

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

.copy(v : Vector4) → this

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

.divideScalar(s : Float) → this

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

.dot(v : Vector4) → Float

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

.equals(v : Vector4) → Boolean

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

.floor() → this

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

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

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

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

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

.getComponent(index : Integer) → Float

index0, 1, 2 или 3.

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

.length() → Float

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

.manhattanLength() → Float

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

.lengthSq() → Float

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

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

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

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

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

.negate() → this

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

.normalize() → this

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

.max(v : Vector4) → this

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

.min(v : Vector4) → this

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

.multiply(v : Vector4) → this

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

.multiplyScalar(s : Float) → this

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

.round() → this

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

.roundToZero() → this

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

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

Задает компоненты x, y, z и w текущего вектора.

.setAxisAngleFromQuaternion(q : Quaterion) → this

q — нормализованный кватернион.

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

.setAxisAngleFromRotationMatrix(m : Matrix4) → this

mMatrix4, левая верхняя матрица 3x3 которой является чистой матрицей вращения.

Задает x, y и z в ось вращения, а w — в угол.

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

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

.setLength(l : Float) → this

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

.setScalar(scalar : Float) → this

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

.setX(x : Float) → this

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

.setY(y : Float) → this

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

.setZ(z : Float) → this

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

.setW(w : Float) → this

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

.sub(v : Vector4) → this

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

.subScalar(s : Float) → this

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

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

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

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

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

.random() → this

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

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

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