Revision: 74245
          http://sourceforge.net/p/brlcad/code/74245
Author:   starseeker
Date:     2019-10-25 19:24:00 +0000 (Fri, 25 Oct 2019)
Log Message:
-----------
Rather than tracking the edges separately, just use the triangles and construct 
the edge info on the fly.

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

Modified: brlcad/trunk/src/libbrep/cdt_mesh.cpp
===================================================================
--- brlcad/trunk/src/libbrep/cdt_mesh.cpp       2019-10-25 18:17:30 UTC (rev 
74244)
+++ brlcad/trunk/src/libbrep/cdt_mesh.cpp       2019-10-25 19:24:00 UTC (rev 
74245)
@@ -1780,7 +1780,30 @@
     return uedges;
 }
 
+ON_BoundingBox
+cdt_mesh_t::bbox()
+{
+    RTree<size_t, double, 3>::Iterator tree_it;
+    tris_tree.GetFirst(tree_it);
 
+    if (tree_it.IsNull()) return ON_BoundingBox();
+
+    ON_3dPoint *p3d = pnts[tris_vect[*tree_it].v[0]];
+    ON_BoundingBox bb(*p3d, *p3d);
+
+    while (!tree_it.IsNull()) {
+       p3d = pnts[tris_vect[*tree_it].v[0]];
+       bb.Set(*p3d, true);
+       p3d = pnts[tris_vect[*tree_it].v[1]];
+       bb.Set(*p3d, true);
+       p3d = pnts[tris_vect[*tree_it].v[2]];
+       bb.Set(*p3d, true);
+       ++tree_it;
+    }
+
+    return bb;
+}
+
 uedge_t
 cdt_mesh_t::closest_uedge(const triangle_t &t, ON_3dPoint &p)
 {
@@ -1789,19 +1812,31 @@
     std::set<uedge_t>::iterator u_it;
     double mdist = DBL_MAX;
 
-    point_t tp, v0, v1, v2;
-    VSET(tp, p.x, p.y, p.z);
-    VSET(v0, pnts[t.v[0]]->x, pnts[t.v[0]]->y, pnts[t.v[0]]->z);
-    VSET(v1, pnts[t.v[1]]->x, pnts[t.v[1]]->y, pnts[t.v[1]]->z);
-    VSET(v2, pnts[t.v[2]]->x, pnts[t.v[2]]->y, pnts[t.v[2]]->z);
-    double tdist = bg_tri_closest_pt(NULL, tp, v0, v1, v2);
+    for (u_it = ue_s.begin(); u_it != ue_s.end(); u_it++) {
+       uedge_t ue = *u_it;
+       double dedge = uedge_dist(ue, p);
+       if (dedge < mdist) {
+           mdist = dedge;
+           result = ue;
+       }
+    }
+    return result;
+}
 
