Методы Point для вычислений

В Paper.js объекты Point представляют собой двумерные векторы с координатами x и y. Они используются для позиционирования элементов на холсте, вычислений векторной математики и работы с геометрическими операциями. Создание объекта Point может осуществляться несколькими способами:

// Через координаты x и y
let p1 = new Point(100, 50);

// Через массив [x, y]
let p2 = new Point([200, 75]);

// Через объект с полями x и y
let p3 = new Point({ x: 50, y: 150 });

Основные арифметические методы

Point поддерживает арифметические операции как для работы с числами, так и для других точек.

  • add() – сложение с другой точкой или числом:
let p4 = p1.add(new Point(10, 20)); // {x: 110, y: 70}
  • subtract() – вычитание:
let p5 = p2.subtract(p1); // {x: 100, y: 25}
  • multiply() – умножение на число или точку:
let p6 = p1.multiply(2); // {x: 200, y: 100}
  • divide() – деление:
let p7 = p1.divide(2); // {x: 50, y: 25}

Геометрические вычисления

Point предоставляет методы для работы с длиной, углом и расстоянием между точками:

  • getLength() / length – вычисление длины вектора:
let length = p1.length; // sqrt(x^2 + y^2)
  • getDistance(otherPoint) – расстояние между двумя точками:
let distance = p1.getDistance(p2);
  • normalize() – преобразование вектора в единичный вектор:
let unit = p1.normalize(1); // длина 1
  • angle – угол в градусах между вектором и осью X:
let angle = p1.angle;
  • setAngle(degrees) – установка угла вектора, сохраняя его длину:
p1.angle = 45;

Методы для работы с направлениями и проекциями

Point позволяет работать с направлениями, проекциями и перпендикулярными векторами:

  • rotate(angle, center) – вращение точки вокруг центра на заданный угол:
let center = new Point(0, 0);
let rotated = p1.rotate(90, center);
  • project(point) – проекция на другой вектор:
let projected = p1.project(p2);
  • cross(point) – вычисление псевдоскалярного произведения:
let crossValue = p1.cross(p2);
  • dot(point) – скалярное произведение двух векторов:
let dotValue = p1.dot(p2);

Методы для интерполяции и смешивания

Point поддерживает плавные переходы и интерполяцию между точками:

  • interpolate(point, factor) – линейная интерполяция:
let middle = p1.interpolate(p2, 0.5); // середина между p1 и p2
  • lerp(point, factor) – аналог interpolate, сокращённая форма:
let lerpPoint = p1.lerp(p2, 0.3);
  • isClose(point, tolerance) – проверка близости двух точек с заданной погрешностью:
let close = p1.isClose(p2, 0.01);

Преобразования точек

Point предоставляет методы для смещения, округления и получения новых координат:

  • round() / floor() / ceil() – округление координат:
let rounded = p1.round();  // {x: 100, y: 50}
let floored = p1.floor();  // {x: 100, y: 50}
let ceiled  = p1.ceil();   // {x: 100, y: 50}
  • abs() – получение координат по модулю:
let absPoint = p1.abs();
  • negate() – инверсия координат:
let negated = p1.negate(); // {x: -100, y: -50}

Применение в динамических проектах

Объекты Point широко используются для:

  • анимации перемещения элементов,
  • расчёта коллизий и взаимодействий,
  • построения геометрических фигур и кривых,
  • создания векторных графических эффектов.

Методы Point позволяют писать компактный, но мощный код, комбинируя арифметические операции с векторными преобразованиями и интерполяцией, что делает Paper.js эффективным инструментом для сложной графики и интерактивных визуализаций.