Vector4

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

Есть и другие вещи, для представления которых можно использовать 4D-вектор, однако это самые распространенные варианты использования в Verge3D.

Пример

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)

x — значение x этого вектора. По умолчанию 0.
y — значение y этого вектора. По умолчанию 0.
z — значение z этого вектора. По умолчанию 0.
w — значение w этого вектора. По умолчанию 0.

Создает новый 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

Умножает данный вектор на 4 x 4 m.

.ceil() → this

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

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

min — минимальные значения x, y, z и w.
max — максимальные значения x, y, z и w в нужном диапазоне

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

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

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

min — минимальное значение, до которого будет зажиматься длина
max — максимальное значение, до которого будет зажиматься длина

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

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

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

min — минимальное значение, до которого будут зажиматься компоненты
max — максимальное значение, на которое будут зажиматься компоненты

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

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

.clone() → Vector4

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

.copy(v : Vector4) → this

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

.divideScalar(s : Float) → this

Делит данный вектор на скаляр s.
Устанавливает вектор в (0, 0, 0, 0, 0), если *s = 0*.

.dot(v : Vector4) → Float

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

.equals(v : Vector4) → Boolean

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

.floor() → this

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

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

array — исходный массив.
offset — (необязательно) смещение в массиве. По умолчанию равно 0.

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

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

attribute — атрибут источника.
index — индекс в атрибуте.

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

.getComponent(index : Integer) → Float

index — 0, 1, 2 или 3.

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

.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 - Vector4 для интерполяции в направлении.
alpha — коэффициент интерполяции, обычно в замкнутом интервале [0, 1].

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

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

v1 — начальный Vector4.
v2 - Vector4 для интерполяции в направлении.
alpha — коэффициент интерполяции, обычно в замкнутом интервале [0, 1].

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

.negate() → this

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

.normalize() → this

Преобразует этот вектор в единичный вектор — то есть устанавливает его равным вектору с тем же направлением, что и этот, но length 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.

.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 — нормализованный Quaterion.

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

.setAxisAngleFromRotationMatrix(m : Matrix4) → this

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

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

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

index — 0, 1 или 2.
value - Float

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

.setLength(l : Float) → this

Устанавливает этот вектор в вектор с тем же направлением, что и этот, но length 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

array — (необязательный) массив для хранения этого вектора. Если он не указан, будет создан новый массив.
offset — (необязательный) необязательное смещение в массиве.

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

.random() → this

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

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

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