Well, it was too optimistic to think that V-Clip is working properly. Number of bugs, errors and just stupid mistakes was sufficient to keep me busy till now. (Although they were not only related to my V-Clip implementation, but to simulation algorithm too, and also I found — and fixed in my implementation — an error in V-Clip paper itself — I’ll probably write about this later.) But I have good news :)
{- Here a demo video supposed to be, but unfortunately I can’t get it of acceptable quality, so you’re encouraged to build and run vis.hs. -}
As you can see, V-Clip isn’t only consuming CPU time, but really detects collisions. Although this demo might seem physically realistic, it isn’t — only linear, but not angular velocities are updated during collisions. This is what I’m going to do this week.
Aside from fixing bugs, I also improved simulation code — now it guarantees that during collision opposite impulses are applied to bodies, and also makes twice as little collision checks.