Refactor (1)
This commit is contained in:
28
packages/utils/src/vector.ts
Normal file
28
packages/utils/src/vector.ts
Normal file
@@ -0,0 +1,28 @@
|
||||
export type Vector = {
|
||||
x: number;
|
||||
y: number;
|
||||
};
|
||||
|
||||
export type Radian = number;
|
||||
|
||||
export const degree = (value: number) => ((value / 180) * Math.PI) as Radian;
|
||||
|
||||
export const sub = (v1: Vector, v2: Vector) =>
|
||||
({
|
||||
x: v1.x - v2.x,
|
||||
y: v1.y - v2.y,
|
||||
}) as Vector;
|
||||
|
||||
export const add = (v1: Vector, v2: Vector) =>
|
||||
({
|
||||
x: v1.x + v2.x,
|
||||
y: v1.y + v2.y,
|
||||
}) as Vector;
|
||||
|
||||
export const theta = ({ x, y }: Vector) => Math.atan2(y, x) as Radian;
|
||||
|
||||
export const rotate = ({ x, y }: Vector, rad: Radian) =>
|
||||
({
|
||||
x: x * Math.cos(rad) - y * Math.sin(rad),
|
||||
y: x * Math.sin(rad) + y * Math.cos(rad),
|
||||
}) as Vector;
|
||||
Reference in New Issue
Block a user