Vector4 - Руководство по Вердж3Д - Софт Эйт Софт
Description: Узнайте как использовать Vector4 в интерактивных 3Д-веб-приложениях сделанных на Вердж3Д

# Vector4

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

- Точка в четырехмерном пространстве.
- Направление и длина в четырехмерном пространстве. В «Вердж3Д» длина равна Евклидову расстоянию (расстоянию по прямой) от `(0, 0, 0, 0)` до `(x, y, z, w)`. Направление также измеряется от `(0, 0, 0, 0)` до `(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)

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

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

- min — минимальные значения x, y, z и w.
- max — максимальные значения x, y, z и w.

Если значение 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

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

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

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

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

Если значения 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

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

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

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

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

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

### # .getComponent(index : Integer) → Float

index — `0`, `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 — 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

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

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

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

### # .setComponent(index : Integer, value : Float) → this

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

Если индекс равен 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

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

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

### # .random() → this

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

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

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