Point matching Re: Question about edges
2013-03-23, 22:17 (This post was last modified: 2013-03-28, 4:35 by Ben Supnik.)
2013-03-23, 22:17 (This post was last modified: 2013-03-28, 4:35 by Ben Supnik.)
I'm going to split this off as a new thread since the old one is unwieldy...
When we develop a list of points (via check and snap), there will be (hopefully only a few) remaining points that have not been snapped to each other and remain with only _one_ tri or quad accessing them. We can exploit this as these points must be:
There is absolutely no other reason for a point not the be shared amongst at least two tris/quads. We can store the number of facet prims accessing the point via a simple count on the list of points.
So here's the deal:
If, at the end of this code, there are points that are still not shared then the part can probably be flagged as bad.
Tim
When we develop a list of points (via check and snap), there will be (hopefully only a few) remaining points that have not been snapped to each other and remain with only _one_ tri or quad accessing them. We can exploit this as these points must be:
- Part of a t-junction
- A point that has not been snapped properly
- An edge point (but this should be illegal in an LDraw part)
There is absolutely no other reason for a point not the be shared amongst at least two tris/quads. We can store the number of facet prims accessing the point via a simple count on the list of points.
So here's the deal:
Code:
SnapPoints
foreach Point not in TwoTris/Quads
# Check if the point is part of a t-junciton
If CheckForTJunction then SplitTJunction
# Check for nearby points with a larger (eg. 0.05) tolerance
DoNearbyCheck(TOLBIG)
SnapToPoints
endfor
If, at the end of this code, there are points that are still not shared then the part can probably be flagged as bad.
Tim