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.