from pRegroup-done-2019 マウスポインタの位置を中心としたズーム
- ズームは現状、画面中心を起点としているが、人間にとって自然なのはマウスポインタの位置を中心としたズーム
こんな感じ ts
export function zoomAroundMousePointer(
initZoom: number, initCenter: paper.Point,
zoomCenter: paper.Point, scale: number,
) {
const v = initCenter.subtract(zoomCenter);
let newZoom = initZoom * scale;
let newCenter = initCenter.add(v.multiply((1 - scale) / scale));
return [newZoom, newCenter];
}
Shift+ドラッグだけではなく、マウスホイールやMacBookでの二本指上下スワイプにも対応するため括り出した。