Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

PD

unregistriert

1

08.04.2005, 21:17

math.h fehlerhaft?

Hi, ich wollte aus der math.h die sin() und cos() Funktionen verwenden, bekomme da aber irgendwie falsche Werte raus. Da mich das wunderte hab ich ma nen test gemacht der mir folgendes ausspuckt:

Zitat

sin(0): 0 cos(0): 1
sin(5): -0.958924 cos(5): 0.283662
sin(10): -0.544021 cos(10): -0.839072
sin(15): 0.650288 cos(15): -0.759688
sin(20): 0.912945 cos(20): 0.408082
sin(25): -0.132352 cos(25): 0.991203
sin(30): -0.988032 cos(30): 0.154251
sin(35): -0.428183 cos(35): -0.903692
sin(40): 0.745113 cos(40): -0.666938
sin(45): 0.850904 cos(45): 0.525322
sin(50): -0.262375 cos(50): 0.964966
sin(55): -0.999755 cos(55): 0.0221268
sin(60): -0.304811 cos(60): -0.952413
sin(65): 0.826829 cos(65): -0.562454
sin(70): 0.773891 cos(70): 0.633319
sin(75): -0.387782 cos(75): 0.921751
sin(80): -0.993889 cos(80): -0.110387
sin(85): -0.176076 cos(85): -0.984377
sin(90): 0.893997 cos(90): -0.448074
sin(95): 0.683262 cos(95): 0.730174
sin(100): -0.506366 cos(100): 0.862319
sin(105): -0.970535 cos(105): -0.240959
sin(110): -0.0442427 cos(110): -0.999021
sin(115): 0.945435 cos(115): -0.32581
sin(120): 0.580611 cos(120): 0.814181


Die meisten sollten daran auch ohne nachzurechnen erkennen das die meisten Werte nicht stimmen. Woran liegt das und ist das bei euch auch so?

Sicaine

unregistriert

2

08.04.2005, 21:36

Puhhhh ne ich muste nachrechnen :P Aber du hast recht ^^.

3

08.04.2005, 22:11

ihr habt einfach nur rad & deg verwechselt. an den werten ist
nix falsch

PD

unregistriert

4

08.04.2005, 22:33

Dann is die sin() und cos() funktion also rad? Gibts da equivalente funktioenen für deg?

koschka

Community-Fossil

Beiträge: 2 862

Wohnort: Dresden

Beruf: Student

  • Private Nachricht senden

5

08.04.2005, 22:44

dafür brauchst du doch keine eigene sin-Funktion, das konvertieren ist doch nicht sooo schwer ;) hat glaub ich auch David in der Tribase drin

6

08.04.2005, 23:46

kl. tipp: pi = 180°

PD

unregistriert

7

09.04.2005, 11:06

ja, hab das mittlerweile soweit (ich kenne das Bogenmaß und ne Formel herzuleiten war nicht wirklich schwer ;)) nur für 180° (180*PI/180 = PI) macht er mir bei Sinus (sin(PI)) einen Fehler denn da kommt raus:

Zitat

sin(180): 1.22461e-016

also mehr als 1. Habe sowohl meine konstante versucht:

C-/C++-Quelltext

1
const double PI = 3.1415926535897932384626433832795;

als auch die in math.h definierte M_PI... beide hatten das selbe Ergebnis. Alle anderen Werte sind afaik jetzt richtig. Auch bei cos(). ^^ Muss ich jetzt ein workaraound machen das vorher abfragt obs 180° sind und das ergebnis dann direkt auf 0 setzt? ^^

8

09.04.2005, 13:17

1. der sin(180 bzw. pi ) = 0 nicht 1 !
2. 1.22461e-016 ist anähernd 0 & nicht größer 1 !!!!
=> das is richtig. wenn du mal printf("%f\n", ...) benutzt
um dein ergebnis in der konsole auszugeben, dann wirst
du sowas wie 0.000000 sehn anstatt 1.22461e-016.
du hast immer eine gewissen ungenaugigkeit wenn du mit float's & double's
arbeitest.


gruß 23h

9

09.04.2005, 13:21

ps: die formel fürs bogenmaß: a° = 180*a/pi

a°:= winkel in grad
a:= winkel in bogenmaß

PD

unregistriert

10

09.04.2005, 13:55

Oder von Grad nach Bogenmaß:

a = a° * PI / 180

^^
Ok, wenn ich drüber nachdenk haste recht *lol*
e-16 ist ja schon recht klein, hatte nen denkfehler *g*

Ok, danke für eure Hilfe :) Hat mir sehr geholfen.

Werbeanzeige