Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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 ???

Geschrieben

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... :D

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

Geschrieben

<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>

Geschrieben

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 ]

Geschrieben

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 ]

Geschrieben

<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>

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...