18 lines
804 B
TypeScript
18 lines
804 B
TypeScript
export type Vector2 = { x: number; y: number };
|
|
|
|
export class Vector {
|
|
static zero: () => Vector2 = () => ({ x: 0, y: 0 });
|
|
static sub: (a: Vector2, b: Vector2) => Vector2 = (a, b) => ({ x: a.x - b.x, y: a.y - b.y });
|
|
static add: (a: Vector2, b: Vector2) => Vector2 = (a, b) => ({ x: a.x + b.x, y: a.y + b.y });
|
|
static mult: (a: Vector2, b: Vector2) => Vector2 = (a, b) => ({ x: a.x * b.x, y: a.y * b.y });
|
|
static scale: (v: Vector2, scaleFactor: number) => Vector2 = (v, scaleFactor) => ({
|
|
x: v.x * scaleFactor,
|
|
y: v.y * scaleFactor,
|
|
});
|
|
static mag: (v: Vector2) => number = (v) => Math.sqrt(v.x * v.x + v.y * v.y);
|
|
static normalized: (v: Vector2) => Vector2 = (v) => {
|
|
const mag = Vector.mag(v);
|
|
return mag === 0 ? Vector.zero() : { x: v.x / mag, y: v.y / mag };
|
|
};
|
|
}
|