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