[Gelöst] Math.atan(.) gibt falsches Ergebnis

Status
Nicht offen für weitere Antworten.

Gachl

Mitglied
Hallo!
Ich versuche mir gerade ein kleines TD (Tower Defense) zu bauen und stosse auf ein Problem, das ich nicht gelöst kriege:
Ich habe einen Tower und einen Gegner in einem zweidimensionalen Koordinatensystem, woraus ja ein rechtwinkliges Dreieck entsteht. Bererchnet sind die Seiten a = 210, b = 120 und c = 241.87 und der Winkel gamma = 90°. Soweit mir bekannt muss ich um den Winkel alpha auszurechnen nun tan^-1(210/120) ( = 60.26 ) rechnen, in Java erfolgen Winkel ja in Radian, also ist das erwartete Ergebnis (laut meinem Taschenrechner voyage 200 UND google) 1.0517, in grad also die gewünschten 60.26°. Nun gibt mir Java aber mit der Math.atan(210/120)-Funktion nicht 1.0517 sondern 0.7854 zurück, was umgerechnet 45° (google) sind. Ist das ein Fehler von der Math.atan-Funktion oder macht die atan Funktion nicht das, was ich will oder hab ich einen Denkfehler?
Der Java-Code:
Code:
int a = 210;
int b = 120;
double alpha = Math.atan(a/b); // result: 0.7853981633974483
JDK 1.6.0_12, Eclipse
Danke an die, die helfen können!
Grüsse,
Gachl!
 

Gachl

Mitglied
Ebenius hat gesagt.:
Alle Winkelfunktionen in der Math-Klasse sind im Bogenmaß.
ich weiss, hab ich auch geschrieben, das ist nicht das problem
wie schon gesagt, ich erwarte den wert 1.05 (in bogenmass, also radian, das was java gibt, nicht in grad) bekommen tu ich aber 0.78 (in bogenmass, radian, nicht grad)
also ich beabsichtige bogenmass (radian) zu bekommen, aber eben 1.05 nicht 0.78
 
S

SlaterB

Gast
tztz,
wenn du schon von diesem Problem weißt, und einen Ausgabewert in Radian statt Grad akzeptierst,
wieso denkst du dann nicht auch über die Eingabewerte nach?
 

Gachl

Mitglied
SlaterB hat gesagt.:
wieso denkst du dann nicht auch über die Eingabewerte nach?
hast du eine konkrete idee, was an den eigabewerten falsch ist? ich nicht! die eingabewerte sind weder grad noch bogenmass, sondern eine division zweier längen (kein winkel), was ist daran falsch? zumal noch google mit den gleichen eingabewerten das richtige ergebnis bringt!
ich glaub ich hab die frage zu kompliziert formuliert

Ich habe: Ein Dreieck, bekannt sind Seite a = 210, b = 120 und c (Wert irrelevant) (in cm, pixel, liter, was ihr wollt, einfach in einem 2d Koordinatensystem) und der winkel gamma (90°, drum rechtwinkliges Dreieck)
Ich will: Winkel alpha in Bogenmass (radian, also das mit dem Java sowieso arbeitet)
Ich mache:
tan(alpha) = a/b
umstellen zu tan^-1(a/b) = alpha
entspricht double alpha = Math.atan(a/b)
Erwartetes Ergebnis: 1.05
Bekommenes Ergebnis: 0.78
Beweisquellen dafür, dass 1.05° Bogenmass DOCH richtig sind: Google & Taschenrechner
Wo ist der Fehler?
 
S

SlaterB

Gast
ok, da hast du doch mehr Recht als ich,
a und b ins Bogenmaß umgerechnet und durcheinander geteilt sollte das gleiche sein wie a/b,

das Problem ist in diesem Fall, dass int/int in Java gerundet wird,
210/120 = 1 und nicht korrekterweise 1.75

rechne dagegen beispielsweise
double x = a * 1.0 / b;
dann kommt auch ein double raus
 

Gachl

Mitglied
SlaterB hat gesagt.:
das Problem ist in diesem Fall, dass int/int in Java gerundet wird
wahnsinn jetzt funktionierts. ich bin glaub ich ein wenig zu sehr php geschädigt, da hätt das so funktioniert
aber jetzt gehts auch hier, vielen dank! :D
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen


Oben