+uedge_t
+cdt_mesh_t::closest_interior_uedge(const triangle_t &t, ON_3dPoint &p)
+{
+    uedge_t result;
+    std::set<uedge_t> ue_s = uedges(t);
+    std::set<uedge_t>::iterator u_it;
+    double mdist = DBL_MAX;
+
     for (u_it = ue_s.begin(); u_it != ue_s.end(); u_it++) {
        uedge_t ue = *u_it;
-       ON_Line l(*pnts[ue.v[0]], *pnts[ue.v[1]]);
-       double dline = p.DistanceTo(l.ClosestPointTo(p));
-       if (dline < mdist && (dline > tdist || NEAR_EQUAL(dline, tdist, 
ON_ZERO_TOLERANCE))) {
-           mdist = dline;
+       if (brep_edges.find(ue) != brep_edges.end()) continue;
+       double dedge = uedge_dist(ue, p);
+       if (dedge < mdist) {
+           mdist = dedge;
            result = ue;
        }
     }

Modified: brlcad/trunk/src/libbrep/cdt_mesh.h
===================================================================
--- brlcad/trunk/src/libbrep/cdt_mesh.h 2019-10-25 18:17:30 UTC (rev 74244)
+++ brlcad/trunk/src/libbrep/cdt_mesh.h 2019-10-25 19:24:00 UTC (rev 74245)
@@ -513,13 +513,20 @@
     ON_Plane tplane(const triangle_t &t);
     std::set<uedge_t> uedges(const triangle_t &t);
 
+    ON_BoundingBox bbox();
+
     // Find the edge of the triangle that is closest to the
     // specified point
     uedge_t closest_uedge(const triangle_t &t, ON_3dPoint &p);
 
+    // Find the edge of the triangle that is closest to the
+    // specified point and not a brep face edge
+    uedge_t closest_interior_uedge(const triangle_t &t, ON_3dPoint &p);
+
     // Find the distance to the closest point on a uedge
     double uedge_dist(uedge_t &ue, ON_3dPoint &p);
 
+
     // Plot3 generation routines for debugging
     void boundary_edges_plot(const char *filename);
     void face_neighbors_plot(const triangle_t &f, const char *filename);

Modified: brlcad/trunk/src/libbrep/cdt_ovlps.cpp
===================================================================
--- brlcad/trunk/src/libbrep/cdt_ovlps.cpp      2019-10-25 18:17:30 UTC (rev 
74244)
+++ brlcad/trunk/src/libbrep/cdt_ovlps.cpp      2019-10-25 19:24:00 UTC (rev 
74245)
@@ -120,7 +120,6 @@
        omesh_t(cdt_mesh::cdt_mesh_t *m)
        {
            fmesh = m;
-           init_edges(); // Need this first - init_verts uses this information
            init_verts();
        };
 
@@ -130,14 +129,6 @@
        RTree<long, double, 3> vtree;
        void plot_vtree(const char *fname);
 
-       // Interior edges we add and remove. Because we don't want to store the 
whole
-       // uedge_t class in the rtree, store them in two maps to support both
-       // adding/removing them and looking them up from either triangles or
-       // the tree.
-       std::map<cdt_mesh::uedge_t, long> interior_uedge_ids;
-       std::map<long, cdt_mesh::uedge_t> interior_uedges;
-       RTree<long, double, 3> iedge_tree;
-
        void vert_adjust(long p_id, ON_3dPoint *p, ON_3dVector *v);
 
        // Add an fmesh vertex to the overts array and tree.
@@ -147,7 +138,7 @@
        std::set<long> overts_search(ON_BoundingBox &bb);
 
        // Find close (non-face-boundary) edges
-       std::set<size_t> interior_uedges_search(ON_BoundingBox &bb);
+       std::set<cdt_mesh::uedge_t> interior_uedges_search(ON_BoundingBox &bb);
 
        // Find close triangles
        std::set<size_t> tris_search(ON_BoundingBox &bb);
@@ -172,12 +163,8 @@
 
        void verts_one_ring_update(long p_id);
 
-       void edge_add(cdt_mesh::uedge_t &ue, int update_verts);
-       void edge_remove(cdt_mesh::uedge_t &ue, int update_verts);
-
     private:
        void init_verts();
-       void init_edges();
 
        void edge_tris_remove(cdt_mesh::uedge_t &ue);
 
@@ -238,29 +225,6 @@
     npnt = vpnt;
     npnt.z = npnt.z - lfactor*elen;
     bb.Set(npnt, true);
-
-#if 0
-    double mindist = DBL_MAX;
-    if (closest_uedge >= 0) {
-       omesh->iedge_close_overts[closest_uedge].erase(p_id);
-    }
-    closest_uedge = -1;
-    std::set<size_t>::iterator c_it;
-    for (c_it = close_edges.begin(); c_it != close_edges.end(); c_it++) {
-       cdt_mesh::uedge_t ue = omesh->interior_uedges[*c_it];
-       ON_3dPoint *p3d1 = omesh->fmesh->pnts[ue.v[0]];
-       ON_3dPoint *p3d2 = omesh->fmesh->pnts[ue.v[1]];
-       ON_Line line(*p3d1, *p3d2);
-       double dline = vpnt.DistanceTo(line.ClosestPointTo(vpnt));
-       if (mindist > dline) {
-           closest_uedge = *c_it;
-           mindist = dline;
-       }
-    }
-    if (closest_uedge >= 0) {
-       omesh->iedge_close_overts[closest_uedge].insert(p_id);
-    }
-#endif
 }
 
 void
@@ -274,39 +238,6 @@
 }
 
 void
