| |
| |
| export const H = { |
| WRIST: 0, |
| THUMB_TIP: 4, |
| INDEX_MCP: 5, INDEX_TIP: 8, |
| MIDDLE_MCP: 9, MIDDLE_TIP: 12, |
| RING_MCP: 13, RING_TIP: 16, |
| PINKY_MCP: 17, PINKY_TIP: 20, |
| }; |
|
|
| export const dist = (a, b) => Math.hypot(a.x - b.x, a.y - b.y); |
| export const mid = (a, b) => ({ x: (a.x + b.x) / 2, y: (a.y + b.y) / 2 }); |
|
|
| |
| export const ema = (prev, next, a = 0.5) => (prev == null ? next : prev * (1 - a) + next * a); |
|
|
| export const clamp = (v, lo, hi) => Math.max(lo, Math.min(hi, v)); |
| |
| export const norm = (v, lo, hi) => clamp((v - lo) / (hi - lo), 0, 1); |
| export const lerp = (a, b, t) => a + (b - a) * t; |
| |
| export const expmap = (t, lo, hi) => lo * Math.pow(hi / lo, clamp(t, 0, 1)); |
|
|