That will need to be heavily modified in order to be adaptive. To save memory, we only return a datapoint every `sampling_period` steps (for trajectory plotting), as well as the result from the last step. If `sampling_period == 0`, we only return the result from the last step (that's for when we just want to advance the system, not to plot its evolution).

The images in the OP of the forum thread show the problem with the current approach: with reasonable `sampling_period`s, the plotted trajectory sometimes becomes polygonal at high velocities, while points are wasted at low velocities. At some point I think this should be handled with a function that evaluates the velocity in the plot frame to decide when to sample. Let's keep this for the time being.

Plotting some sort of spline, rather than a polygon, would help, but isn't enough.