-omesh_t::init_edges()
-{
-    // Walk the fmesh's rtree holding the active triangles to get all
-    // edges
-    std::set<cdt_mesh::uedge_t> uedges;
-    RTree<size_t, double, 3>::Iterator tree_it;
-    size_t t_ind;
-    cdt_mesh::triangle_t tri;
-    fmesh->tris_tree.GetFirst(tree_it);
-    while (!tree_it.IsNull()) {
-       t_ind = *tree_it;
-       tri = fmesh->tris_vect[t_ind];
-       cdt_mesh::uedge_t ue;
-       ue = cdt_mesh::uedge_t(tri.v[0], tri.v[1]);
-       edge_add(ue, 0);
-       ue = cdt_mesh::uedge_t(tri.v[1], tri.v[2]);
-       edge_add(ue, 0);
-       ue = cdt_mesh::uedge_t(tri.v[2], tri.v[0]);
-       edge_add(ue, 0);
-       ++tree_it;
-    }
-
-    std::set<cdt_mesh::uedge_t>::iterator u_it;
-    for (u_it = uedges.begin(); u_it != uedges.end(); u_it++) {
-       if (fmesh->brep_edges.find(*u_it) == fmesh->brep_edges.end()) {
-           std::cout << "Interior edge\n";
-       } else {
-           std::cout << "Skip Boundary edge\n";
-       }
-    }
-}
-
-void
 omesh_t::init_verts()
 {
     // Walk the fmesh's rtree holding the active triangles to get all
@@ -439,76 +370,57 @@
     return near_overts;
 }
 
