Forum: Compiler & IDEs Einer zahl eine feste andere Zahl zuweisen


von Markus (Gast)


Lesenswert?

Hallo zusammen,

ich möchte ein paar mathematische Winkelfunktionen verwenden, stehe 
jetzt jedoch vor dem Problem, dass mir die Rechenzeit fehlt.
Es kommt bei der Berechnung nicht umbedingt auf Genauigkeit sondern eher 
auf Geschwindigkeit an.

Ich habe mir es so vorgestellt, dass ich einer Zahl eine definierte 
andere Zahl zuweise. Zum Beispiel möchte ich aus der Zahl 71,1 die Zahl 
0,9154 machen. Eben den Sinus einer Zahl ohne Rechenaufwendige math.h 
Funktion.

Gibt es für soetwas eine Lösung ohne 3600 Cases einzubauen?


Vielen dank schonmal...

von Salewski (Gast)


Lesenswert?

Hashes, auch Maps genannt.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Markus schrieb:
> Gibt es für soetwas eine Lösung ohne 3600 Cases einzubauen?

Tabelle. Und Du musst die auch nicht für 3600 Werte aufbauen, 900 Werte 
reichen.

(Ich nehme an, daß Du Sinuswerte mit Zehntelgradauflösung haben 
möchtest)

Für Winkel zwischen 0 und 90° greifst Du direkt auf die Tabelle zu, für 
Winkel zwischen 90 und 180° ziehst Du den Winkel von 90° ab, und für 
Winkel zwischen 180 und 270° ziehst du 180 vom Winkel ab und negierst 
das Ergebnis. Was Du für den vierten Quadranten machen musst, solltest 
Du selbst rausfinden können.

von Markus (Gast)


Lesenswert?

vielen Dank genau das wonach ich gesucht habe

von Dirk B. (dirkb2)


Lesenswert?

901 Werte machen es etwas leichter.
Dann sind 0° bzw. 90° mit in der Tabelle drin und brauchen kein 
Sonderbehandlung.

von Dumdi D. (dumdidum)


Lesenswert?

Oder 91 Werte und linear interpolieren.

von Reinhard M. (reinhard_w)


Lesenswert?

Hallo Markus,

Falls Dir jetzt der Speicherplatz knapp geworden sein sollte, könntest 
Du Dir alternativ auch noch den CORDIC Algorithmus anschauen. Gute 
Erklärungen dazu sind leicht zu finden.

(Ich finde ihn außerdem irgendwie amüsant.)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.