Gregory D Abram: > What is the difference between the polygons you want and the FLEs? Aren't > FLEs the superset?
>From browsing _newtri.c briefly, I thought the answer was no. If FLEs should handle any polygon set, are you saying that (in theory) DX should handle the following with FLE fields: 1) self-intersecting loops (e.g. figure 8) 2) self-overlapping loops (i.e. edges coincident with other edges) 4) different loops intersecting or overlapping each other 5) arbitrary planar loop sets in 3D which have no bearing on 2D topology If so, then I completely agree. I would add that polygons in DX should "just work", without any special user actions. > They are handled as you describe - tesselated in the > renderer into triangles - even the OpenGL renderer. In fact, its this > tesselation that produces the topology error you mention - tessellating > arbitrary loops in floating-point space is *hard*. If there are cases that > result in the topology error message, maybe we should just fix it (in > _newtri.c). BTW, there is an environment variable to set (DX_NESTED_LOOPS) > that supports greater flexibility in the supported topology at the cost of > a less efficient algorithm. The $DX_NESTED_LOOPS trick seems to render some of the polygons I've been working with that were causing problems. So that polygons will "just work", would you have any objections to the addition of a field attribute that performs the function of "export DX_NESTED_LOOPS=1". Say, attribute "polygons" value 1 or something along those lines? I'll volunteer to implement and commit this. Randy P.S. While we're on the subject, attached are a few polys that fill incorrectly w/ or w/o the DX_NESTED_LOOPS trick. Also, I notice that the tessellator gets stuck in an infinite loop when fed arbitrary polygons with DX_NESTED_LOOPS set. If we go with FLEs for general polygons, I can isolate which polys are causing the problem. __________________________________________________ Do You Yahoo!? Make a great connection at Yahoo! Personals. http://personals.yahoo.com
bad_poly1.dx
Description: bad_poly1.dx
bad_poly2.dx
Description: bad_poly2.dx