-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathDEV_NOTES.txt
102 lines (83 loc) · 4.29 KB
/
DEV_NOTES.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
-------------- Bugs
-------------- To Do
- Milestones
-------------- Backlog
- Refactor the 'widgets' folder as a separate extension to sdl-widgets (or develop a fully separate toolkit with it, i.e. SDL_toolkit)
- There should be a makefile (nmake) for win32 build
- Glitches when in large scale: upper-left grabbing (caused by overflow when dimensions are higher than Sint16 maximum and minimum values).
- Glitch when reopening a on-top bgr that was moved before being closed. (on-top Bgr's seems to only copy the portion of the bottom layer that they oclude when they were closed)
- Simulation fails when changing timestep on Backwards Difference Correction solver (this method does not support non-const timesteps; a correction formula needs to be obtained)
- Bezier spline is glitched (due to wrong parametrization).
-------------- Milestones
- 0.8 (japla-supersedure milestone)
Implement view movement speed - done
Implement capability to change observer's reference frame to the same as the mass center of some arbitrary set of bodies - done
When holding R (add random body), after 1 second, starts spamming bodies until user releases the R key. - done
- 0.9 (physics milestone)
Implement Rk2 and Rk4 integration methods - done
Show info about system's energy (kinetic, potential, total, etc) - done
Add random orbiting planet functionality - done
Bouncing bodies - done
G exp. - done
Hightlight bodies inside the roche limit - done
Introduce variations to the parameters of newly created bodies - done
- 1.0 (planets-supersedure/usability milestone)
Draw a arrow on the cursor's tip when selecting new body velocity - done
Undo functionality - done
Show paused/resumed state more explicitly - done
Implement button with icon and offer icons-only buttons - done
Theming functionality (mainly to match many OSes' ones) - done
Command line arguments - done
Hide left bar, hide all mode - done
Implement add unidirectional orbiting body - done
Basic "help" dialog - done
- 1.x
Make a spinner to specify new body creation parameters' deviation.
Add spinner to specify minimum rendered radius
Make it possible to optionally disable orbit tracing inner computation, as the current checkbox only hides it (to improve performance)
Highlight red the log P/E energy info when not using G.Exp=2 (as logP computation is incorrect for G.Exp != 2)
Rotate functionality
Redo functionality
Capability to change background color
Add pan and zoom buttons
Save preferences (window positions, paths, etc)
Edit bodies id's
Show bodies id's on planetarium
Show per body info (velocity, acceleration, mass, etc) - a body panel below bodies list
Dynamically change bodies attributes
Implement load/save on other formats (csv, xml, json)
Implement Rabiei's improved multi-step RK3.
Implement Embedded/Adaptive RK (make a GUI for specifying max. error with adaptive timestep)
Attempt to implement Numerov's method-based solver.
Attempt to implement Gauss-Legendre's implicit RK with other RK as predictor.
Implement optional Barnes-Hut tree to optimize calculations
Try to load the universe setting a fitting zoom for its size.
Add optional single-threaded mode
Tooltip for icon buttons
Implement load/save on other formats (ods, prop, yaml)
Improve bodies list (use headed table instead of list, sort by)
Implement load/save on the Java Serialized Object File (.ser) ('japla's old format)
Implement additional integration methods (Midpoint, Verlet, etc)
Bodies presets
Merge universes from different files (superposition, concatenation, etc)
Advanced presets (solar systems, planet and moons, galaxy, cluster, etc)
Keep track of opened file state (modified, etc)
Optimize drawing by only redrawing the rectangular areas around bodies. (SDL_UpdateRect/SDL_UpdateRects)
Types of bodies (planet, star, etc)
Chemical evolution of bodies (aging)
Adaptive stepsize
3D mode
...
-------------- Misc. references
RK methods
https://github.com/scijs/ode-rk4
http://mymathlib.com/diffeq/runge-kutta/runge_kutta.html
http://www.scottsarra.org/nHam/nHam.html
Gauss-Legendre
https://en.wikipedia.org/wiki/Gauss%E2%80%93Legendre_method
Numerov's method
https://en.wikipedia.org/wiki/Numerov%27s_method
http://www.mymathlib.com/diffeq/second_order/numerov.html
ODE for N-body
http://tutorial.math.lamar.edu/Classes/DE/SystemsDE.aspx
http://www.kof.zcu.cz/st/dis/schwarzmeier/gravitational_simulation.html