[Erledigt] Mathematische Berechungen im Gradnetz nach Rotation
Hallo Forumler,
ich glaube, ich könnte diese Frage genauso gut in einem Mathematikforum stellen, aber ich hoffe auch hier Leute zu finden, die mir helfen können.
Folgendes:
Ich habe auf einer Seite eine Div-Box, die per Drag & Drop verschoben, rotiert und in der Größe geändert werden kann.
Das Verschieben, Rotieren und Größe ändern funktioniert ganz gut.
Ich rotiere die Box, indem ich die Mauskoordinaten hernehme und den Winkel der Rotation berechne und mittels CSS 3 rotate() dann drehe.
Um die Größe zu ändern bilde ich die Differenz der Anfangs- und Endmausposition und ändere die Werte von top, left, width und height.
So kann ich, wie z.B. in Photoshop an der rechten oberen Ecke klicken und die Box größer ziehen.
Das Problem ist jetzt, dass ich nach einer Rotation nicht mehr die einfache Berechnung der Differenz nutzen kann.
Ich will nun weiterhin die Möglichkeit bieten, die Höhe und Breite der Box zu verändern dabei ist ja aber alles um einen bestimmten Winkel gedreht.
Im Anhang ist ein Bild zum Szenario.
Gegeben sind alle schwarzen Werte, gesucht sind a und b. Und das ganze sollte beim weiteren rotieren immer noch funktionieren.
Man beachte auch dass die Mauspositionen von der linken oberen Ecke aus errechnet werden.
1. Habe ich dann bei der Berechnung das gleiche Problem.
2. Wird bei Scale auch der Inhalt der Box "gescaled", es soll sich aber nur Höhe und Breite ändern.
Ich glaube ich hab es, die Idee von nikosch war schon richtig.
Ich nehme die einzelnen Punkte und drehe sie quasi am Kreis wieder in den Urzustand, also auf 0 Grad, führe dann die Berechnungen durch und drehe danach alle Punkte wieder zurück.
Gleichung für das Drehen:
x' = (x-mX) cos(beta) - (y-mY) sin(beta) + u
y' = (x-mX) sin(beta) + (y-mY) cos(beta) + v