Berechnen neuer Positionen anhand Bildgröße
Klaus
- javascript
1 LX
Hallo,
ich muss ein wenig ausholen, um das Problem korrekt zu beschreiben.
Ich habe eine Karte als Grafik mit sehr großen Abmessungen (~ 8000x9000 Pixel).
Auf dem Bildschirm zeige nur einen Ausschnitt an (Fenster 800*600).
Jetzt kann ich sowohl den angezeigten Ausschnitt mit der Maus verschieben, als auch die Größe des Bildes verändern.
Das klappt soweit ganz gut, nur möchte ich, dass der Mittelpunkt des angezeigten Ausschnitts auch beim Vergrößern/Verkleinern der Mittelpunkt bleibt.
Eigentlich erwartete ich, dass es sich um eine einfache Dreisatz-Rechnung handelt (jetzt nur mal die X-Koordinate betrachtet):
ax = alte X-Koord des Bildes
ab = alte Breite des Bildes
nx = neue X-Koord des Bildes
nb = neue Breite des Bildes.
Wenn sich die Breite der Karte ändert, dann errechne ich die neue X-Koordinate: nx = ax * ( nb / ab ). (Werte natürlich noch gerundet)
Aber leider verschiebt sich der Mittelpunkt weiterhin.
Hab ich da (wiedermal) einen blöden Denkfehler?
Ja, Du hast einen Denkfehler. Die Koordinate bezieht sich auf die linke/obere Ecke des Bilds, während der Mittelpunkt weiter rechts/unten liegt. Deine Formeln müßten korriert folgendermaßen lauten:
nx = (ax + (ab / 2)) / ab * nb - (nb / 2) und
ny = (ay + (ah / 2)) / ah * nh - (nh / 2)
Gruß, LX