Gunnar Bittersmann: Kreisbewegung scheitert/stoppt bei Cosinus 0

Beitrag lesen

Hi Columba,

Anhand der Richtung habe ich "way" ausgerechnet - 0.02 für Bewegung im Uhrzeigersinn, -0.02 gegen den Uhrzeigersinn.

Da hab ich erstmal gestutzt. Aber ja, das Koordinatensystem ist ja auch andersherum: positive x rechts, positive y UNTEN.

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);

Liefert dir Werte im Intervall [0, π]. Du willst aber einen vollen Umlauf, also [0, 2π[ oder ]-π, π]. Nehmen wir der Einfachheit wegen das zweite.

Das Vorzeichen des Winkels bogen1 stimmt dann mit dem Vorzeichen von posNeu["y"]-m["y"] überein. Also einfach

if (posNeu["y"] < m["y"]) bogen1 = -bogen1;

Das musst du nur einmal tun. In die Schleife kommt

bogen1 += way;  
posNeu["x"]=m["x"]+ radius * Math.cos(bogen1);  
posNeu["y"]=m["y"]+ radius * Math.sin(bogen1);

Gruß,
Gunnar

--
“I got my finger on the trigger / But I don’t know who to trust” (Bruce Springsteen, Devils and Dust)