UNPKG

pencil.js

Version:

Nice modular interactive 2D drawing library.

112 lines (111 loc) 3.49 kB
/** * Vector class */ export default class Vector { /** * @typedef {Object} AbstractVector * @prop {PositionDefinition} [start] - Start coordinates * @prop {PositionDefinition} [end] - End coordinates */ /** * @typedef {Array<PositionDefinition>|AbstractVector} VectorDefinition */ /** * Create a Vector from a generic definition * @param {VectorDefinition} [vectorDefinition] - Vector definition * @return {Vector} */ static from(vectorDefinition?: VectorDefinition): Vector; /** * Vector constructor * @param {PositionDefinition} start - Starting vector's position * @param {PositionDefinition} end - Ending vector's position */ constructor(start: any, end: any); start: Position; end: Position; /** * Get this vector horizontal component * @return {Number} */ get width(): number; /** * Get this vector vertical component * @return {Number} */ get height(): number; /** * Return this vector's length * @return {Number} */ get length(): number; /** * Create a new copy of this vector * @return {Vector} */ clone(): Vector; /** * Determine if is equal to another vector * @param {VectorDefinition} vectorDefinition - Any vector * @return {Boolean} */ equals(vectorDefinition: VectorDefinition): boolean; /** * Get the vector move with start at (0, 0) * @return {Position} */ getDelta(): Position; /** * Add a vector * @param {VectorDefinition|PositionDefinition|Number} modification - Any Vector or Position or Number * @return {Vector} Itself */ add(modification: VectorDefinition | any | number): Vector; /** * Move this vector * @param {VectorDefinition|PositionDefinition|Number} modification - Any Vector or Position or Number * @return {Vector} Itself */ translate(modification: VectorDefinition | any | number): Vector; /** * Multiply this vector * @param {VectorDefinition|PositionDefinition|Number} modification - Any Vector or Position or Number * @return {Vector} Itself */ multiply(modification: VectorDefinition | any | number): Vector; /** * Define if this vector intersect another * @param {VectorDefinition} vectorDefinition - Any vector * @return {Boolean} */ intersect(vectorDefinition: VectorDefinition): boolean; /** * Return the intersection point between two vector or null if no intersection happen * @param {VectorDefinition} vectorDefinition - Any vector * @return {Position} */ getIntersectionPoint(vectorDefinition: VectorDefinition): Position; /** * Find the closest position to a point on this vector * @param {PositionDefinition} positionDefinition - Any position * @return {Position} */ getClosestToPoint(positionDefinition: any): Position; /** * Return a JSON ready Vector definition * @return {Array<Array<Number>>} */ toJSON(): Array<Array<number>>; } export type AbstractVector = { /** * - Start coordinates */ start?: any; /** * - End coordinates */ end?: any; }; export type VectorDefinition = Array<any> | AbstractVector; import Position from "@pencil.js/position";