Revision: 74238
          http://sourceforge.net/p/brlcad/code/74238
Author:   starseeker
Date:     2019-10-25 13:57:47 +0000 (Fri, 25 Oct 2019)
Log Message:
-----------
Ah.  Wasn't stashing the edge curve pointer to split correctly, and splitting 
the wrong curve.

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-25 00:42:05 UTC (rev 
74237)
+++ brlcad/trunk/src/libbrep/cdt_ovlps.cpp      2019-10-25 13:57:47 UTC (rev 
74238)
@@ -1720,18 +1720,29 @@
        std::set<overt_t *> verts = ev_it->second;
        std::set<cdt_mesh::bedge_seg_t *> segs;
        segs.insert(ev_it->first);
+#if 0
+       ON_3dPoint problem(3.44525,7.67444,22.9198);
+       std::set<overt_t *>::iterator v_it;
+       for (v_it = verts.begin(); v_it != verts.end(); v_it++) {
+           overt_t *v = *v_it;
+           ON_3dPoint p = v->vpnt();
+           if (problem.DistanceTo(p) < 0.01) {
+               std::cout << "problem\n";
+           }
+       }
+#endif
        while (verts.size()) {
            overt_t *v = *verts.begin();
            ON_3dPoint p = v->vpnt();
            verts.erase(v);
 
-           cdt_mesh::bedge_seg_t *eseg = NULL;
+           cdt_mesh::bedge_seg_t *eseg_split = NULL;
            double split_t = -1.0;
            double closest_dist = DBL_MAX;
            std::set<cdt_mesh::bedge_seg_t *>::iterator e_it;
            std::cout << "segs size: " << segs.size() << "\n";
            for (e_it = segs.begin(); e_it != segs.end(); e_it++) {
-               eseg = *e_it;
+               cdt_mesh::bedge_seg_t *eseg = *e_it;
                ON_NurbsCurve *nc = eseg->nc;
                ON_Interval domain(eseg->edge_start, eseg->edge_end);
                double t;
@@ -1742,15 +1753,15 @@
                    std::cout << "closest_dist: " << closest_dist << "\n";
                    std::cout << "ecdist: " << ecdist << "\n";
                    closest_dist = ecdist;
-                   eseg = eseg;
+                   eseg_split = eseg;
                    split_t = t;
                }
            }
 
            std::set<cdt_mesh::bedge_seg_t *> nsegs;
-           int ntri_cnt = bedge_split_at_t(eseg, split_t, f2omap, &nsegs);
+           int ntri_cnt = bedge_split_at_t(eseg_split, split_t, f2omap, 
&nsegs);
            if (ntri_cnt) {
-               segs.erase(eseg);
+               segs.erase(eseg_split);
                replaced_tris += ntri_cnt; 
                segs.insert(nsegs.begin(), nsegs.end());
            }
@@ -1888,8 +1899,8 @@
     }
     std::set<cdt_mesh::cdt_mesh_t *>::iterator f_it;
     for (f_it = fmeshes.begin(); f_it != fmeshes.end(); f_it++) {
-       cdt_mesh::cdt_mesh_t *fmesh = *f_it;
-       std::cout << "face " << fmesh->f_id << " validity: " << fmesh->valid(1) 
<< "\n";
+       //cdt_mesh::cdt_mesh_t *fmesh = *f_it;
+       //std::cout << "face " << fmesh->f_id << " validity: " << 
fmesh->valid(1) << "\n";
 #if 0
        struct ON_Brep_CDT_State *s_cdt = (struct ON_Brep_CDT_State 
*)fmesh->p_cdt;
        std::string fpname = std::to_string(id) + std::string("_") + 
std::string(s_cdt->name) + std::string("_face_") + std::to_string(fmesh->f_id) 
+ std::string(".plot3");

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