Task 1: Orbit Propagators + Visualization Tools
For this task, you should set up a new GitHub repository and write a set of orbit propagation scripts and visualization tools in Python.
Minimum Requirements
- The propagator should be able to take in a cartesian input state, and propagate for one orbit assuming two-body dynamics.
- The visualization tools should accept the propagated solution and output:
- 2D plots for each state \((x, y, z, v_x, v_y, v_z)\)
- A 3D plot of the orbit with the planet in the center
Stretch Goals
- Write your code in a way that you can trivially swap out the dynamics. I.e. if you want to add perturbations like SRP or 3BP effects, you can just change one or two lines and be good to go.
- Write a converter from the cartesian state vector to orbital elements. Confirm that under 2BP dynamics these elements remain constant over the entire trajectory.
Recommendations
- Use this as an opportunity to practice good version control etiquette. Make a branch, think about what you want each commit to entail, and merge it back into the main branch.
- Once you're confident in your solution, try running an interactive rebase to make your commit narrative even better, now that you can see the final product in front of you. Would the narrative of your commits + their messages be easy to follow as an external reviewer?
- Take the time to set up your IDE properly --- i.e. configure linters + formatters to run "On Save".
- Take the time to learn + practice some IDE keyboard shortcuts. My personal favorites: Cmd+D, Cmd+L, Opt+Left, Opt+Right, Opt+Up, Opt+Down, among others.