maddin Geschrieben 29. Juni 2001 Geschrieben 29. Juni 2001 moin leude, ich brauche für ein programm die sinusfunktion. diese scheint aber nicht einwandfrei zu funktionieren. mein code ist folgender for ( int i=0; i<=m_SavedData.GetSize(); i++ ) { // float alpha -> wert zuweisen tmp.m_SavedData.GetData(i); float steps = radius / (tmp.GetLength() / 2 ); float addx = (float) sin (alpha) * steps // weitere code folgt } weiter info 1.) m_SavedData ist eine eigene Klasse, dessen funktion GetSize() die anzahl gespeicherter Elemente liefert. die funktion GetData(int n) liefer das nte Element eines Array. das element ist von Typ CString. 2.) tmp ist von Typ CString 3.) radius ist vom Typ float werte : alpha ändert seinen wert bei jedem durchlauf der schleife. und zwar in der reihenfolge 45.000000 43.200001 41.400002 39.599998 ... steps ist immer 0.636364 addx ändert seinen wert ebenfalls und zwar in der reihenfolge: 0.541484 -0.448579 -0.337648 0.602008 ... das problem dabei ist, das addx einmal negativ und dann wieder positiv ist, obwohl es das eigentlich nicht sollte. und daran ist die funktion sin() schuld. sie liefert mir falsche werte und zwar: sin(45.000000) -> 0.850904 sin(43.200001) -> -0.704910 sin(41.400002) -> -0.530590 sin(39.599998) -> 0.946013 diese werte sind eindeutig falsch. und deshalb auch meine frage. WARUM ??? Zitieren
gajUli Geschrieben 29. Juni 2001 Geschrieben 29. Juni 2001 Hallo maddin, der Sinus kann durchaus negative Werte annehmen und damit auch addx. Das haengt von alpha ab und ueber alpha hast Du uns so ziemlich gar nichts erzaehlt! Uli Zitieren
Tachyoon Geschrieben 29. Juni 2001 Geschrieben 29. Juni 2001 Hallo! Also wenn ich meinen Taschenrechner auf "rad" stelle, statt auf normale Rechnung, dann kriege ich genau die Werte heraus, die dir die Sinus-Fkt angibt. Die Werte sind also durchaus korrekt, werden aber "anders" berechnet... Versuche doch mal den voreingestellten, verwendeten Rechenmodus in deinem Prog von RAD auf DEG zu stellen. Dann dürftest du das haben, was du dachtest. cya Zitieren
hades Geschrieben 29. Juni 2001 Geschrieben 29. Juni 2001 <BLOCKQUOTE><font size="1" face="Verdana, Helvetica, sans-serif">Zitat:</font><HR>Original erstellt von Tachyoon: <STRONG>Hallo! Also wenn ich meinen Taschenrechner auf "rad" stelle, statt auf normale Rechnung, dann kriege ich genau die Werte heraus, die dir die Sinus-Fkt angibt.</STRONG> Zitieren
maddin Geschrieben 29. Juni 2001 Autor Geschrieben 29. Juni 2001 danke aber könnte nebenbei mal einer erwähnen, wie man das format umstellt. dann brauch ich meine bücher nicht zu suchen. @EisenUli ich habe erwähnt, das sich alpha bei jedem schleifendurchlauf ändert und auch die entsprechenden werte notiert. ich denke das es nicht nötig ist da noch weiter drauf einzugehen, besonders, weil die werte von inhalt von m_SavedData abhängen. [ 29. Juni 2001: Beitrag editiert von: maddin ] Zitieren
Manne Geschrieben 29. Juni 2001 Geschrieben 29. Juni 2001 Hi maddin, du musst deinen Wert für Alpha vorher von deg (Grad) in rad (Bogenmass) umrechnen. rad = deg * PI / 180 deg = rad * 180 /PI Manne :cool: Zitieren
hades Geschrieben 29. Juni 2001 Geschrieben 29. Juni 2001 Radiant/Pi = Degree/180° float DegToRad (float Degree) { return Pi/180.0*Degree; }; float RadToDeg (float Radiant) { return 180.0*Radiant/Pi; }; [ 29. Juni 2001: Beitrag editiert von: hades ] Zitieren
gajUli Geschrieben 30. Juni 2001 Geschrieben 30. Juni 2001 <BLOCKQUOTE><font size="1" face="Verdana, Arial, Helvetica, sans-serif">Zitat:</font><HR>Original erstellt von maddin: <STRONG> ich denke das es nicht nötig ist da noch weiter drauf einzugehen, </STRONG> Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.