Vorweg:
Alle Angaben ohne Gewähr, Rechen- und Denkfehler vorbehalten
Ich hab' schließlich frei.
Du musst ja zuerst mal deine normalen Koordinaten P=(648/824) in Polarkoordinaten umwandeln.
Du kannst dir zwischen diesem Punkt, einer der Achsen und dem Ursprung ein Dreieck denken, mit dem du den Winkel errechnen kannst.
Hiermit kannst du die Entfernung des Punktes vom Ursprung ausrechnen:
|P|=sqrt(648^2+824^2)
Um nun genau den Punkt zu bekommen, brauchst du noch den Winkel, den du dir aus einem Dreieck errechnen kannst, dessen Hypothenuse durch P und den Ursprung verläuft und das eine Seite auf einer der Achsen hat.
also z.B.
a=arctan(648/824)
Der Ortsvektor deines Punktes ist also
P=|P|*cos(
a)+|P|*sin(
a)
Das musst du jetzt um 45° drehen, wäre demnach
P'=|P|*cos(
a+45°)+|P|*sin(
a+45°)
Achte darauf, dass dein Programm richtig rechnet und die Winkel auch als Gradmaß und nicht als Bogenmaß begreift - oder rechne alles ins Bogenmaß um. So müsste es aber eigentlich funktionieren
Allerdings musst du daran denken, dass sich der Ausschnitt dabei nicht nur dreht, sondern auch verschiebt, weil z.B. Punkte, die bisher genau senkrecht über dem Ursprung waren (90°) nun weiter verschoben werden auf 135°, was dann in den 3. Quadranten des Koordinatensystems hineinreicht.
So, ich hoffe ich habe jetzt nicht allzu viel Blödsinn geschrieben in meiner Weihnachtsmüdigkeit und wünsche dir viel Erfolg :up
Probiers einfach mal aus, grob stimmts auf jeden Fall, könnte aber sein, dass da irgendwo im Detail noch was nicht stimmt. Ich weiß auch nicht genau, wie Anno da rechnet, wenn z.B. (0|0) im Mittelpunkt der Karte liegt, gibt es keine Verschiebung - dafür hast du dann negative Werte in den Positionsangaben und musst bei der Winkelerrechnung aufpassen, dass du noch jeweils bestimmte Werte hinzu addierst, um deinen Kreiswinkel richtig zu errechnen.