1. Yaron Minsky
  2. planets


planets / TODO

* Physics

 - implement better approximation --- 4th order runge kutta would be a nice
   start, but there's a lot of stuff to do under this rubric, such as
   varying the step size depending on the conditions.

 - add in solar system snapshot.

 - Better bouncing:
    + repulsion field that drops off more quickly (nearly to zero outside of
      radius bound?) so as not to affect normal physics.

 - Redo COM-follow mode so it computes an offset for the COM, and then uses
   those to reposition before display.  By keeping a record of the COM
   offsets, tracing could be made to do something reasonable in COM-follow

 - Make 3D?  Could be done with a 2D-display and a simple
   projection.... Use 2d-mouse movement for changing angle, maybe a scrollbar
   for depth.  Could be done...

 - Make 3D for real:  using LablGL.  This will hurt portability and
   performance, however

* Display

  - Consider breaking up traces into lots of little line segments.  Whether
    this is an improvement depends on the internals of Tcl/Tk, but it does
    avoid the need for a linear scan (both in OCaml and in Tcl/Tk) every time
    a planet moves.

  - Consider using built-in Tcl/Tk scaling when zooming in and out.  It's not
    clear, though, if that would really help performance.

  - Port to LablGtk?  Canvas performance should be higher, there is
    anti-aliasing, and gtk can be linked in to make a small windows

    This would be a lot of work, unfortunately.  Also, what about
    portability?  Should wait until LablGtk�is more clearly the standard for
    OCaml, or at least until it's better supported.

  - Allow for display of planet names next to planets

* UI

 - improved GUI controls for optionbox
    + exponential control
    + Little up-and-down arrows on the entry controls would be nice.

* Config Files

 - Allow files to refrain from setting some variables, like G and G-exp.
   This should be controllable from the UI.  Perhaps add a keyword to
   indicate that the current values should not be overwritten.

 - Modify lexer to enable forward and backward compatibility. i.e.,
   non-understood entries are simply dropped.