Entwickler-Ecke

Basistechnologien - C# Math.Sin() spinnt?


tartare - Mi 21.02.07 18:47
Titel: C# Math.Sin() spinnt?
Hallo,

ich schreibe gerade ein programm womit sich ein Dreieck berechnen lässt. funktioniert auch ganz gut, außer beim Sinus: Ich habe debugged und Math.Sin(56°) meinte dass das -0.521... ist, habs mit nem Taschenrechner geprüft ist eigentlich 0.829... . Soweit ich weiß kann ein Sinus nicht negativ sein, oder? Woran kann das liegen muss ich das noch irgendwie umrechnen?
Danke im Vorraus...
mfg tartare


Moderiert von user profile iconChristian S.: Topic aus Algorithmen, Optimierung und Assembler verschoben am Mi 21.02.2007 um 17:50


Christian S. - Mi 21.02.07 18:51

Der Hint für Math.Sin in der IDE sagt's ja schon: "An angle, measured radians." Du musst den Winkel also im Bogenmaß angeben.


Gausi - Mi 21.02.07 18:52

Doch, sinus kann negativ werden ;-)

Die Ursache deines Problems liegt darin, dass die Routinen im Rechner in aller Regel im Bogenmaß rechnen (ein Kreis = 2pi, auf dem Taschenrechner RAD), und du deinen Taschenrechner bestimmt auf DEG gestellt hast, wo ein voller Kreis 360° sind.
Der Vollständigkeit halber: bei GRAD ist ein voller Kreis 400°. Ein rechter Winkel sind dann 100°.

Such mal nach Deg2Rad oder Rad2Deg oder vergleichbarem - da findet man dann Umrechnungsfunktionen ;-)


tartare - Mi 21.02.07 19:16

OK, Danke!!!

Ordnungshalber:
Ich mach das ganze jetz so:


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
 private double Cos(double zahl)
        {
            return Math.Cos(zahl * (Math.PI / 180));
        }

        private double Sin(double zahl)
        {
            return Math.Sin(zahl * (Math.PI / 180));
        }