Der Martin: Ellipsenbahn berechnen - Schrittweite

Beitrag lesen

Hallo,

Da ich das Element allerdings um Ellipsen mit verschieden Ausmaßen, die mir erst zur Laufzeit bekannt sind, laufen lassen will, wäre es dann nur sinnvoll, mir die Sinus-/Cosinus-Werte irgendwo abzulegen - und dann jeweils noch mit a und b zu multiplizieren.

so hatte ich das auch gemeint.

Aber die mathematischen Funktionen sind nach meinen Erfahrungen in solchen Fällen sowieso selten der Flaschenhals - das neu positionieren des Objektes bzw. das Rendern dieser Positionsveränderung ist meist das, was "dauert".

Hm, das ist wohl wahr ...

[1] Bringt das dann überhaupt was? Ältere Taschenrechner hatten doch AFAIK eh schon immer Lookup-Tabellen, in denen dann die Werte näherungsweise nachgeschlagen wurden - ob das bei JS überhaupt anders ist?

Keine Ahnung, wie es in JS *allgemein* gemacht wird. Die JS-Engine von Mozilla/Firefox ("Spidermonkey") berechnet Sinus- und Cosinuswerte jedenfalls über ein Polynom 14. Grades, von dem allerdings nur die geraden Terme berücksichtigt werden - bleiben also 6 Polynomglieder und eine Konstante. Die Runtime-Libraries und Standardbibliotheken verschiedener Programmiersprachen/Compiler berechnen transzendente Funktionen (Sinus/Cosinus, Logarithmen, Wurzeln) ähnlich aufwendig. In so einem Fall bringt es einen erheblichen Zeitgewinn (bezogen auf die Mathematikfunktion), wenn man stattdessen auf eine Tabelle zugreift; sogar eine lineare Interpolation von Zwischenwerten kann sich von der Performance her noch auszahlen. Bei Sinus/Cosinus ist in vielen Fällen eine Tabelle mit 256 Stützpunkten ausreichend für die jeweilige Anwendung, und die Werte selbst kann man als 16bit-Integers ablegen (Definition: ±32767 entspricht ±1.0). Allein der Verzicht auf Fließkommaarithmetik dürfte die Rechnung erheblich beschleunigen.

So long,
 Martin

--
Der Gast geht solange zum Tresen, bis er bricht.