UNPKG

pixi.js

Version:

<p align="center"> <a href="https://pixijs.com" target="_blank" rel="noopener noreferrer"> <img height="150" src="https://files.pixijs.download/branding/pixijs-logo-transparent-dark.svg?v=1" alt="PixiJS logo"> </a> </p> <br/> <p align="center">

201 lines (199 loc) 5.4 kB
"use strict"; class Point { /** * Creates a new `Point` * @param {number} [x=0] - position of the point on the x axis * @param {number} [y=0] - position of the point on the y axis */ constructor(x = 0, y = 0) { /** * Position of the point on the x axis * @example * ```ts * // Set x position * const point = new Point(); * point.x = 100; * * // Use in calculations * const width = rightPoint.x - leftPoint.x; * ``` */ this.x = 0; /** * Position of the point on the y axis * @example * ```ts * // Set y position * const point = new Point(); * point.y = 200; * * // Use in calculations * const height = bottomPoint.y - topPoint.y; * ``` */ this.y = 0; this.x = x; this.y = y; } /** * Creates a clone of this point, which is a new instance with the same `x` and `y` values. * @example * ```ts * // Basic point cloning * const original = new Point(100, 200); * const copy = original.clone(); * * // Clone and modify * const modified = original.clone(); * modified.set(300, 400); * * // Verify independence * console.log(original); // Point(100, 200) * console.log(modified); // Point(300, 400) * ``` * @remarks * - Creates new Point instance * - Deep copies x and y values * - Independent from original * - Useful for preserving values * @returns A clone of this point * @see {@link Point.copyFrom} For copying into existing point * @see {@link Point.copyTo} For copying to existing point */ clone() { return new Point(this.x, this.y); } /** * Copies x and y from the given point into this point. * @example * ```ts * // Basic copying * const source = new Point(100, 200); * const target = new Point(); * target.copyFrom(source); * * // Copy and chain operations * const point = new Point() * .copyFrom(source) * .set(x + 50, y + 50); * * // Copy from any PointData * const data = { x: 10, y: 20 }; * point.copyFrom(data); * ``` * @param p - The point to copy from * @returns The point instance itself * @see {@link Point.copyTo} For copying to another point * @see {@link Point.clone} For creating new point copy */ copyFrom(p) { this.set(p.x, p.y); return this; } /** * Copies this point's x and y into the given point. * @example * ```ts * // Basic copying * const source = new Point(100, 200); * const target = new Point(); * source.copyTo(target); * ``` * @param p - The point to copy to. Can be any type that is or extends `PointLike` * @returns The point (`p`) with values updated * @see {@link Point.copyFrom} For copying from another point * @see {@link Point.clone} For creating new point copy */ copyTo(p) { p.set(this.x, this.y); return p; } /** * Checks if another point is equal to this point. * * Compares x and y values using strict equality. * @example * ```ts * // Basic equality check * const p1 = new Point(100, 200); * const p2 = new Point(100, 200); * console.log(p1.equals(p2)); // true * * // Compare with PointData * const data = { x: 100, y: 200 }; * console.log(p1.equals(data)); // true * * // Check different points * const p3 = new Point(200, 300); * console.log(p1.equals(p3)); // false * ``` * @param p - The point to check * @returns `true` if both `x` and `y` are equal * @see {@link Point.copyFrom} For making points equal * @see {@link PointData} For point data interface */ equals(p) { return p.x === this.x && p.y === this.y; } /** * Sets the point to a new x and y position. * * If y is omitted, both x and y will be set to x. * @example * ```ts * // Basic position setting * const point = new Point(); * point.set(100, 200); * * // Set both x and y to same value * point.set(50); // x=50, y=50 * * // Chain with other operations * point * .set(10, 20) * .copyTo(otherPoint); * ``` * @param x - Position on the x axis * @param y - Position on the y axis, defaults to x * @returns The point instance itself * @see {@link Point.copyFrom} For copying from another point * @see {@link Point.equals} For comparing positions */ set(x = 0, y = x) { this.x = x; this.y = y; return this; } toString() { return `[pixi.js/math:Point x=${this.x} y=${this.y}]`; } /** * A static Point object with `x` and `y` values of `0`. * * This shared instance is reset to zero values when accessed. * * > [!IMPORTANT] This point is shared and temporary. Do not store references to it. * @example * ```ts * // Use for temporary calculations * const tempPoint = Point.shared; * tempPoint.set(100, 200); * matrix.apply(tempPoint); * * // Will be reset to (0,0) on next access * const fresh = Point.shared; // x=0, y=0 * ``` * @readonly * @returns A fresh zeroed point for temporary use * @see {@link Point.constructor} For creating new points * @see {@link PointData} For basic point interface */ static get shared() { tempPoint.x = 0; tempPoint.y = 0; return tempPoint; } } const tempPoint = new Point(); export { Point }; //# sourceMappingURL=Point.mjs.map