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

# Vector2

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

- Точка в двумерном пространстве (в частности, положение на плоскости).
- Направление и длина в плоскости. В «Вердж3Д» длина равна Евклидову расстоянию (расстоянию по прямой) от `(0, 0)` до `(x, y)`. Направление также измеряется от `(0, 0)` до `(x, y)`.
- Любая произвольная упорядоченная пара чисел.

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

## Пример

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

## Конструктор

### Vector2(x : Float, y : Float)

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

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

## Свойства

### # .height : Float

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

### # .isVector2 : Boolean

Read-only flag to check if a given object is of type Vector2.

### # .width : Float

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

### # .x : Float

### # .y : Float

## Методы

### # .add(v : Vector2) → this

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

### # .addScalar(s : Float) → this

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

### # .addScaledVector(v : Vector2, s : Float) → this

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

### # .addVectors(a : Vector2, b : Vector2) → this

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

### # .angle() → Float

Вычисляет угол в радианах текущего вектора по отношению к положительному направлению оси X.

### # .applyMatrix3(m : Matrix3) → this

Умножает текущий вектор (с неявной 1 в качестве третьего компонента) на m.

### # .ceil() → this

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

### # .clamp(min : Vector2, max : Vector2) → this

- min — минимальные значения X и Y.
- max — максимальные значения X и Y.

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

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

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

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

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

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

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

### # .clone() → Vector2

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

### # .copy(v : Vector2) → this

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

### # .distanceTo(v : Vector2) → Float

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

### # .manhattanDistanceTo(v : Vector2) → Float

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

### # .distanceToSquared(v : Vector2) → Float

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

### # .divide(v : Vector2) → this

Делит текущий вектор на v.

### # .divideScalar(s : Float) → this

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

### # .dot(v : Vector2) → Float

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

### # .cross(v : Vector2) → Float

Вычисляет векторное произведение данного вектора и v. Обратите внимание, что векторное произведение в двумерном пространстве не имеет четкого определения. Этот метод вычисляет геометрическое векторное произведение, часто используемое в двумерной графике.

### # .equals(v : Vector2) → Boolean

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

### # .floor() → this

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

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

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

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

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

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

Устанавливает x и y вектора из указанного атрибута.

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

index — `0` или `1`.

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

### # .length() → Float

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

### # .manhattanLength() → Float

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

### # .lengthSq() → Float

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

### # .lerp(v : Vector2, alpha : Float) → this

- v — Vector2 для интерполяции.
- alpha — коэффициент интерполяции, обычно в замкнутом интервале `[0, 1]`.

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

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

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

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

### # .negate() → this

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

### # .normalize() → this

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

### # .max(v : Vector2) → this

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

### # .min(v : Vector2) → this

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

### # .multiply(v : Vector2) → this

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

### # .multiplyScalar(s : Float) → this

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

### # .rotateAround(center : Vector2, angle : Float) → this

- center — точка, вокруг которой происходит вращение.
- angle — угол для поворота, в радианах.

Вращает текущий вектор вокруг center на angle радиан.

### # .round() → this

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

### # .roundToZero() → this

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

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

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

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

- index — `0` или `1`.

- value — значение компонента.

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

  ### # .setLength(l : Float) → this

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

  ### # .setScalar(scalar : Float) → this

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

  ### # .setX(x : Float) → this

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

  ### # .setY(y : Float) → this

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

  ### # .sub(v : Vector2) → this

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

  ### # .subScalar(s : Float) → this

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

  ### # .subVectors(a : Vector2, b : Vector2) → this

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

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

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

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

  ### # .random() → this

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

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

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