-static bool NearIntEdgesCallback(size_t data, void *a_context) {
-    std::set<size_t> *edges = (std::set<size_t> *)a_context;
-    edges->insert(data);
-    return true;
-}
-std::set<size_t>
+std::set<cdt_mesh::uedge_t>
 omesh_t::interior_uedges_search(ON_BoundingBox &bb)
 {
-    double fMin[3]; double fMax[3];
-    fMin[0] = bb.Min().x;
-    fMin[1] = bb.Min().y;
-    fMin[2] = bb.Min().z;
-    fMax[0] = bb.Max().x;
-    fMax[1] = bb.Max().y;
-    fMax[2] = bb.Max().z;
-    std::set<size_t> nedges;
-    size_t nhits = iedge_tree.Search(fMin, fMax, NearIntEdgesCallback, (void 
*)&nedges);
+    std::set<cdt_mesh::uedge_t> uedges;
+    uedges.clear();
 
-    if (!nhits) {
-       // TODO - if we've got nothing, try triangles - if we're close to any 
of those,
-       // iterate through them and find the closest edge
-       std::set<size_t> ntris = tris_search(bb);
-       if (!ntris.size()) {
-           std::cout << "not close to edge or triangles...\n";
-           return std::set<size_t>();
-       } else {
-           long closest_tri = -1;
-           double cdist = DBL_MAX;
-           std::set<size_t>::iterator tr_it;
-           for (tr_it = ntris.begin(); tr_it != ntris.end(); tr_it++) {
-               cdt_mesh::triangle_t t = fmesh->tris_vect[*tr_it];
-               // Figure out how far away the triangle is from the point in 
question
-               point_t tp, v0, v1, v2;
-               VSET(tp, bb.Center().x, bb.Center().y, bb.Center().z);
-               VSET(v0, fmesh->pnts[t.v[0]]->x, fmesh->pnts[t.v[0]]->y, 
fmesh->pnts[t.v[0]]->z);
-               VSET(v1, fmesh->pnts[t.v[1]]->x, fmesh->pnts[t.v[1]]->y, 
fmesh->pnts[t.v[1]]->z);
-               VSET(v2, fmesh->pnts[t.v[2]]->x, fmesh->pnts[t.v[2]]->y, 
fmesh->pnts[t.v[2]]->z);
-               double tdist = bg_tri_closest_pt(NULL, tp, v0, v1, v2);
-               if (cdist > tdist) {
-                   cdist = tdist;
-                   closest_tri = *tr_it;
-               }
-           }
-           // For the closest triangle, find the closest edge from that 
triangle
-           double ecdist = DBL_MAX;
-           int cedge = -1;
-           cdt_mesh::uedge_t uedges[3];
-           for (int i = 0; i < 3; i++) {
-               int v1 = i;
-               int v2 = (i == 2) ? 0 : i + 1;
-               uedges[i] = 
cdt_mesh::uedge_t(fmesh->tris_vect[closest_tri].v[v1], 
fmesh->tris_vect[closest_tri].v[v2]);
-           }
-           for (int i = 0; i < 3; i++) {
-               ON_3dPoint *p3d1 = fmesh->pnts[uedges[i].v[0]];
-               ON_3dPoint *p3d2 = fmesh->pnts[uedges[i].v[1]];
-               ON_Line line(*p3d1, *p3d2);
-               double dline = 
bb.Center().DistanceTo(line.ClosestPointTo(bb.Center()));
-               if (ecdist > dline) {
-                   cedge = i;
-                   ecdist = dline;
-               }
-           }
-           nedges.insert(interior_uedge_ids[uedges[cedge]]);
+    if (!fmesh->pnts.size()) return uedges;
+
+    ON_BoundingBox fbbox = fmesh->bbox();
+
+    struct ON_Brep_CDT_State *s_cdt = (struct ON_Brep_CDT_State *)fmesh->p_cdt;
+    std::cout << s_cdt->name << " face " << fmesh->f_id << " check:\n";
+    if (fmesh->f_id == 4) {
+       std::cout << "problem\n";
+    }
+
+    // Find close triangles, iterate through them and
+    // find the closest interior edge
+    ON_BoundingBox s_bb = bb;
+    std::set<size_t> ntris = tris_search(s_bb);
+    while (!ntris.size()) {
+       std::cout << "not close to any triangles, expanding box...\n";
+       ON_3dVector vmin = s_bb.Min() - s_bb.Center();
+       ON_3dVector vmax = s_bb.Max() - s_bb.Center();
+       vmin = vmin * 2;
+       vmax = vmax * 2;
+       s_bb.m_min = s_bb.Center() + vmin;
+       s_bb.m_max = s_bb.Center() + vmax;
+       std::cout << "fbbox length: " << fbbox.Diagonal().Length() << "\n";
+       std::cout << "s_bb length: " << s_bb.Diagonal().Length() << "\n";
+       if (s_bb.Diagonal().Length() > fbbox.Diagonal().Length()) {
+           std::cout << "not close to any triangles in this face, terminating 
search.\n";
        }
+       ntris = tris_search(s_bb);
     }
 
-    return nedges;
+    std::set<size_t>::iterator tr_it;
+    for (tr_it = ntris.begin(); tr_it != ntris.end(); tr_it++) {
+       cdt_mesh::triangle_t t = fmesh->tris_vect[*tr_it];
+       ON_3dPoint tp = bb.Center();
+       cdt_mesh::uedge_t ue = fmesh->closest_interior_uedge(t, tp);
+       if (ue.v[0] == -1) {
+           std::cout << "PROBLEM!\n";
+           ue = fmesh->closest_interior_uedge(t, tp);
+       }    
+       uedges.insert(ue);
+    }
+
+    return uedges;
 }
 
-
 static bool NearTrisCallback(size_t data, void *a_context) {
     std::set<size_t> *ntris = (std::set<size_t> *)a_context;
     ntris->insert(data);
@@ -528,7 +440,6 @@
     size_t nhits = fmesh->tris_tree.Search(fMin, fMax, NearTrisCallback, (void 
*)&near_tris);
 
     if (!nhits) {
-       std::cout << "No nearby triangles\n";
        return std::set<size_t>();
     }
 
@@ -636,117 +547,6 @@
     refine_tree.RemoveAll();
 }
 
-void
-omesh_t::edge_add(cdt_mesh::uedge_t &ue, int update_verts)
-{
-    if (interior_uedge_ids.find(ue) != interior_uedge_ids.end()) {
-       return;
-    }
-
-    size_t nind = 0;
-    if (interior_uedges.size()) {
-       nind = interior_uedges.rbegin()->first + 1;
-    }
-    //std::cout << "Setting ue " << nind << " to ue(" << ue.v[0] << "," << 
ue.v[1] << "\n";
-    interior_uedges[nind] = ue;
-    interior_uedge_ids[ue] = nind;
-    //std::cout << "interior_uedges.size(): " << interior_uedges.size() << 
"\n";
-    ON_3dPoint *p3d1 = fmesh->pnts[ue.v[0]];
-    ON_3dPoint *p3d2 = fmesh->pnts[ue.v[1]];
-    ON_Line l(*p3d1, *p3d2);
-    ON_BoundingBox ebb = l.BoundingBox();
-    double dist = 0.5*l.Length();
-    double xdist = ebb.m_max.x - ebb.m_min.x;
-    double ydist = ebb.m_max.y - ebb.m_min.y;
-    double zdist = ebb.m_max.z - ebb.m_min.z;
-    if (xdist < dist) {
-       ebb.m_min.x = ebb.m_min.x - 0.5*dist;
-       ebb.m_max.x = ebb.m_max.x + 0.5*dist;
-    }
-    if (ydist < dist) {
-       ebb.m_min.y = ebb.m_min.y - 0.5*dist;
-       ebb.m_max.y = ebb.m_max.y + 0.5*dist;
-    }
-    if (zdist < dist) {
-       ebb.m_min.z = ebb.m_min.z - 0.5*dist;
-       ebb.m_max.z = ebb.m_max.z + 0.5*dist;
-    }
-    double fMin[3];
-    fMin[0] = ebb.Min().x;
-    fMin[1] = ebb.Min().y;
-    fMin[2] = ebb.Min().z;
-    double fMax[3];
-    fMax[0] = ebb.Max().x;
-    fMax[1] = ebb.Max().y;
-    fMax[2] = ebb.Max().z;
-    iedge_tree.Insert(fMin, fMax, nind);
-    //std::cout << "Adding edge " << nind << "\n";
-
-    if (update_verts) {
-       overts[ue.v[0]]->update();
-       overts[ue.v[1]]->update();
-       // Anything close to the new edges needs to assess if this edge is 
closer
-       // than the previously selected one
-       std::set<long> nearby_verts = overts_search(ebb);
-       std::set<long>::iterator n_it;
-       for (n_it = nearby_verts.begin(); n_it != nearby_verts.end(); n_it++) {
-           overts[*n_it]->update();
-       }
-    }
-}
-
-void
-omesh_t::edge_remove(cdt_mesh::uedge_t &ue, int update_verts)
-{
-    // If we're being asked to remove an edge that's not in the working
-    // set, skip
-    if (interior_uedge_ids.find(ue) == interior_uedge_ids.end()) {
-       return;
-    }
-    size_t ue_id = interior_uedge_ids[ue];
-    ON_3dPoint *p3d1 = fmesh->pnts[ue.v[0]];
-    ON_3dPoint *p3d2 = fmesh->pnts[ue.v[1]];
-    ON_Line l(*p3d1, *p3d2);
-    ON_BoundingBox ebb = l.BoundingBox();
-    double dist = 0.51*l.Length();
-    double xdist = ebb.m_max.x - ebb.m_min.x;
-    double ydist = ebb.m_max.y - ebb.m_min.y;
-    double zdist = ebb.m_max.z - ebb.m_min.z;
-    if (xdist < dist) {
-       ebb.m_min.x = ebb.m_min.x - 0.51*dist;
-       ebb.m_max.x = ebb.m_max.x + 0.51*dist;
-    }
-    if (ydist < dist) {
-       ebb.m_min.y = ebb.m_min.y - 0.51*dist;
-       ebb.m_max.y = ebb.m_max.y + 0.51*dist;
-    }
-    if (zdist < dist) {
-       ebb.m_min.z = ebb.m_min.z - 0.51*dist;
-       ebb.m_max.z = ebb.m_max.z + 0.51*dist;
-    }
-    double fMin[3];
-    fMin[0] = ebb.Min().x;
-    fMin[1] = ebb.Min().y;
-    fMin[2] = ebb.Min().z;
-    double fMax[3];
-    fMax[0] = ebb.Max().x;
-    fMax[1] = ebb.Max().y;
-    fMax[2] = ebb.Max().z;
-
-    interior_uedge_ids.erase(ue);
-    interior_uedges.erase(ue_id);
-    iedge_tree.Remove(fMin, fMax, ue_id);
-    //std::cout << "Removing edge " << ue_id << "\n";
-
-    if (update_verts) {
-       overts[ue.v[0]]->update();
-       overts[ue.v[1]]->update();
-    }
-}
-
-
-
-
 ON_BoundingBox
 edge_bbox(cdt_mesh::bedge_seg_t *eseg)
 {
@@ -1458,9 +1258,7 @@
 }
 
 void
-replace_edge_split_tri(cdt_mesh::cdt_mesh_t &fmesh, size_t t_id, long np_id,
-               cdt_mesh::uedge_t &split_edge, std::map<cdt_mesh::cdt_mesh_t *, 
omesh_t *> f2omap
-       )
+replace_edge_split_tri(cdt_mesh::cdt_mesh_t &fmesh, size_t t_id, long np_id, 
cdt_mesh::uedge_t &split_edge)
 {
     cdt_mesh::triangle_t &t = fmesh.tris_vect[t_id];
 
@@ -1474,7 +1272,6 @@
        long v1 = (i < 2) ? t.v[i + 1] : t.v[0];
        cdt_mesh::edge_t ec(v0, v1);
        cdt_mesh::uedge_t uec(ec);
-       f2omap[&fmesh]->edge_remove(uec, 0);
        if (uec != split_edge) {
            if (!ecnt) {
                e1 = ec;
@@ -1507,11 +1304,6 @@
     nedges.insert(n1.begin(), n1.end());
     nedges.insert(n2.begin(), n2.end());
     std::set<cdt_mesh::uedge_t>::iterator n_it;
-    for (n_it = nedges.begin(); n_it != nedges.end(); n_it++) {
-       cdt_mesh::uedge_t ne = *n_it;
-       //std::cout << "Adding new interior edge " << ne.v[0] << "," << ne.v[1] 
<< "\n";
-       f2omap[&fmesh]->edge_add(ne, 0);
-    }
 
     fmesh.tri_plot(ntri1, "nt1.plot3");
     fmesh.tri_plot(ntri2, "nt2.plot3");
@@ -1601,7 +1393,7 @@
        np_id = fmesh_f1.pnts.size() - 1;
        fmesh_f1.ep.insert(np_id);
        for (tr_it = ftris.begin(); tr_it != ftris.end(); tr_it++) {
-           replace_edge_split_tri(fmesh_f1, *tr_it, np_id, ue, f2omap);
+           replace_edge_split_tri(fmesh_f1, *tr_it, np_id, ue);
            replaced_tris++;
        }
 
@@ -1610,7 +1402,7 @@
     } else {
        np_id = fmesh_f1.pnts.size() - 1;
        fmesh_f1.ep.insert(np_id);
-       replace_edge_split_tri(fmesh_f1, *f1_tris.begin(), np_id, ue1, f2omap);
+       replace_edge_split_tri(fmesh_f1, *f1_tris.begin(), np_id, ue1);
        replaced_tris++;
 
        f2omap[&fmesh_f1]->vert_add(np_id);
@@ -1617,7 +1409,7 @@
 
        np_id = fmesh_f2.pnts.size() - 1;
        fmesh_f2.ep.insert(np_id);
-       replace_edge_split_tri(fmesh_f2, *f2_tris.begin(), np_id, ue2, f2omap);
+       replace_edge_split_tri(fmesh_f2, *f2_tris.begin(), np_id, ue2);
        replaced_tris++;
 
        f2omap[&fmesh_f2]->vert_add(np_id);
@@ -2117,7 +1909,7 @@
            }
            std::set<size_t>::iterator r_it;
            for (r_it = rtris.begin(); r_it != rtris.end(); r_it++) {
-               replace_edge_split_tri(*omesh->fmesh, *r_it, f3ind, ue, f2omap);
+               replace_edge_split_tri(*omesh->fmesh, *r_it, f3ind, ue);
            }
            omesh->vert_add(f3ind);
        }
@@ -2146,7 +1938,7 @@
     for (o_it = omeshes.begin(); o_it != omeshes.end(); o_it++) {
        omesh_t *omesh = *o_it;
 
-       std::map<long, std::set<std::pair<ON_3dPoint,ON_3dVector>>> edge_sets;
+       std::map<cdt_mesh::uedge_t, 
std::set<std::pair<ON_3dPoint,ON_3dVector>>> edge_sets;
 
        std::map<long, overt_t*>::iterator i_t;
        for (i_t = omesh->refinement_overts.begin(); i_t != 
omesh->refinement_overts.end(); i_t++) {
@@ -2159,16 +1951,16 @@
            closest_surf_pnt(spnt, sn, *omesh->fmesh, &ovpnt, 2*dist);
 
            // Find the closest edges
-           std::set<size_t> close_edges = 
omesh->interior_uedges_search(ov->bb);
+           std::set<cdt_mesh::uedge_t> close_edges = 
omesh->interior_uedges_search(ov->bb);
 
            double mindist = DBL_MAX; 
-           long closest_uedge = -1;
-           std::set<size_t>::iterator c_it;
+           cdt_mesh::uedge_t closest_uedge;
+           std::set<cdt_mesh::uedge_t>::iterator c_it;
            for (c_it = close_edges.begin(); c_it != close_edges.end(); c_it++) 
{
-               cdt_mesh::uedge_t ue = omesh->interior_uedges[*c_it];
+               cdt_mesh::uedge_t ue = *c_it;
                double dline = omesh->fmesh->uedge_dist(ue, spnt);
                if (mindist > dline) {
-                   closest_uedge = *c_it;
+                   closest_uedge = ue;
                    mindist = dline;
                }
            }
@@ -2200,7 +1992,7 @@
            std::set<size_t> rtris = omesh->fmesh->uedges2tris[ue];
            std::set<size_t>::iterator r_it;
            for (r_it = rtris.begin(); r_it != rtris.end(); r_it++) {
-               replace_edge_split_tri(*omesh->fmesh, *r_it, f3ind, ue, f2omap);
+               replace_edge_split_tri(*omesh->fmesh, *r_it, f3ind, ue);
            }
            omesh->vert_add(f3ind);
        }

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