[World] Solid Progress
Daniel Phillips
phillips at phunq.net
Sun Jul 8 18:02:42 PDT 2012
Here is the result of a partial implementation of the ideas I described
yesterday. This is a unit cube with another unit cube offset by half a unit in
each axis subtracted from it, leaving a hole. Unfortunately, I can't fill that
hole yet because there is a "tangle" bug that prevents the other cube from
being cleanly into two parts, one of which would be the part needed to fill the
hole.
The nice simple looking cutting arc in white is actually not so simple. It has
14 hops, only six of which have non-zero length, caused by degenerate edge
alignments that occur at each of the interior vertices of the intersection
arc. I can't just throw away the zero length arc hops because they contain
topological information needed to do the mesh cuts accurately. So I need to go
back into my anti-tangle logic and teach it how to deal with a crazy cocktail
of zero length edges.
There remains more to do on the arc trace failure recovery logic, to get rid
of one magic hack I put in it to force this test case to succeed. It is a
question of determining which of several near misses are topologically valid
choices for the next arc hop. If I just pick any near miss without determining
its topological validity, I can easy get into a loop. At the moment I am
hunting around for some purely logical test based on the results of geometric
tests already used to find previous arc hops. The more I rely on pure logic and
the less on geometric tests, the fewer chances I allow for something to go
wrong.
Degenerate edges also cause problems when re-triangulating the non-triangular
output faces. Though I plan to make the triangulation algorithm itself more
robust at some point, what I really need to do here is add a "reconditioning"
step to remove edges of nearly zero length. So that is yet another biggish
subproject that has to be done on the way to making something usable out of
this. Sigh. I knew this would be hard, and it is.
Regards,
Daniel
-------------- next part --------------
A non-text attachment was scrubbed...
Name: solid27.png
Type: image/png
Size: 28927 bytes
Desc: not available
URL: <http://phunq.net/pipermail/world/attachments/20120708/6ace765b/attachment-0001.png>
More information about the World
mailing list