Revision: 74226
          http://sourceforge.net/p/brlcad/code/74226
Author:   starseeker
Date:     2019-10-23 18:54:21 +0000 (Wed, 23 Oct 2019)
Log Message:
-----------
If we're fully edge centric, probably not going to need to categorize points in 
this fashion.

Modified Paths:
--------------
    brlcad/trunk/src/libbrep/cdt_ovlps.cpp

Modified: brlcad/trunk/src/libbrep/cdt_ovlps.cpp
===================================================================
--- brlcad/trunk/src/libbrep/cdt_ovlps.cpp      2019-10-23 18:51:33 UTC (rev 
74225)
+++ brlcad/trunk/src/libbrep/cdt_ovlps.cpp      2019-10-23 18:54:21 UTC (rev 
74226)
@@ -28,173 +28,6 @@
  *
  */
 
-
-/* TODO list:
- *
- * 1.  As a first step, build an rtree in 3D of the mesh vertex points, basing 
their bbox size on the dimensions
- * of the smallest of the triangles connected to them.  Look for any points 
from other meshes whose boxes overlap.
- * These points are "close" and rather than producing the set of small 
triangles trying to resolve them while
- * leaving the original vertices in place would entail, instead take the 
average of those points and for each
- * vertex replace its point xyz values with the closest point on the 
associated surface for that avg point.  What
- * that should do is locally adjust each mesh to not overlap near vertices.  
Then we calculate the triangle rtree
- * and proceed with overlap testing.
- *
- * Note that vertices on face edges will probably require different handling...
- *
- * 2.  Given closest point calculations for intersections, associate them with 
either edges or faces (if not near
- * an edge.)
- *
- * 3.  Identify triangles fully contained inside another mesh, based on 
walking the intersecting triangles by vertex
- * nearest neighbors for all the vertices that are categorized as intruding.  
Any triangle that is connected to such
- * a vertex but doesn't itself intersect the mesh is entirely interior, and 
we'll need to find closest points for
- * its vertices as well.
- *
- * 4.  If the points from #3 involve triangle meshes for splitting that 
weren't directly interfering, update the
- * necessary data sets so we know which triangles to split (probably a 2D 
triangle/point search of some sort, since
- * unlike the tri/tri intersection tests we can't immediately localize such 
points on the intruding triangle mesh
- * if they're coming from a NURBS surface based gcp...)
- *
- * 5.  Do a categorization passes as outlined below so we know what 
specifically we need to do with each edge/triangle.
- *
- * 6.  Set up the replacement CDT problems and update the mesh.  Identify 
termination criteria and check for them.
- */
-
-// The challenge with splitting triangles is to not introduce badly distorted 
triangles into the mesh,
-// while making sure we perform splits that work towards refining overlap 
areas.  In the diagrams
-// below, "*" represents the edge of the triangle under consideration, "-" 
represents the edge of a
-// surrounding triangle, and + represents a new candidate point from an 
intersecting triangle.
-// % represents an edge on a triangle from another face.
-//
-// ______________________   ______________________   ______________________   
______________________
-// \         **         /   \         **         /   \         **         /   
\         **         /
-//  \       *  *       /     \       *  *       /     \       *  *       /     
\       *  *       /
-//   \     *    *     /       \     *    *     /       \     *    *     /      
 \     *    *     /
-//    \   *  +   *   /         \   *      *   /         \   *      *   /       
  \   *  +   *   /
-//     \ *        * /           \ *        * /           \ *    +   * /        
   \ *        * /
-//      \**********/             \*****+****/             \**********/         
    \******+***/
-//       \        /               \        /               \        /          
     \        /
-//        \      /                 \      /                 \      /           
      \      /
-//         \    /                   \    /                   \    /            
       \    /
-//          \  /                     \  /                     \  /             
        \  /
-// 1         \/             2         \/             3         \/             
4         \/
-// ______________________   ______________________   ______________________   
______________________
-// \         **         /   \         **         /   \         **         /   
\         **         /
-//  \       *  *       /     \       *  *       /     \       *  *       /     
\       *  *       /
-//   \     *    *     /       \     +    *     /       \     +    *     /      
 \     +    +     /
-//    \   *      *   /         \   *      *   /         \   *   +  *   /       
  \   *      *   /
-//     \ *     +  * /           \ *        * /           \ *        * /        
   \ *        * /
-//      \******+***/             \*****+****/             \*****+****/         
    \*****+****/
-//       \        /               \        /               \        /          
     \        /
-//        \      /                 \      /                 \      /           
      \      /
-//         \    /                   \    /                   \    /            
       \    /
-//          \  /                     \  /                     \  /             
        \  /
-// 5         \/             6         \/             7         \/             
8         \/
-// ______________________   ______________________   ______________________   
______________________
-// \         **         /   \         **         /   \         **         /   
\         **         /
-//  \       *  *       /     \       *  *       /     \       *  *       /     
\       *  *       /
-//   \     *    *     /       \     *    *     /       \     *    *     /      
 \     *    *     /
-//    \   *  +   *   /         \   *      *   /         \   *      *   /       
  \   *  +   *   /
-//     \ *        * /           \ *        * /           \ *    +   * /        
   \ *        * /
-//      \**********/             \*****+****/             \**********/         
    \******+***/
-//       %        %               %        %               %        %          
     %        %
-//        %      %                 %      %                 %      %           
      %      %
-//         %    %                   %    %                   %    %            
       %    %
