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 ???
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
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
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>
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 ]
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:
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 ]
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>
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden