sin() und cos() aus cmath liefern falsche Ergebnisse
-
Hi,
ich bin hier langsam am verzweifeln und frage mich woran es noch liegen könnte, dass bei mir die sin() und cos() Funktionen aus cmath falsche Werte liefern. Hier der Codeauszug:
unsigned short slices = 3; double angle = 360.0 / (double)slices; double cx=0, cy=0; cx = sin(angle) * 10000.0; cy = cos(angle) * 10000.0;
angle hat hier den Wert 120.0 und der entsprechende Sinus müsste eigentlich lt. Taschenrechner ca. 0,866 sein. cx sollte demnach 8.660 sein. Der Cosinus von 120 ist -0,5 und cy sollte eigentlich -5.000 sein.
Im VC++ Debugger bekomme ich folgende Werte:
cx 5806.1118421231431 double
cy 8141.8097052656176 doubleWas mache ich bloß falsch?
-
Die trigonometrischen Funktionen basieren auf Radien und nicht auf Grad. Ersetze mal 360 durch 2*M_PI
-Gunnar
-
Die Winkelfunktionen aus <cmath> wollen ihr Argument im Bogenmaß, nicht in Grad. Wenn du also die eine Zeile so abänderst:
double angle = 2*PI / slices; // PI vorher irgendwo definieren ...
müsste es gehen.
-
Vielen Dank!
Hätte ich in der Schule besser aufgepasst und hätte ich mir die Referenz angeschaut, dann hätte ich es vielleicht selbst gemerkt *kopfschüttel*
Viele Grüße
Prog
-
M_PI steht übrigens nicht im Standard (nur gcc hat das, AFAIK).
-
Unter VC++ .net ist M_PI auch nutzbar:
#define _USE_MATH_DEFINES #include <cmath> // oder math.h