Vector3

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

Существуют и другие способы представления 3D-векторов, например, векторы импульса и т.д., однако это наиболее распространенные варианты использования в Verge3D.

Пример

const a = new v3d.Vector3(0, 1, 0); //no arguments; will be initialised to (0, 0, 0) const b = new v3d.Vector3(); const d = a.distanceTo(b);

Конструктор

Vector3(x : Float, y : Float, z : Float)

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

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

Свойства

.x : Float

.y : Float

.z : Float

Методы

.add(v : Vector3) → this

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

.addScalar(s : Float) → this

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

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

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

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

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

.applyAxisAngle(axis : Vector3, angle : Float) → this

axis — нормализованный Vector3.
angle — Угол в радианах.

Применяет к данному вектору вращение, заданное осью и углом.

.applyEuler(euler : Euler) → this

Применяет преобразование Эйлера к данному вектору путем преобразования объекта Euler в Quaternion и применения.

.applyMatrix3(m : Matrix3) → this

Умножает этот вектор на m.

.applyMatrix4(m : Matrix4) → this

Умножает этот вектор (с неявной 1 в 4-м измерении) и m, и делит на перспективу.

.applyNormalMatrix(m : Matrix3) → this

Умножает этот вектор на нормальную матрицу m и нормализует результат.

.applyQuaternion(quaternion : Quaternion) → this

Применяет преобразование Quaternion к данному вектору.

.angleTo(v : Vector3) → Float

Возвращает угол между этим вектором и вектором v в радианах.

.ceil() → this

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

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

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

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

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

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

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

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

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

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

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

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

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

.clone() → Vector3

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

.copy(v : Vector3) → this

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

.cross(v : Vector3) → this

Устанавливает данный вектор в векторное произведение самого себя и v.

.crossVectors(a : Vector3, b : Vector3) → this

Устанавливает данный вектор в векторное произведение v и v.

.distanceTo(v : Vector3) → Float

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

.manhattanDistanceTo(v : Vector3) → Float

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

.distanceToSquared(v : Vector3) → Float

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

.divide(v : Vector3) → this

Делит данный вектор на v.

.divideScalar(s : Float) → this

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

.dot(v : Vector3) → Float

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

.equals(v : Vector3) → Boolean

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

.floor() → this

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

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

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

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

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

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

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

.getComponent(index : Integer) → Float

index — 0, 1 или 2.

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

.length() → Float

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

.manhattanLength() → Float

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

.lengthSq() → Float

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

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

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

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

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

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

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

.max(v : Vector3) → this

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

.min(v : Vector3) → this

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

.multiply(v : Vector3) → this

Умножает данный вектор на v.

.multiplyScalar(s : Float) → this

Умножает данный вектор на скаляр s.

.multiplyVectors(a : Vector3, b : Vector3) → this

Устанавливает этот вектор равным a * b, покомпонентно.

.negate() → this

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

.normalize() → this

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

.project(camera : Camera) → this

camera — камера для использования в проекции.

Проецирует этот вектор из мирового пространства в пространство нормализованных координат устройства (NDC) камеры.

.projectOnPlane(planeNormal : Vector3) → this

planeNormal — Вектор, представляющий нормаль к плоскости.

Проецирует этот вектор на плоскость путем вычитания из него вектора, спроецированного на нормаль плоскости.

.projectOnVector(v : Vector3) → this

Проецирует этот вектор на v.

.reflect(normal : Vector3) → this

normal — нормаль к отражающей плоскости

Отразите этот вектор от плоскости, ортогональной к normal. Предполагается, что нормаль имеет единичную длину.

.round() → this

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

.roundToZero() → this

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

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

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

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

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

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

.setFromCylindrical(c : Cylindrical) → this

Устанавливает этот вектор из цилиндрических координат c.

.setFromCylindricalCoords(radius : Float, theta : Float, y : Float) → this

Устанавливает этот вектор из цилиндрических координат radius, theta и y.

.setFromMatrixColumn(matrix : Matrix4, index : Integer) → this

Устанавливает компоненты x, y и z этого вектора из столбца index матрицы matrix.

.setFromMatrix3Column(matrix : Matrix3, index : Integer) → this

Устанавливает компоненты x, y и z этого вектора из столбца index матрицы matrix.

.setFromMatrixPosition(m : Matrix4) → this

Устанавливает этот вектор в элементы позиции матрицы преобразования m.

.setFromMatrixScale(m : Matrix4) → this

Устанавливает этот вектор на масштабные элементы матрицы преобразования m.

.setFromSpherical(s : Spherical) → this

Задает этот вектор из сферических координат s.

.setFromSphericalCoords(radius : Float, phi : Float, theta : Float) → this

Задает этот вектор из сферических координат radius, phi и theta..

.setLength(l : Float) → this

Установите этот вектор в вектор с тем же направлением, что и этот, но length l.

.setScalar(scalar : Float) → this

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

.setX(x : Float) → this

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

.setY(y : Float) → this

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

.setZ(z : Float) → this

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

.sub(v : Vector3) → this

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

.subScalar(s : Float) → this

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

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

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

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

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

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

.transformDirection(m : Matrix4) → this

Преобразует направление этого вектора по матрице (левое верхнее подмножество 3 x 3 из m) и затем normalizes результат.

.unproject(camera : Camera) → this

camera — камера для использования в проекции.

Проецирует этот вектор из пространства нормализованных координат устройства (NDC) камеры в мировое пространство.

.random() → this

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

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

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