UNPKG

@gamesberry/karmyc-core

Version:

A flexible and powerful layout management system for React applications

99 lines (98 loc) 2.8 kB
/** * Représente un vecteur 2D. */ export interface IVec2 { x: number; y: number; } export declare class Vec2 { static new(vec: IVec2): Vec2; static new(x: number, y: number): Vec2; static fromEvent(e: MouseEvent): Vec2; static ORIGIN: Vec2; /** * Calculate the dot product of two vectors */ static dot(v1: IVec2, v2: IVec2): number; private _x; private _y; private atOrigin; constructor(vec: { x: number; y: number; }); constructor(x: number, y: number); set x(value: number); get x(): number; set y(value: number); get y(): number; add(vec: IVec2): Vec2; addX(x: number): Vec2; addY(y: number): Vec2; sub(vec: Vec2): Vec2; subX(x: number): Vec2; subY(y: number): Vec2; subXY(x: number, y: number): Vec2; scale(scale: number, anchor?: IVec2): Vec2; scaleX(scale: number, anchor?: IVec2): Vec2; scaleY(scale: number, anchor?: IVec2): Vec2; scaleXY(scaleX: number, scaleY: number, anchor?: IVec2): Vec2; rotate(rad: number, anchor?: IVec2): Vec2; multiplyMat2(mat2: any, anchor?: IVec2): Vec2; copy(): Vec2; /** * Linear interpolation * * A `t` value of `0` is this vector, 1 is `vec` */ lerp(vec: IVec2, t: number): Vec2; round(): Vec2; apply(fn: (vec: Vec2) => IVec2): Vec2; length(): number; eq(vec: IVec2): boolean; private toJSON; } declare global { class Vec2 { static new(vec: { x: number; y: number; } | { left: number; top: number; }): Vec2; static new(x: number, y: number): Vec2; static fromEvent(e: { clientX: number; clientY: number; }): Vec2; static ORIGIN: Vec2; static dot(v1: IVec2, v2: IVec2): number; x: number; y: number; constructor(vec: { x: number; y: number; }); constructor(x: number, y: number); add(vec: IVec2): Vec2; addX(x: number): Vec2; addY(y: number): Vec2; lerp(vec: IVec2, t: number): Vec2; sub(vec: IVec2): Vec2; subX(x: number): Vec2; subY(y: number): Vec2; subXY(x: number, y: number): Vec2; scale(scale: number, anchor?: IVec2): Vec2; scaleX(scale: number, anchor?: IVec2): Vec2; scaleY(scale: number, anchor?: IVec2): Vec2; scaleXY(scaleX: number, scaleY: number, anchor?: IVec2): Vec2; rotate(rad: number, anchor?: IVec2): Vec2; multiplyMat2(mat2: any, anchor?: IVec2): Vec2; copy(): Vec2; round(): Vec2; apply(fn: (vec2: Vec2) => IVec2): Vec2; length(): number; eq(vec: IVec2): boolean; } }