-//          %  %                     %  %                     %  %             
        %  %
-// 9         %%             10        %%             11        %%             
12        %%
-// ______________________   ______________________   ______________________   
______________________
-// \         **         /   \         **         /   \         **         /   
\         **         /
-//  \       *  *       /     \       *  *       /     \       *  *       /     
\       *  *       /
-//   \     *    *     /       \     +    *     /       \     +    *     /      
 \     +    +     /
-//    \   *      *   /         \   *      *   /         \   *   +  *   /       
  \   *      *   /
-//     \ *     +  * /           \ *        * /           \ *        * /        
   \ *        * /
-//      \******+***/             \*****+****/             \*****+****/         
    \*****+****/
-//       %        %               %        %               %        %          
     %        %
-//        %      %                 %      %                 %      %           
      %      %
-//         %    %                   %    %                   %    %            
       %    %
-//          %  %                     %  %                     %  %             
        %  %
-// 13        %%             14        %%             15        %%             
16        %%
-// ______________________   ______________________   ______________________   
______________________
-// \         **         /   \         **         /   \         **         /   
\         **         /
-//  \       *  *       /     \       *  *       /     \       *  *       /     
\       *  *       /
-//   \     *    *     /       \     *    *     /       \     *    *     /      
 \     *    *     /
-//    \   *      *   /         \   *      *   /         \   *      *   /       
  \   *      *   /
-//     \ *+       * /           \ *+      +* /           \ *+       * /        
   \ *+      +* /
-//      \**********/             \**********/             \*****+****/         
    \******+***/
-//       \        /               \        /               \        /          
     \        /
-//        \      /                 \      /                 \      /           
      \      /
-//         \    /                   \    /                   \    /            
       \    /
-//          \  /                     \  /                     \  /             
        \  /
-// 17        \/             18        \/             19        \/             
20        \/
-//
-// Initial thoughts:
-//
-// 1. If all new candidate points are far from the triangle edges, (cases 1 
and 9) we can simply
-// replace the current triangle with the CDT of its interior.
-//
-// 2. Any time a new point is anywhere near an edge, we risk creating a long, 
slim triangle.  In
-// those situations, we want to remove both the active triangle and the 
triangle sharing that edge,
-// and CDT the resulting point set to make new triangles to replace both.  
(cases other than 1 and 9)
-//
-// 3. If a candidate triangle has multiple edges with candidate points near 
them, perform the
-// above operation for each edge - i.e. the replacement triangles from the 
first CDT that share the
-// original un-replaced triangle edges should be used as the basis for CDTs 
per step 2 with
-// their neighbors.  This is true both for the "current" triangle and the 
triangle pulled in for
-// the pair processing, if the latter is an overlapping triangle.  (cases 6-8)
-//
-// 4. If we can't remove the edge in that fashion (i.e. we're on the edge of 
the face) but have a
-// candidate point close to that edge, we need to split the edge (maybe near 
that point if we can
-// manage it... right now we've only got a midpoint split...), reject any new 
candidate points that
-// are too close to the new edges, and re- CDT the resulting set.  Any 
remaining overlaps will need
-// to be resolved in a subsequent pass, since the same 
"not-too-close-to-the-edge" sampling
-// constraints we deal with in the initial surface sampling will also be 
needed here. (cases 10-16)
-//
-// 5. A point close to an existing vertex will probably need to be rejected or 
consolidate into the
-// existing vertex, depending on how the triangles work out.  We don't want to 
introduce very tiny
-// triangles trying to resolve "close" points - in that situation we probably 
want to "collapse" the
-// close points into a single point with the properties we need.
-//
-// 5. We'll probably want some sort of filter to avoid splitting very tiny 
triangles interfering with
-// much larger triangles - otherwise we may end up with a lot of unnecessary 
splits of triangles
-// that would have been "cleared" anyway by the breakup of the larger 
triangle...
-//
-//
-// Each triangle looks like it breaks down into regions:
-/*
- *
- *                         /\
- *                        /44\
- *                       /3333\
- *                      / 3333 \
- *                     /   33   \
- *                    /    /\    \
- *                   /    /  \    \
- *                  /    /    \    \
- *                 /    /      \    \
- *                / 2  /        \ 2  \
- *               /    /          \    \
- *              /    /            \    \
- *             /    /       1      \    \
- *            /    /                \    \
- *           /    /                  \    \
- *          /333 /                    \ 333\
- *         /33333______________________33333\
- *        /43333            2           33334\
- *       --------------------------------------
- */
-//
-// Whether points are in any of the above defined regions after the 
get-closest-points pass will
-// determine how the triangle is handled:
-//
-// Points in region 1 and none of the others - split just this triangle.
-// Points in region 2 and not 3/4, remove associated edge and triangulate with 
pair.
-// Points in region 3 and not 4, remove (one after the other) both associated 
edges and triangulate with pairs.
-// Points in region 4 - remove candidate new point - too close to existing 
vertex.  "Too close" will probably
-// have to be based on the relative triangle dimensions, both of the 
interloper and the intruded-upon triangles...
-// If we have a large and a small triangle interacting, should probably just 
break the large one down.  If we
-// hit this situation with comparably sized triangles, probably need to look 
at a point averaging/merge of some sort.
-
-
-
 #include "common.h"
 #include <queue>
 #include <numeric>

This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.



_______________________________________________
BRL-CAD Source Commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/brlcad-commits

Reply via email to