(
start: { x: number; y: number },
end: { x: number; y: number },
)
| 71 | * @returns Angle in degrees (0-360) |
| 72 | */ |
| 73 | export const calculateAngle = ( |
| 74 | start: { x: number; y: number }, |
| 75 | end: { x: number; y: number }, |
| 76 | ): number => { |
| 77 | const dx = end.x - start.x; |
| 78 | const dy = end.y - start.y; |
| 79 | let angle = Math.atan2(dy, dx) * (180 / Math.PI); |
| 80 | return (angle + 360) % 360; // Normalize to 0-360 degrees |
| 81 | }; |
| 82 | |
| 83 | // from https://math.stackexchange.com/a/2888105 |
| 84 | export const decomposeRelativeTransform = ( |