Revision: 73811
          http://sourceforge.net/p/brlcad/code/73811
Author:   starseeker
Date:     2019-08-31 21:19:50 +0000 (Sat, 31 Aug 2019)
Log Message:
-----------
NIST2 is exposing problems when we split the edges deeper...

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

Modified: brlcad/trunk/src/libbrep/cdt2.cpp
===================================================================
--- brlcad/trunk/src/libbrep/cdt2.cpp   2019-08-31 20:58:11 UTC (rev 73810)
+++ brlcad/trunk/src/libbrep/cdt2.cpp   2019-08-31 21:19:50 UTC (rev 73811)
@@ -416,14 +416,18 @@
            if (bseg->e_start == bseg->e_root_end || bseg->e_end == 
bseg->e_root_end) {
                len_2 = s_cdt->v_min_seg_len[bseg->e_root_end];
            }
-           if (len_1 < 0 && len_2 < 0) {
-               bu_log("Error - verts report invalid lengths on type 3 line 
segment\n");
-               return false;
+           if (bseg->e_start == bseg->e_root_start || bseg->e_end == 
bseg->e_root_start) {
+               if (len_1 < 0 && len_2 < 0) {
+                   bu_log("Error - verts report invalid lengths on type 3 line 
segment\n");
+                   return false;
+               }
            }
            s_len = (len_1 > 0) ? len_1 : len_2;
            s_len = (len_2 > 0 && len_2 < s_len) ? len_2 : s_len;
-           max_allowed = 2*s_len;
-           min_allowed = 0.5*s_len;
+           if (s_len > 0) {
+               max_allowed = 2*s_len;
+               min_allowed = 0.5*s_len;
+           }
            break;
        case 4:
            // Linear segment, no curves involved
@@ -1033,16 +1037,9 @@
     }
 
     // Calculate for each vertex involved with curved edges the minimum 
individual bedge_seg
-    // length involved.  TODO - probably want this even for non-curved edges 
really, since
-    // a very long edge attached to a very small edge will produce extreme 
triangles even
-    // in the linear case...
+    // length involved.
     for (int i = 0; i < brep->m_V.Count(); i++) {
        ON_3dPoint *p3d = (*s_cdt->vert_pnts)[i];
-       // If no curved edges, we don't need this
-       if (!vert_type[i]) {
-           s_cdt->v_min_seg_len[p3d] = -1;
-           continue;
-       }
        double emin = DBL_MAX;
        for (int j = 0; j < brep->m_V[i].m_ei.Count(); j++) {
            ON_BrepEdge &edge = brep->m_E[brep->m_V[i].m_ei[j]];
@@ -1098,6 +1095,7 @@
        ON_BrepEdge& edge = brep->m_E[index];
        const ON_Curve* crv = edge.EdgeCurveOf();
        if (crv && crv->IsLinear(BN_TOL_DIST)) {
+           std::cout << "Processing edge " << edge.m_edge_index << "\n";
            std::set<cdt_mesh::bedge_seg_t *> &epsegs = 
s_cdt->e2polysegs[edge.m_edge_index];
            std::set<cdt_mesh::bedge_seg_t *>::iterator e_it;
            std::set<cdt_mesh::bedge_seg_t *> new_segs;

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