pocket-physics
Version:
Verlet physics extracted from pocket-ces demos
42 lines • 2.25 kB
TypeScript
export declare type Vector2<V extends number = number> = {
x: V;
y: V;
};
export declare function v2<V extends number>(x?: V, y?: V): Vector2<V>;
export declare const copy: <V extends number>(out: Vector2<V>, a: Vector2<V>) => Vector2<V>;
export declare const set: <V extends number>(out: Vector2<V>, x: V, y: V) => Vector2<V>;
export declare const add: <V extends number>(out: Vector2<V>, a: Vector2<V>, b: Vector2<V>) => Vector2<V>;
export declare const sub: <V extends number>(out: Vector2<V>, a: Vector2<V>, b: Vector2<V>) => Vector2<V>;
export declare const dot: <V extends number>(a: Vector2<V>, b: Vector2<V>) => number;
export declare const scale: <V extends number>(out: Vector2<V>, a: Vector2<V>, factor: number) => Vector2<V>;
export declare const distance: <V extends number>(v1: Vector2<V>, v2: Vector2<V>) => number;
export declare const distance2: <V extends number>(v1: Vector2<V>, v2: Vector2<V>) => number;
export declare const magnitude: <V extends number>(v1: Vector2<V>) => number;
export declare const normalize: <V extends number>(out: Vector2<V>, a: Vector2<V>) => Vector2<V>;
/**
* Compute the normal pointing away perpendicular from two vectors.
* Given v1(0,0) -> v2(10, 0), the normal will be (0, 1)
* */
export declare const normal: <V extends number>(out: Vector2<V>, v1: Vector2<V>, v2: Vector2<V>) => Vector2<V>;
export declare const perpDot: <V extends number>(v1: Vector2<V>, v2: Vector2<V>) => number;
/**
* This is mostly useful for moving a verlet-style [current, previous]
* by the same amount, translating them while preserving velocity.
* @param by the vector to add to each subsequent vector
* @param vN any number of vectors to translate
*/
export declare const translate: <V extends number>(by: Vector2<V>, ...vN: Vector2<V>[]) => void;
/**
*
* @param v Print this vector for nice logs
*/
export declare function vd(v: Vector2): string;
/**
* Rotate a vector around another point. Taken nearly verbatim from gl-matrix
*/
export declare const rotate2d: <V extends Vector2<number>>(out: V, target: V, origin: V, rad: number) => V;
/**
* Compute the Theta angle between a vector and the origin.
*/
export declare function angleOf(v: Vector2): number;
//# sourceMappingURL=v2.d.ts.map