[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