Two.Vector — это фундаментальный класс библиотеки
Two.js, предназначенный для работы с векторами в
двухмерном пространстве. Вектор представляет собой упорядоченную пару
координат x и y, но его функциональность
выходит далеко за пределы простого хранения чисел. Класс обеспечивает
методы для арифметических операций, нормализации, вычисления
длины и углов, что делает его незаменимым при работе с графикой
и анимацией.
let v = new Two.Vector(100, 50);
console.log(v.x, v.y); // 100, 50
В конструкторе Two.Vector(x, y) параметры x
и y по умолчанию равны нулю.
Пример вычисления длины и проверки нулевого вектора:
let v = new Two.Vector(3, 4);
console.log(v.length()); // 5
console.log(v.isZero()); // false
Two.Vector предоставляет методы для сложения,
вычитания, умножения и деления векторов, как с другими
векторами, так и со скалярами.
let a = new Two.Vector(2, 3);
let b = new Two.Vector(1, 1);
a.add(b); // a теперь (3, 4)
a.sub(b); // a теперь (2, 3)
a.multiply(2); // a теперь (4, 6)
a.divide(2); // a теперь (2, 3)
a.negate(); // a теперь (-2, -3)
Эти операции модифицируют исходный вектор, что важно учитывать при работе с анимацией и математическими вычислениями.
Нормализация вектора переводит его в единичный вектор, сохраняя направление, но делая длину равной 1. Это необходимо для вычисления направлений движения, углов и при работе с физикой.
let v = new Two.Vector(3, 4);
v.normalize();
console.log(v.length()); // 1
Дополнительно доступны методы:
let a = new Two.Vector(0, 0);
let b = new Two.Vector(3, 4);
console.log(a.distanceTo(b)); // 5
console.log(a.distanceToSquared(b)); // 25
Важной частью работы с векторами является определение углов и направлений. Two.Vector предоставляет:
let v = new Two.Vector(1, 0);
console.log(v.angle()); // 0
v.rotate(Math.PI / 2);
console.log(v.x, v.y); // 0, 1
Эти методы полезны при создании анимаций, вращении объектов и вычислении траекторий.
let a = new Two.Vector(1, 0);
let b = new Two.Vector(0, 1);
console.log(a.dot(b)); // 0
console.log(a.cross(b)); // 1
Скалярное произведение позволяет определять, параллельны ли векторы, а псевдоскалярное — направление вращения.
Для создания анимаций и динамических эффектов Two.Vector
предлагает:
t от 0 до 1.let a = new Two.Vector(0, 0);
let b = new Two.Vector(10, 10);
a.lerp(b, 0.5); // a теперь (5, 5)
Это позволяет создавать плавное движение объектов, эффект «следования» за курсором и постепенные трансформации.
Движение объекта вдоль направления:
let position = new Two.Vector(100, 100);
let velocity = new Two.Vector(2, 3);
function update() {
position.add(velocity);
}
Вращение объекта вокруг точки:
let center = new Two.Vector(200, 200);
let point = new Two.Vector(250, 200);
point.sub(center).rotate(Math.PI / 180).add(center);
Реализация гравитации или силы притяжения:
let p1 = new Two.Vector(0, 0);
let p2 = new Two.Vector(100, 0);
let force = p2.clone().sub(p1).normalize().multiply(0.1);
p1.add(force);
Эти примеры демонстрируют, как Two.Vector становится
основой для движений, столкновений и физики объектов в 2D
пространстве.
Two.Vector — универсальный инструмент, делающий работу с
двумерными координатами эффективной и удобной, позволяя
сосредоточиться на логике графики и анимации, а не на рутинных
математических вычислениях.