I hope you weren't waiting for me.
Nope; I've been working on fleshing out all the code to look approximately like I want. I have dozens of tests that are failing right now, so I haven't exhausted my to do list just yet. But I hope to get things working in the next few days, and then I'll need some new tests to push the code with.
I'll do my best to create a patch today. Although don't expect there to be a lot of tests in there. If you then could take a look and confirm they work properly. (and with that likely take more of your time then if you would've written then yourselves )
Yeah, I'll definitely look it over. To be honest it's not even an issue of the time it takes. It's just exhausting thinking through the setups. Especially the more complex ones involving both bodies rotating and moving.
In SafeStepForward and SafeStepBackward, what is currRoot and nextRoot?
I'm probably going to remove both of those functions, so I wouldn't worry about writing tests for it. They aren't necessary for the new collision algorithm.
But to answer your question, the idea is that there's an intersection at some given time (the currRoot), and we want to step forward some amount of time until the derivative is non 0, and we haven't passed the next intersection (nextRoot).