Vector2

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

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

Пример

const a = new v3d.Vector2(0, 1); //no arguments; will be initialised to (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.

.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.

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

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

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

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

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

.clone() → Vector2

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

.copy(v : Vector2) → this

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

.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.
Устанавливает вектор в (0, 0), если s = 0.

.dot(v : Vector2) → Float

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

.cross(v : Vector2) → Float

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

.equals(v : Vector2) → Boolean

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

.floor() → this

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

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

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

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

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

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

Sets this vector's x and y values from the attribute.

.getComponent(index : Integer) → Float

index — 0 or 1.

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

.length() → Float

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

.manhattanLength() → Float

Вычисляет Manhattan length этого вектора.

.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

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

index — 0 или 1.
value - Float

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

.setLength(l : Float) → this

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

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

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