gesture.ts 557 B

1234567891011121314151617
  1. import { Pointer } from "./types";
  2. import { normalizeScroll } from "./scene";
  3. export function getCenter(pointers: readonly Pointer[]) {
  4. return {
  5. x: normalizeScroll(sum(pointers, pointer => pointer.x) / pointers.length),
  6. y: normalizeScroll(sum(pointers, pointer => pointer.y) / pointers.length),
  7. };
  8. }
  9. export function getDistance([a, b]: readonly Pointer[]) {
  10. return Math.hypot(a.x - b.x, a.y - b.y);
  11. }
  12. function sum<T>(array: readonly T[], mapper: (item: T) => number): number {
  13. return array.reduce((acc, item) => acc + mapper(item), 0);
  14. }