Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Sinusfunktion

Empfohlene Antworten

Veröffentlicht

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

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

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

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 ]

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:

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 ]

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

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.