3 ms·
The animation speed is determined by a timer, this should make it run the same in all the browsers. Is the simulation nice and smooth all the time? Friction is
by xchip 9y ago
The animation speed is determined by a timer, this should make it run the same in all the browsers. Is the simulation nice and smooth all the time?
Friction is a biggie that I need to add ASAP!
- pjc50 9y agoI suspect you're experiencing the joy of floating-point nondeterminism. Edit: yup, it's the same every time per browser, but I can have e.g. Edge and Chrome running next to one another doing different things.
- archgoon 9y agoHey hey hey, let's not blame floating point here ;). Floating point is completely deterministic (as you note by getting the same behavior every time you run the simulation in the browser). I'm looking at the js spec, and there shouldn't be any freedom in evaluating floating point expressions (but overly clever browser vendors may have ignored that and reordered them anyhow). However, I do know for a fact that the implementations of the Math.sin and Math.cos functions are browser specific, https://tc39.github.io/ecma262/#sec-math.sin https://tc39.github.io/ecma262/#sec-math.sin so that alone will remove any chance at browser independent reproducibility, without additional controls. Be interesting to see if replacing Math.cos and Math.sin with your own implementation would remove the cross browser dependency. Btw, spec conforming implementation of Math.sin function sin(x) { if ( x === Infinity || x === -Infinity || x === NaN) { return NaN; } return x; }
- xchip 9y agothat is quite strange... the time step is always the same no matter on how the frames are rendered.... the animation should be identical
- potench 9y agotry using requestAnimationFrame instead of a timer
- xchip 9y agoAwesome, I didnt know about that one (still learning!), thanks!