2012-03-26 23 views
2

Ich habe ein Problem mit meinem Code in Android. Ich benutze das um einen Ball zu bewegen. Wenn der Grad 90 ist, sollte er sich nach rechts bewegen, wenn der Grad 180 ist, sollte er sich nach unten bewegen usw.Probleme mit cos und sin in Android

Dies ist der Code, den ich gemacht habe.

int degrees=180; 
int bollspeed=4; 

bollX += bollspeed*Math.cos(Math.toRadians(degrees)); 
bollY += bollspeed*Math.sin(Math.toRadians(degrees)); 

Das Problem ist, dass, wenn die Kugel 90 Grad es 180 bewegt sich bewegen sollte, und wenn es 180 Grad bewegen sollte es sich bewegt 270. ich getestet habe alles, was ich zu denken kommen könnte ... Kann mir jemand einen Fehler sehen In meinem Code oder einer Erweiterung wäre ich wirklich froh. Danke

Antwort

8

Wie wäre es mit Math.toRadians(degrees-90)? Bei Verwendung von Polarkoordinaten sollte 0 Grad bei 3 Uhr sein, nicht bei 12.

+0

Ok. Das wusste ich nicht. Danke vielmals –

4

Warum nicht 90 Grad dann subtrahieren?

bollX += bollspeed*Math.cos(Math.toRadians(degrees-90)); 
bollY += bollspeed*Math.sin(Math.toRadians(degrees-90)); 
3

90 Grad entspricht π/2. Der Kosinus von π/2 = 0. so sollte sich die Kugelgeschwindigkeit im X nicht ändern.

der Sinus von π/2 = 1, so dass die Ballgeschwindigkeit in der Y um 1

Degrees erhöhen sollte | Radianer | Wert


cos (0 °) = cos (0) = 1

cos (90 °) = cos (π/2) = 0

cos (180 °) = cos (π) = -1

cos (270 °) = Kosten (3π/2) = 0


sin (0 °) = sin (0) = 0

sin (90º) = sin (π/2) = 1

sin (180 °) = sin (π) = 0

sin (270º) = sin (3π/2) = - 1