Live data from Hacker News

HTML5 Gravity/Galaxy Simulator

mobile.sheridanc.on.ca

1–10 of 21 posts

Re: HTML5 Gravity/Galaxy Simulator

#3
This is cool, and I'm a sucker for gravity/space simulators (as my hours logged on Celestia would prove), but it should be noted that in terms of "galaxy" it's inaccurate. Specifically, this inaccuracy (the galaxy rotation problem) is the driving force behind the hypothesis of dark matter [0].

I don't mean to be pedantic or anything. I just think it's interesting.

[0] http://abyss.uoregon.edu/~js/cosmo/lectures/lec17.html

Re: HTML5 Gravity/Galaxy Simulator

#4
post #3

This is cool, and I'm a sucker for gravity/space simulators (as my hours logged on Celestia would prove), but it should be noted that in terms of "galaxy" it's inaccurate. Specifically, this inaccuracy (the galaxy rotation problem) is the driving force behind the hypothesis of dark matter [0]. I don't mean to be pedantic or anything. I just think it's interesting. [0] http://abyss.uoregon.edu/~js/cosmo/lectures/lec17…

Yeah maybe it would be nice idea if when you generate a galaxy it also generates small dark matter particles around the regular particles.

Re: HTML5 Gravity/Galaxy Simulator

#6
post #4
post #3

This is cool, and I'm a sucker for gravity/space simulators (as my hours logged on Celestia would prove), but it should be noted that in terms of "galaxy" it's inaccurate. Specifically, this inaccuracy (the galaxy rotation problem) is the driving force behind the hypothesis of dark matter [0]. I don't mean to be pedantic or anything. I just think it's interesting. [0] http://abyss.uoregon.edu/~js/cosmo/lectures/lec17…

Yeah maybe it would be nice idea if when you generate a galaxy it also generates small dark matter particles around the regular particles.

First a simulator like this would have to be written with Einstein's equations. This is (just a guess) a newtonian physics sim.

Re: HTML5 Gravity/Galaxy Simulator

#7
I can't help but notice there is a magical "Theta" parameter, with the description "Higher = faster, less accurate". I think here it's a threshold for ignoring children nodes' internal structure in an octree.

As a matter of good software engineering (and numerical analysis, and mathematics, too), your software shouldn't have magical parameters with mysterious consequences for the correctness of your software. (I know correctness is maybe not the point here, but still...) Also, note that there is no way for a user to check how accurate the simulation is for a given "Theta" parameter. The name is completely non-descriptive as well.

There are mathematically sound ways to determine the accuracy of the simulation. If they are expensive, tell that to the user explicitly, but default to the correct implementation, not the fast one.

Note that while the user has no clue what "Theta" is, the user might instead be able intuitively specify that they want the simulation to be accurate "to X digits for the first Y seconds of the simulation". I think that would be a better software design. As it is, "Theta" is an exposed quirk of the implementation.

Re: HTML5 Gravity/Galaxy Simulator

#8

I can't help but notice there is a magical "Theta" parameter, with the description "Higher = faster, less accurate". I think here it's a threshold for ignoring children nodes' internal structure in an octree. As a matter of good software engineering (and numerical analysis, and mathematics, too), your software shouldn't have magical parameters with mysterious consequences for the correctness of your software. (I know…

It was really meant just as a toy and not a scientifically rigorous simulation. Any value of theta is going to make not 100% accurate (not to mention the simulation speed which also affects accuracy).

Re: HTML5 Gravity/Galaxy Simulator

#9

I can't help but notice there is a magical "Theta" parameter, with the description "Higher = faster, less accurate". I think here it's a threshold for ignoring children nodes' internal structure in an octree. As a matter of good software engineering (and numerical analysis, and mathematics, too), your software shouldn't have magical parameters with mysterious consequences for the correctness of your software. (I know…

> As a matter of good software engineering (and numerical analysis, and mathematics, too), your software shouldn't have magical parameters with mysterious consequences for the correctness of your software.

To some extent, yes, but consider that we're speaking of a numerical differential equation solver. If we make the time steps too large, the program runs fast but the simulation is less realistic. If we go too far and make the time steps very small, we'll start seeing rounding errors in the floating-point processing.

The reason this class of simulation is numeric is because all but the the most trivial orbital simulations must be performed numerically. The reason for that, in turn, is because of the Three-Body Problem:

http://en.wikipedia.org/wiki/Three-body_problem

By the way, while we're on the topic, here's my HTML5/JavaScript orbital simulator plus math tutorial:

http://arachnoid.com/orbital_dynamics

Re: HTML5 Gravity/Galaxy Simulator

#10
post #9

I can't help but notice there is a magical "Theta" parameter, with the description "Higher = faster, less accurate". I think here it's a threshold for ignoring children nodes' internal structure in an octree. As a matter of good software engineering (and numerical analysis, and mathematics, too), your software shouldn't have magical parameters with mysterious consequences for the correctness of your software. (I know…

> As a matter of good software engineering (and numerical analysis, and mathematics, too), your software shouldn't have magical parameters with mysterious consequences for the correctness of your software. To some extent, yes, but consider that we're speaking of a numerical differential equation solver. If we make the time steps too large, the program runs fast but the simulation is less realistic. If we go too far a…

> To some extent, yes, but consider that we're speaking of a numerical differential equation solver. If we make the time steps too large, the program runs fast but the simulation is less realistic. If we go too far and make the time steps very small, we'll start seeing rounding errors in the floating-point processing.

But this just means that the problem needs to be solved carefully; what you've done is state the problem. Look at any textbook on numerical analysis, such as Numerical Recipes, or even something more basic. It will explain how to implement adaptive time-stepping for numerical solution of ODEs.

Here the parameter is not for time-stepping, it's for ignoring nodes in an octree, but you can still mathematically pick a parameter that generates something like a desired level of accuracy, instead of having to specify the parameter itself.

> The reason this class of simulation is numeric is because all but the the most trivial orbital simulations must be performed numerically. The reason for that, in turn, is because of the Three-Body Problem:

You make all of this sound like it's a difficult problem. For a basic ODE solver, adaptive time-stepping is one of the most standard techniques. Most introductory numerical analysis courses in universities cover this, so usually the reason people implement it this way is that they simply haven't heard about it, and don't know that they can look it up in a textbook.

Post reply on HN