Revision: 74187
          http://sourceforge.net/p/brlcad/code/74187
Author:   starseeker
Date:     2019-10-19 18:58:03 +0000 (Sat, 19 Oct 2019)
Log Message:
-----------
Track the closest uedge at the omesh level as well.

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-19 18:46:30 UTC (rev 
74186)
+++ brlcad/trunk/src/libbrep/cdt_ovlps.cpp      2019-10-19 18:58:03 UTC (rev 
74187)
@@ -211,6 +211,7 @@
        {
            omesh = om;
            p_id = p;
+           closest_uedge = -1;
            assigned = false;
            update();
        }
@@ -222,7 +223,7 @@
        double max_len();
        ON_BoundingBox bb;
 
-       size_t closest_uedge;
+       long closest_uedge;
        bool assigned;
        void update();
     private:
@@ -288,8 +289,6 @@
        void edge_add(cdt_mesh::uedge_t &ue, int update_verts);
        void edge_remove(cdt_mesh::uedge_t &ue, int update_verts);
 
-       void tri_add(cdt_mesh::triangle_t &t, int update_verts);
-       void tri_remove(cdt_mesh::triangle_t &t, int update_verts);
        void edge_tris_remove(cdt_mesh::uedge_t &ue);
 };
 
@@ -339,6 +338,9 @@
     bb.Set(npnt, true);
 
     double mindist = DBL_MAX;
+    if (closest_uedge >= 0) {
+       omesh->iue_close_overts[closest_uedge].erase(p_id);
+    }
     closest_uedge = -1;
     std::set<size_t> close_edges = omesh->interior_uedges_search(bb);
     std::set<size_t>::iterator c_it;
@@ -353,6 +355,7 @@
            mindist = dline;
        }
     }
+    omesh->iue_close_overts[closest_uedge].insert(p_id);
 }
 
 void
@@ -641,6 +644,11 @@
     if (update_verts) {
        overts[ue.v[0]].update();
        overts[ue.v[1]].update();
+       std::set<size_t> nearby_verts = overts_search(ebb);
+       std::set<size_t>::iterator n_it;
+       for (n_it = nearby_verts.begin(); n_it != nearby_verts.end(); n_it++) {
+           overts[*n_it].update();
+       }
     }
 }
 
@@ -682,13 +690,15 @@
     if (update_verts) {
        overts[ue.v[0]].update();
        overts[ue.v[1]].update();
+       std::set<size_t> close_verts = iue_close_overts[ue_id];
+       std::set<size_t>::iterator c_it;
+       for (c_it = close_verts.begin(); c_it != close_verts.end(); c_it++) {
+           overts[*c_it].update();
+       }
     }
 }
 
 
-
-
-
 #define TREE_LEAF_FACE_3D(pf, valp, a, b, c, d)  \
     pdv_3move(pf, pt[a]); \
     pdv_3cont(pf, pt[b]); \

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