1. implemented customized animation
2. two API changes:
     call self.obj.show() to show out the object
     call self.obj.patches() to return the list of patches to be updated in
     each frame (called in step())
3. the runway: slightly flatter loop
1. Bug fix: gen_radius may not be zero at rest if initial velocity is not parallel
            to the runway
2. Dark background, bright balls
3. remove axis labels
small visual enhancement
remove __pycache__
split out a library
add the TODO list
A more make sense name for the script