Trace: • zoom
Csharp:zoom
This is an old revision of the document!
Для реализации зума по Х необходимо спроецировать его из координат окна в локальное адресное пространство сцены.
Если локальные координаты вычисляются так:
var centerX = (elementLocationX + sceneOffsetX) * zoom;
,где
- elementLocationX - позиция элемента
- sceneOffsetX - смещение сцены
- zoom - увеличение
то проекция вычисляется тупо обратным порядком операций.
Например, мы хотим зумировать в центр окна.
var windowTargetX = (window.Width / 2);
тогда проекция в локальные координаты будет
var Cx = windowTargetX / oldZoom - sceneOffsetX;
, где
- oldZoom - текущий коефициент увеличения(до изменения)
Новое смещение вычесляется так:
var xoffset = (Cx + sceneOffsetX ) * oldZoom / newZoom-Cx;
, где
newZoom - коефициент увеличения после изменения
