Kosinusberechnung schlägt fehl

Padarom

Neues Mitglied
Hallo zusammen,
ich bin seit ich mir die Basics von C# beigebracht habe von der objektorientierten Programmierung beeindruckt und war froh als mir Java eine sehr ähnliche Syntax bot. Nach einigen Tests usw. möchte ich nun noch ein wenig weitergehen und kleine 2D-Minigames schreiben.
Dafür nutze ich die Slick2D API, mit welcher ich auch bereits gut umgehen kann, nachdem ich einige Testprogramme/-Menüs erstellt habe.
Die API hat jedoch mit meinem Problem eigentlich nichts zu tun.

Für eine schräge Bewegung ist Trigonometrie notwendig. Dafür nutze ich aktuell folgendes:
Java:
float posX, posY;
// ...
direction = 90;
// ...
posX += step*Math.cos(direction);
posY -= step*Math.sin(direction);
Nachdem mir auffiel, dass die Kugel sich nicht gerade nach oben bewegt - wie anzunehmen -, sondern leicht schräg nach links habe ich mir die Werte der Rechnung ausgeben lassen.
Java:
System.out.println("Eigentlich: .5*cos(90) = 0 | Spiel: " + step*Math.cos(direction));
Die Konsole gab mir dann folgendes aus:
Code:
Eigentlich: .5*cos(90) = 0 | Spiel: -0.2240368080645851

Ich bin mir sicher, dass dies nur ein kleiner (Anfänger-)fehler ist, doch kann ich ihn beim besten Willen nicht finden.

Hoffentlich kann mir jemand kurz unter die Arme greifen.

Danke im Voraus
Padarom
 

BRoll

Bekanntes Mitglied
Die Methode arbeitet mit Radian,
dem "echten" Winkel.

Der Grad Winkel ist ja nur eine andere Schreibweise.
Deshalb vorher umrechnen:

Java:
float posX, posY;
// ...
direction = 90;
// ...
posX += step*Math.cos(Math.toRadians(direction));
posY -= step*Math.sin(Math.toRadians(direction));

mfg BRoll
 
S

SlaterB

Gast
@Marco13
mit der Antwort kann man ja noch halb weiterrätseln ;)
noch ein Tipp: es gibt grundsätzlich Bogenmaß und Gradmaß

auch bei jedem Taschenrechner muss man aufpassen, ob man 180 Grad oder PI = 3.14 eintippt

Winkelmaß ? Wikipedia
 

Padarom

Neues Mitglied
Klappt jetzt perfekt, hatte das gleiche Problem in der Tat schonmal mit dem Taschenrechner, dachte aber eigentlich nicht dass es in Java auch daran liegt :)
Danke euch.
 

Ähnliche Java Themen

Neue Themen


Oben