pencil.js
Version:
Nice modular interactive 2D drawing library.
112 lines (111 loc) • 3.49 kB
TypeScript
/**
* 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";