Класс pc.Vec2 представляет собой двухмерный вектор в
библиотеке PlayCanvas, часто используемый для работы с координатами,
направлениями и другими геометрическими вычислениями в 2D-пространстве.
Вектор pc.Vec2 описывается двумя компонентами:
x и y, которые могут быть использованы для
различных математических операций, таких как сложение, вычитание,
скалярное произведение и другие.
pc.Vec2Конструктор класса pc.Vec2 используется для создания
нового экземпляра вектора. Он принимает два аргумента, соответствующих
значениям координат x и y. Если аргументы не
переданы, они принимают значения по умолчанию (оба равны 0).
let v1 = new pc.Vec2(3, 4); // Вектор с координатами (3, 4)
let v2 = new pc.Vec2(); // Вектор с координатами (0, 0)
Класс pc.Vec2 имеет два основных свойства:
let v = new pc.Vec2(5, 7);
console.log(v.x); // 5
console.log(v.y); // 7
set(x, y)Метод set позволяет установить новые значения для
компонентов вектора. Он принимает два параметра: x и
y, которые являются новыми значениями для соответствующих
координат.
let v = new pc.Vec2();
v.set(3, 5);
console.log(v.x); // 3
console.log(v.y); // 5
clone()Метод clone создает новый вектор, который является
копией текущего вектора.
let v1 = new pc.Vec2(1, 2);
let v2 = v1.clone();
console.log(v2.x, v2.y); // 1 2
add(vec)Метод add выполняет сложение текущего вектора с
переданным вектором. Он изменяет текущий вектор и возвращает его же.
let v1 = new pc.Vec2(1, 2);
let v2 = new pc.Vec2(3, 4);
v1.add(v2);
console.log(v1.x, v1.y); // 4 6
subtract(vec)Метод subtract выполняет вычитание из текущего вектора
переданного вектора. Как и метод add, он изменяет текущий
вектор.
let v1 = new pc.Vec2(5, 6);
let v2 = new pc.Vec2(2, 1);
v1.subtract(v2);
console.log(v1.x, v1.y); // 3 5
multiply(scalar)Метод multiply умножает вектор на скаляр. Это операция
масштабирования, которая изменяет величину вектора, но не его
направление.
let v = new pc.Vec2(2, 3);
v.multiply(2);
console.log(v.x, v.y); // 4 6
divide(scalar)Метод divide делит вектор на скаляр. Результатом будет
новый вектор с компонентами, деленными на этот скаляр.
let v = new pc.Vec2(4, 8);
v.divide(2);
console.log(v.x, v.y); // 2 4
length()Метод length возвращает длину (модуль) вектора. Это
вычисляется по формуле Пифагора, где
length = sqrt(x^2 + y^2).
let v = new pc.Vec2(3, 4);
console.log(v.length()); // 5
normalize()Метод normalize изменяет вектор таким образом, чтобы его
длина стала равной единице, сохраняя его направление. Это полезно, когда
требуется работать с нормализованными векторами для вычислений
направления.
let v = new pc.Vec2(3, 4);
v.normalize();
console.log(v.length()); // 1
dot(vec)Метод dot вычисляет скалярное произведение двух
векторов. Скалярное произведение двух векторов A(x1, y1) и
B(x2, y2) вычисляется как
A · B = x1 * x2 + y1 * y2.
let v1 = new pc.Vec2(1, 2);
let v2 = new pc.Vec2(3, 4);
console.log(v1.dot(v2)); // 11
cross(vec)Метод cross вычисляет псевдоскалярное произведение двух
двумерных векторов. Для 2D-векторов это эквивалентно вычислению
компоненты вектора, перпендикулярного обоим векторами.
let v1 = new pc.Vec2(1, 2);
let v2 = new pc.Vec2(3, 4);
console.log(v1.cross(v2)); // -2
Векторные операции, такие как сложение, вычитание, умножение и
деление на скаляр, являются основными средствами для работы с объектами
pc.Vec2. Они позволяют легко изменять и манипулировать
данными о позициях, направлениях и величинах в 2D-пространстве.
Сложение и вычитание векторов служат для объединения позиций или для нахождения разности между двумя точками. Например, если есть два вектора, представляющие положения объектов, их сложение позволяет найти вектор от начала координат до их суммарного положения.
let v1 = new pc.Vec2(1, 2);
let v2 = new pc.Vec2(3, 4);
let result = v1.add(v2);
console.log(result.x, result.y); // 4 6
Масштабирование с помощью умножения на скаляр позволяет изменить размер вектора, при этом его направление остается неизменным. Это часто используется при изменении скорости движения объектов, например, при умножении на коэффициент времени в анимациях.
let v = new pc.Vec2(1, 1);
v.multiply(2);
console.log(v.x, v.y); // 2 2
Нормализация часто используется для получения единичного вектора, что полезно при работе с направлениями. Например, нормализованный вектор может быть использован для задания скорости движения, при этом его длина всегда будет оставаться фиксированной, например, равной 1.
let v = new pc.Vec2(3, 4);
v.normalize();
console.log(v.x, v.y); // 0.6 0.8
Перемещения объектов: Вектор
pc.Vec2 широко используется для представления позиций и
перемещений объектов в двумерных пространствах. Например, при расчете
движения объекта, можно использовать векторы для определения направления
и скорости.
Коллизии и столкновения: Для вычисления столкновений между объектами в 2D-пространстве часто используют операции с векторами. Например, проверка на пересечение может быть выполнена с использованием векторного расстояния и нормализации векторов.
Математика для анимаций: В анимациях, например, для расчета движения по кривой или отрисовки траектории, используется нормализация и операции с векторами для корректного отображения движущихся объектов.
Класс pc.Vec2 в PlayCanvas предоставляет набор мощных и
гибких инструментов для работы с двухмерными векторами. Он включает в
себя основные операции, такие как сложение, вычитание, умножение и
деление на скаляр, а также методы для нормализации, вычисления длины,
скалярного и псевдоскалярного произведений. Векторные операции являются
неотъемлемой частью многих задач, связанных с обработкой данных о
позициях и движении объектов в 2D-пространстве.