原点中心の拡大縮小平行移動を画面中央中心に変換する
画像のドラッグ結果をPaper.jsのキャンバスの平行移動に反映したい。
画像の拡大縮小は原点中心、キャンバスの拡大縮小は画面中央中心なので変換が必要。
画像原点の移動量をvとする。
画像原点が移動していたとしても、例えば画面中央に対してのズームの場合は、キャンバス上での移動はない。
というわけで、原点から画面中央へのベクトルをa、拡大率をs、拡大後のキャンバスのズーム率をzとすると
$ c ← c - ((s - 1)a + v) / z
code:ts
newCenter = currentCenter.subtract(
rect.center.multiply(s - 1).add(V2(imageLeft, imageTop))
.multiply(1.0 / newZoom));
となる。