<< A simple VN engine Back to index... Tetrahedron testing >>

Minor Gripe

2019-08-04 -- ERP Update: Change of course, problems, new adventures

Chris Ertel

Current State of the Elixir Rigid Physics Library

Changing course

So, I kinda need a break on this. It’s been about ten weeks of banging on it, and the last few haven’t been nearly productive enough—my experience is telling me I need to either switch sub-tasks, or pull the ripcord entirely and switch to something else while I wrap up here at RC.

I have enough progress on the collision detection (more on this later) to go ahead and start working on collision restitution, but I need to read up a bit more on whether or not that’s going to be another rabbit-hole. If it is, I think I’m just going to go back to my personal search engine project. Hell, even writing that fill me with such a feeling of relief that I might just go ahead and do it.

The one thing that I am quite sure of is that if I keep grinding along on this hull-hull intersection code I will be upset with myself later for burning my last week on it.

Remarks on hull-hull code

Okay, so, as hinted at by previous write-ups, I’ve been stuck on the GJK algorithm. Things that have gone wrong in the course of working on this:

I’ll probably post up the test data for the nearest-point-on-tetrahedron code, in case anybody else decides to pursue that in their own work.

Other useful road-mapping spoilers, that ultimate forced my hand on this:

GJK proper is about finding the distance from a point to a convex hull. This is extended to “normal” GJK by having that convex hull be the Minkowski difference of your two hulls—and a neat little point is that the distance between the hulls is the distance of the origin to that difference.

However, even with that information, if the origin is inside the difference, you need to resort to some other algorithm (SAT, EPA) to figure out how deep the penetration is. This is annoying.

Further complicating things is that you have both the cases of deep and shallow penetration: is the center of the hull contained inside the other hull, or is the overlap just in the surface? Even further, at least with polyhedra, there’s also the question of edge vs face collision.

It’s just a whole lot more work for me to do without screwing it up and I don’t have the time right now to finish it to the level of quality I’d like. :(


<< A simple VN engine Back to index... Tetrahedron testing >>