Git Product home page Git Product logo

gravity-toy's People

Contributors

ezocher avatar

Watchers

 avatar  avatar

gravity-toy's Issues

Windows.Foundation.Point is (float, float), need (double, double) for simulation values

I was originally using the Windows.Foundation.Point class for the simulation values because I saw the the constructor signature was Point(double, double) and assumed X and Y were doubles internally. It turns out they are currently floats (see FoundationPointIssue.sln). Need to implement a (double, double) point class and change the simulation to use it.

Add Time base and speeding/slowing

  • Add fields for controlling speed of time and verify with existing scenarios
  • Hook up speed up/slow down buttons. They should effect both running and stepping.

Clean up acceleration Limits

Look holistically at distance minimums and acceleration limits and clean up and centralize.
Need to keep at least some minimum value for r to avoid divide by zero.

Investigate precision of very fine calculation intervals

Trying different values for the number of calculations per frame in the toy orbit scenario is producing unexpected results. For example, 2000 calcs/frame produces a nearly stable orbit, 5000 produces a slowly shifting orbit, and 10000 produces some unexpected "flat spots" in the orbit.

Create data dumping branch for numerical investigations

  • Create numerical-investigations branch
  • Dump data to tab-delimited text files
  • Create a tiny console app to investigate specific calculations
  • Formatting fixes: separate X & Y of Points with tabs, print max digits of doubles (use {0:R} formatting for all doubles).
  • Use this to investigate issue #2 and issue #10

Investigate why orbits are behaving unexpectedly

Tried a toy orbital simulation and was unable to get a body moving in a circular or near-circular orbit.

  • Noticed that orbits are not as expected, having more than one perigee/apogee per orbit.
  • Noticed that in the first computed step of a scenario an error is introduced when the initial velocity vector doesn't take into account that the end of the first step is not on the tangent to the starting position of the first step.
  • Noticed that orbiting bodies are gradually accelerating to higher minimum and maximum velocities each orbit.

Definitely need to change to have much finer granularity calculation steps (multiple calculation steps per render step).

Investigate numeric overflow in MEO and geosynchronous orbits

Low earth orbits are working in the scenario using SimSpace.LEOSpace, but medium earth orbits (GPS) and geosynchronous orbits are behaving strangely. The first geosynchronous orbit I tried in this scale traced out a polygon rather than an ellipse. Looks like numeric overflow somewhere.

Investigate non-deterministic numerical instability in 9 bodies scenario

In the 9 bodies scenario the central body should never move. Because of cumulative numerical errors (confirm) it eventually does.

Even when there are errors, the simulation runs should give identical results since the exact same calculations are run in the exact same order with no randomness introduced. I ran three runs of the 9 bodies scenario and got three totally different paths for the central body which diverged from 0, 0 at different iterations. WTF?

Screenshots are here: https://github.com/ezocher/Gravity-Sandbox/blob/master/Images/
NineBodies-NumericalInstability1.PNG (and 2 and 3)

Bug: Runaway explosion of number of UI threads

Fixed prior to opening issues. Moved here from README.md.

Bug: Had runaway explosion of number of UI threads when simulation didn't complete in per frame time and XAML was falling further and further behind. (Was formerly: Figure out the animation/memory problem that started ~2016).

Fix was to drop frames when calculations hadn't completed in time. Will also implement issue #6 for large scenarios on multi-core machines.

Create colliding mini galaxies scenario

First create a scenario based on the issue #19 work and then get the mini-galaxy properly moving while it rotates. Next, create two of those and set them on a collision course.

Analyze the numerical basis for issue #37 and issue #44

Do a pencil and graph paper and spreadsheet analysis of one minute of the actual ISS orbit versus a single linear step of the current algorithm to understand the nature of the error in the approximation.

  • One thing that intuitively seems problematic is that the velocity of an orbiting body at the end of each step won't be in the same direction as the tangent to the curve at that point.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.