Golven en sinussen

Golven en sinussen, leuke begrippen. En daar kan je ook leuke dingen mee. In een golf van inspiratie heb ik een programmaatje geschreven dat de interferentie tussen golven weergeeft. Op zich is dit een vrij simpel script, maar je kan er leuke dingen mee doen.
Om zelf ook plaatjes te maken als de bovenstaande, een werkende demo staat hier. Aan te raden is de nieuwste versie van Google Chrome om hem te testen, FireFox stottert namelijk nogal bij het draaien en Safari doet al helemaal raar. Internet Explorer ondersteunt nog steeds Canvas niet. (versie 9 wel, maar die is nog niet officieel vrijgegeven, dus test ik daar niet voor. Eerst maar eens een echte versie, geen beta.)
Dat was alleen niet het interessante deel. Interessanter is om dat snel werkend te krijgen in een webbrowser. Een bekend probleem hierbij is dat de sinusfunctie, of eigenlijk de benadering er van, erg langzaam werkt. Hierom heb ik ook nog een snellere sinusbenadering bedacht, die welliswaar heel grof is, maar goed genoeg. De beschrijving over hoe dat werkt, evenals het programma waarmee de functie gevonden is, staan ook online.
Helaas werkt niet alles even goed als gehoopt. Hoewel deze methode in gecompileerde talen als C++ veel sneller is, is de tijdswinst in Google Chrome slechts klein (1.4 x zo snel in de tests) en in Firefox en Safari zelfs een achteruitgang. (0.7 x zo snel) Echter dient wel vermeld te worden dat zowel fSin als de normale sinus sneller werken in Chrome, een factor 2 sneller ongeveer.
Bij deze uitslagen hoeft mijn woord niet noodzakelijk voor waar aangenomen te worden, de snelheidstest is te vinden op de pagina over de snellere sinus. En hoewel Internet Explorer de test in theorie wel zou moeten kunnen halen, duurde het dusdanig lang dat ik de test heb afgebroken. Als FF het in 3.5 seconden haalt, mag IE er niet langer dan 2 minuten over doen.