Hallo!
Ich verwende ein JavaScript mit dem Ziel, einen Punkt um einen anderen rotieren zu lassen. Dabei sind die Koordinaten beider Punkte gegeben sowie auch die Bewegungsrichtung und der Kreisradius. Anhand der Richtung habe ich "way" ausgerechnet - 0.02 für Bewegung im Uhrzeigersinn, -0.02 gegen den Uhrzeigersinn.
Nun versuche ich, anhand der Koordinaten des Mittelpunkts (assoziatives Array "m") und des Punktes auf der Außenlinie (assoziatives Array "posNeu") den neuen Punkt zu berechnen:
var bogen1=Math.acos( (posNeu["x"]-m["x"]) /radius);
posNeu["x"]=m["x"]+ radius * Math.cos(bogen1+way);
posNeu["y"]=m["y"]+ radius * Math.sin(bogen1+way);
Sinn des Ganzen: Aus dem gegebenen Punkt das aktuelle Bogenmaß herausbekommen, dazu 0.02 addieren oder halt abziehen, den neuen Punkt berechnen (vom Mittelpunkt aus den Sinus/Kosinus mal den Radius).
Problem, das auftritt:
Ich beginne bei meinem Test im 4. Quadranten und bin gegen den Uhrzeigersinn unterwegs. Dieser 4. Quadrant wird korrekt durchlaufen. Statt in den 1. Quadranten zu wechseln, bleibt der Punkt aber auf Höhe des Mittelpunkts stehen. bogen1 bleibt bei 0.01 hängen - weshalb?
Wenn ich im 2. Quadranten beginne und in den 3. wechseln will, tritt dasselbe Problem auf.
Grüße,
Columba