Zoom mit Mittenjustierung
Variablen
wvp | Breite des Viewports | hvp | Höhe des Viewports |
wi1 | Breite des Image (vorher) | hi1 | Höhe des Image (vorher) |
wi2 | Breite des Image (nachher) | hi2 | Höhe des Image (nachher) |
offsx1 | Offset des linken Randes (Image → Viewport, vorher) | offsy1 | Offset des oberen Randes (Image → Viewport, vorher) |
offsx2 | Offset des linken Randes (Image → Viewport, nachher) | offsy2 | Offset des oberen Randes (Image → Viewport, nachher) |
xp | Teilungsverhältnis im Image (X-Achse) |
Idee
Das Teilungsverhältnis xp
entlang der X-Achse, bezogen auf die
Mitte des Viewports, muss beim Zoomen konstant bleiben.
Rechnung
Rechnung beispielhaft anhand der X-Achse:
xp = (wvp / 2 - offsx1) / wi1 xp = (wvp / 2 - offsx2) / wi2
daraus folgt
(wvp / 2 - offsx1) / wi1 = (wvp / 2 - offsx2) / wi2
Gesucht ist der Offset nach dem Zoomen
offsx2 = - ((wi2 – wi1) * wvp / 2 – wi2 * offsx1) / wi1
Für die Y-Achse ergibt sich entsprechend
offsy2 = - ((hi2 - hi1) * hvp / 2 - hi2 * offsy1) / hi1