画像のドラッグ結果をPaper.jsのキャンバスの平行移動に反映したい。 画像の拡大縮小は原点中心、キャンバスの拡大縮小は画面中央中心なので変換が必要。 画像原点の移動量をvとする。 画像原点が移動していたとしても、例えば画面中央に対してのズームの場合は、キャンバス上での移動はない。 というわけで、原点から画面中央へのベクトルをa、拡大率をs、拡大後のキャンバスのズーム率をzとすると

ts

newCenter = currentCenter.subtract(
  rect.center.multiply(s - 1).add(V2(imageLeft, imageTop))
  .multiply(1.0 / newZoom));

となる。

pRegroup-done-2019