31 lines
750 B
TypeScript
31 lines
750 B
TypeScript
export enum Direction {
|
|
NORTH = "NORTH",
|
|
SOUTH = "SOUTH",
|
|
EAST = "EAST",
|
|
WEST = "WEST",
|
|
}
|
|
|
|
export const directions: Direction[] = [
|
|
Direction.NORTH,
|
|
Direction.SOUTH,
|
|
Direction.EAST,
|
|
Direction.WEST,
|
|
];
|
|
|
|
export function rotateDirection(
|
|
initialDirection: Direction,
|
|
rotationAngle: 0 | 90 | 180 | 270,
|
|
): Direction {
|
|
const angleToDirectionMap: Record<Direction, 0 | 90 | 180 | 270> = {
|
|
[Direction.NORTH]: 0,
|
|
[Direction.EAST]: 90,
|
|
[Direction.SOUTH]: 180,
|
|
[Direction.WEST]: 270,
|
|
};
|
|
const finalAngle =
|
|
(360 + angleToDirectionMap[initialDirection] - rotationAngle) % 360;
|
|
return (Object.keys(angleToDirectionMap) as Direction[]).find(
|
|
(direction) => angleToDirectionMap[direction] === finalAngle,
|
|
)!;
|
|
}
|