@gamesberry/karmyc-core
Version:
A flexible and powerful layout management system for React applications
99 lines (98 loc) • 2.8 kB
TypeScript
/**
* 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;
}
}