Revision: 73868
http://sourceforge.net/p/brlcad/code/73868
Author: starseeker
Date: 2019-09-10 13:07:56 +0000 (Tue, 10 Sep 2019)
Log Message:
-----------
Change the bookkeeping logic somewhat, but not really a substantial speedup.
Need to slap a profiler on this to see where we're spending time - if the extra
time is necessary for geometry correctness so be it, but should make sure.
Modified Paths:
--------------
brlcad/trunk/src/libbrep/cdt.cpp
brlcad/trunk/src/libbrep/cdt.h
brlcad/trunk/src/libbrep/cdt_edge.cpp
brlcad/trunk/src/libbrep/cdt_mesh.h
brlcad/trunk/src/libbrep/cdt_util.cpp
Modified: brlcad/trunk/src/libbrep/cdt.cpp
===================================================================
--- brlcad/trunk/src/libbrep/cdt.cpp 2019-09-10 01:06:13 UTC (rev 73867)
+++ brlcad/trunk/src/libbrep/cdt.cpp 2019-09-10 13:07:56 UTC (rev 73868)
@@ -187,9 +187,9 @@
if (!edge) continue;
const ON_Curve* crv = edge->EdgeCurveOf();
if (!crv) continue;
- std::set<cdt_mesh::bedge_seg_t *> &epsegs =
s_cdt->e2polysegs[edge->m_edge_index];
+ std::vector<cdt_mesh::bedge_seg_t *> &epsegs =
s_cdt->e2polysegs[edge->m_edge_index];
if (!epsegs.size()) continue;
- std::set<cdt_mesh::bedge_seg_t *>::iterator e_it;
+ std::vector<cdt_mesh::bedge_seg_t *>::iterator e_it;
for (e_it = epsegs.begin(); e_it != epsegs.end(); e_it++) {
cdt_mesh::bedge_seg_t *b = *e_it;
double seg_dist = b->e_start->DistanceTo(*b->e_end);
@@ -499,9 +499,9 @@
}
// Initialize the tangents.
- std::map<int, std::set<cdt_mesh::bedge_seg_t *>>::iterator epoly_it;
+ std::map<int, std::vector<cdt_mesh::bedge_seg_t *>>::iterator epoly_it;
for (epoly_it = s_cdt->e2polysegs.begin(); epoly_it !=
s_cdt->e2polysegs.end(); epoly_it++) {
- std::set<cdt_mesh::bedge_seg_t *>::iterator seg_it;
+ std::vector<cdt_mesh::bedge_seg_t *>::iterator seg_it;
for (seg_it = epoly_it->second.begin(); seg_it !=
epoly_it->second.end(); seg_it++) {
cdt_mesh::bedge_seg_t *bseg = *seg_it;
double ts1 = bseg->tseg1->trim_start;
@@ -653,8 +653,8 @@
#if 0
// Build RTrees of 2D and 3D edge segments for edge aware processing
for (int index = 0; index < brep->m_E.Count(); index++) {
- std::set<cdt_mesh::bedge_seg_t *> &epsegs =
s_cdt->e2polysegs[index];
- std::set<cdt_mesh::bedge_seg_t *>::iterator e_it;
+ std::vector<cdt_mesh::bedge_seg_t *> &epsegs =
s_cdt->e2polysegs[index];
+ std::vector<cdt_mesh::bedge_seg_t *>::iterator e_it;
for (e_it = epsegs.begin(); e_it != epsegs.end(); e_it++) {
cdt_mesh::bedge_seg_t *b = *e_it;
rtree_bbox_2d(s_cdt, b->tseg1);
Modified: brlcad/trunk/src/libbrep/cdt.h
===================================================================
--- brlcad/trunk/src/libbrep/cdt.h 2019-09-10 01:06:13 UTC (rev 73867)
+++ brlcad/trunk/src/libbrep/cdt.h 2019-09-10 13:07:56 UTC (rev 73868)
@@ -122,7 +122,7 @@
std::map<int, double> *max_edge_seg_len;
std::map<ON_3dPoint *, std::set<BrepTrimPoint *>> *on_brep_edge_pnts;
std::map<int, struct BrepEdgeSegment *> *etrees;
- std::map<int, std::set<cdt_mesh::bedge_seg_t *>> e2polysegs;
+ std::map<int, std::vector<cdt_mesh::bedge_seg_t *>> e2polysegs;
std::map<ON_3dPoint *, double> v_min_seg_len;
std::map<int, double> l_median_len;
Modified: brlcad/trunk/src/libbrep/cdt_edge.cpp
===================================================================
--- brlcad/trunk/src/libbrep/cdt_edge.cpp 2019-09-10 01:06:13 UTC (rev
73867)
+++ brlcad/trunk/src/libbrep/cdt_edge.cpp 2019-09-10 13:07:56 UTC (rev
73868)
@@ -307,8 +307,6 @@
struct rtree_minsplit_context {
struct ON_Brep_CDT_State *s_cdt;
- std::set<cdt_mesh::cpolyedge_t *> *split_trims;
- std::set<cdt_mesh::bedge_seg_t *> *split_edges;
cdt_mesh::cpolyedge_t *cseg;
};
@@ -329,15 +327,15 @@
double cdist = cp2d1.DistanceTo(cp2d2);
double tdist = tp2d1.DistanceTo(tp2d2);
- // If tseg is longer - it should be the one to split
- if (cdist < tdist && !NEAR_EQUAL(cdist, tdist, ON_ZERO_TOLERANCE)) return
true;
+ // If tseg is longer, it should be the one to split, but we'll need
+ // to re-check this trim in the next pass
+ if (cdist < tdist && !NEAR_EQUAL(cdist, tdist, ON_ZERO_TOLERANCE)) {
+ context->cseg->split_status = 1;
+ return true;
+ }
// Mark this segment down as a segment to split
- if (context->cseg->eseg) {
- context->split_edges->insert(context->cseg->eseg);
- } else {
- context->split_trims->insert(context->cseg);
- }
+ context->cseg->split_status = 2;
// No need to keep checking if we already know we're going to split
return false;
@@ -372,8 +370,8 @@
edge_median_seg_len(struct ON_Brep_CDT_State *s_cdt, int m_edge_index)
{
std::vector<double> lsegs;
- std::set<cdt_mesh::bedge_seg_t *> &epsegs =
s_cdt->e2polysegs[m_edge_index];
- std::set<cdt_mesh::bedge_seg_t *>::iterator e_it;
+ std::vector<cdt_mesh::bedge_seg_t *> &epsegs =
s_cdt->e2polysegs[m_edge_index];
+ std::vector<cdt_mesh::bedge_seg_t *>::iterator e_it;
for (e_it = epsegs.begin(); e_it != epsegs.end(); e_it++) {
cdt_mesh::bedge_seg_t *b = *e_it;
double seg_dist = b->e_start->DistanceTo(*b->e_end);
@@ -835,9 +833,9 @@
if (!edge) continue;
const ON_Curve* crv = edge->EdgeCurveOf();
if (!crv) continue;
- std::set<cdt_mesh::bedge_seg_t *> &epsegs =
s_cdt->e2polysegs[edge->m_edge_index];
+ std::vector<cdt_mesh::bedge_seg_t *> &epsegs =
s_cdt->e2polysegs[edge->m_edge_index];
if (!epsegs.size()) continue;
- std::set<cdt_mesh::bedge_seg_t *>::iterator e_it;
+ std::vector<cdt_mesh::bedge_seg_t *>::iterator e_it;
for (e_it = epsegs.begin(); e_it != epsegs.end(); e_it++) {
cdt_mesh::bedge_seg_t *b = *e_it;
double seg_dist = b->e_start->DistanceTo(*b->e_end);
@@ -865,9 +863,9 @@
if (!crv || crv->IsLinear(BN_TOL_DIST)) {
continue;
}
- std::set<cdt_mesh::bedge_seg_t *> &epsegs =
s_cdt->e2polysegs[edge->m_edge_index];
+ std::vector<cdt_mesh::bedge_seg_t *> &epsegs =
s_cdt->e2polysegs[edge->m_edge_index];
if (!epsegs.size()) continue;
- std::set<cdt_mesh::bedge_seg_t *>::iterator e_it;
+ std::vector<cdt_mesh::bedge_seg_t *>::iterator e_it;
std::set<cdt_mesh::bedge_seg_t *> new_segs;
std::set<cdt_mesh::bedge_seg_t *> ws1, ws2;
std::set<cdt_mesh::bedge_seg_t *> *ws = &ws1;
@@ -958,10 +956,10 @@
bool
initialize_edge_segs(struct ON_Brep_CDT_State *s_cdt)
{
- std::map<int, std::set<cdt_mesh::bedge_seg_t *>>::iterator epoly_it;
+ std::map<int, std::vector<cdt_mesh::bedge_seg_t *>>::iterator epoly_it;
for (epoly_it = s_cdt->e2polysegs.begin(); epoly_it !=
s_cdt->e2polysegs.end(); epoly_it++) {
- std::set<cdt_mesh::bedge_seg_t *>::iterator seg_it;
- std::set<cdt_mesh::bedge_seg_t *> wsegs = epoly_it->second;
+ std::vector<cdt_mesh::bedge_seg_t *>::iterator seg_it;
+ std::vector<cdt_mesh::bedge_seg_t *> wsegs = epoly_it->second;
for (seg_it = wsegs.begin(); seg_it != wsegs.end(); seg_it++) {
cdt_mesh::bedge_seg_t *e = *seg_it;
@@ -1021,7 +1019,7 @@
}
s_cdt->e2polysegs[edge.m_edge_index].clear();
- s_cdt->e2polysegs[edge.m_edge_index].insert(esegs_csplit.begin(),
esegs_csplit.end());
+ std::copy(esegs_csplit.begin(), esegs_csplit.end(),
std::back_inserter(s_cdt->e2polysegs[edge.m_edge_index]));
}
}
@@ -1139,7 +1137,7 @@
// Stash the edge type - we will need it during refinement
bseg->edge_type = edge_type[edge.m_edge_index];
- s_cdt->e2polysegs[edge.m_edge_index].insert(bseg);
+ s_cdt->e2polysegs[edge.m_edge_index].push_back(bseg);
}
}
@@ -1255,7 +1253,7 @@
rtree_bbox_2d(s_cdt, ne);
if (trim->m_ei >= 0) {
- cdt_mesh::bedge_seg_t *eseg =
*s_cdt->e2polysegs[trim->m_ei].begin();
+ cdt_mesh::bedge_seg_t *eseg =
s_cdt->e2polysegs[trim->m_ei][0];
// Associate the edge segment with the trim segment and
vice versa
ne->eseg = eseg;
if (eseg->tseg1 && eseg->tseg2) {
@@ -1295,8 +1293,8 @@
// TODO - BN_TOL_DIST will be too large for very small trims - need to
do
// something similar to the ptol calculation for these edge curves...
if (crv && !crv->IsLinear(BN_TOL_DIST)) {
- 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::vector<cdt_mesh::bedge_seg_t *> &epsegs =
s_cdt->e2polysegs[edge.m_edge_index];
+ std::vector<cdt_mesh::bedge_seg_t *>::iterator e_it;
std::set<cdt_mesh::bedge_seg_t *> new_segs;
std::set<cdt_mesh::bedge_seg_t *> ws1, ws2;
std::set<cdt_mesh::bedge_seg_t *> *ws = &ws1;
@@ -1321,7 +1319,7 @@
}
}
s_cdt->e2polysegs[edge.m_edge_index].clear();
- s_cdt->e2polysegs[edge.m_edge_index].insert(new_segs.begin(),
new_segs.end());
+ std::copy(new_segs.begin(), new_segs.end(),
std::back_inserter(s_cdt->e2polysegs[edge.m_edge_index]));
}
}
}
@@ -1337,8 +1335,8 @@
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]];
- 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::vector<cdt_mesh::bedge_seg_t *> &epsegs =
s_cdt->e2polysegs[edge.m_edge_index];
+ std::vector<cdt_mesh::bedge_seg_t *>::iterator e_it;
for (e_it = epsegs.begin(); e_it != epsegs.end(); e_it++) {
cdt_mesh::bedge_seg_t *b = *e_it;
if (b->e_start == p3d || b->e_end == p3d) {
@@ -1371,9 +1369,9 @@
if (!crv || crv->IsLinear(BN_TOL_DIST)) {
continue;
}
- std::set<cdt_mesh::bedge_seg_t *> &epsegs =
s_cdt->e2polysegs[edge->m_edge_index];
+ std::vector<cdt_mesh::bedge_seg_t *> &epsegs =
s_cdt->e2polysegs[edge->m_edge_index];
if (!epsegs.size()) continue;
- std::set<cdt_mesh::bedge_seg_t *>::iterator e_it;
+ std::vector<cdt_mesh::bedge_seg_t *>::iterator e_it;
for (e_it = epsegs.begin(); e_it != epsegs.end(); e_it++) {
cdt_mesh::bedge_seg_t *b = *e_it;
double seg_dist = b->e_start->DistanceTo(*b->e_end);
@@ -1436,8 +1434,8 @@
for (r_it = refine_targets.begin(); r_it != refine_targets.end(); r_it++) {
ON_BrepEdge& edge = brep->m_E[r_it->first];
double split_tol = r_it->second;
- std::set<cdt_mesh::bedge_seg_t *> &epsegs =
s_cdt->e2polysegs[r_it->first];
- std::set<cdt_mesh::bedge_seg_t *>::iterator e_it;
+ std::vector<cdt_mesh::bedge_seg_t *> &epsegs =
s_cdt->e2polysegs[r_it->first];
+ std::vector<cdt_mesh::bedge_seg_t *>::iterator e_it;
std::set<cdt_mesh::bedge_seg_t *> new_segs;
std::set<cdt_mesh::bedge_seg_t *> ws1, ws2;
std::set<cdt_mesh::bedge_seg_t *> *ws = &ws1;
@@ -1468,7 +1466,7 @@
}
}
s_cdt->e2polysegs[edge.m_edge_index].clear();
- s_cdt->e2polysegs[edge.m_edge_index].insert(new_segs.begin(),
new_segs.end());
+ std::copy(new_segs.begin(), new_segs.end(),
std::back_inserter(s_cdt->e2polysegs[edge.m_edge_index]));
}
}
@@ -1486,8 +1484,8 @@
ON_BrepEdge& edge = brep->m_E[index];
const ON_Curve* crv = edge.EdgeCurveOf();
if (crv && crv->IsLinear(BN_TOL_DIST)) {
- 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::vector<cdt_mesh::bedge_seg_t *> &epsegs =
s_cdt->e2polysegs[edge.m_edge_index];
+ std::vector<cdt_mesh::bedge_seg_t *>::iterator e_it;
std::set<cdt_mesh::bedge_seg_t *> new_segs;
std::set<cdt_mesh::bedge_seg_t *> ws1, ws2;
std::set<cdt_mesh::bedge_seg_t *> *ws = &ws1;
@@ -1512,7 +1510,7 @@
}
}
s_cdt->e2polysegs[edge.m_edge_index].clear();
- s_cdt->e2polysegs[edge.m_edge_index].insert(new_segs.begin(),
new_segs.end());
+ std::copy(new_segs.begin(), new_segs.end(),
std::back_inserter(s_cdt->e2polysegs[edge.m_edge_index]));
}
}
@@ -1539,9 +1537,9 @@
if (!edge) continue;
const ON_Curve* crv = edge->EdgeCurveOf();
if (!crv) continue;
- std::set<cdt_mesh::bedge_seg_t *> &epsegs =
s_cdt->e2polysegs[edge->m_edge_index];
+ std::vector<cdt_mesh::bedge_seg_t *> &epsegs =
s_cdt->e2polysegs[edge->m_edge_index];
if (!epsegs.size()) continue;
- std::set<cdt_mesh::bedge_seg_t *>::iterator e_it;
+ std::vector<cdt_mesh::bedge_seg_t *>::iterator e_it;
for (e_it = epsegs.begin(); e_it != epsegs.end(); e_it++) {
cdt_mesh::bedge_seg_t *b = *e_it;
double seg_dist = b->e_start->DistanceTo(*b->e_end);
@@ -1558,8 +1556,8 @@
ON_BrepEdge& edge = brep->m_E[index];
const ON_Curve* crv = edge.EdgeCurveOf();
if (!crv) continue;
- 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::vector<cdt_mesh::bedge_seg_t *> &epsegs =
s_cdt->e2polysegs[edge.m_edge_index];
+ std::vector<cdt_mesh::bedge_seg_t *>::iterator e_it;
std::set<cdt_mesh::bedge_seg_t *> new_segs;
std::set<cdt_mesh::bedge_seg_t *> ws1, ws2;
std::set<cdt_mesh::bedge_seg_t *> *ws = &ws1;
@@ -1626,7 +1624,7 @@
}
}
s_cdt->e2polysegs[edge.m_edge_index].clear();
- s_cdt->e2polysegs[edge.m_edge_index].insert(new_segs.begin(),
new_segs.end());
+ std::copy(new_segs.begin(), new_segs.end(),
std::back_inserter(s_cdt->e2polysegs[edge.m_edge_index]));
}
}
@@ -1639,8 +1637,8 @@
ON_BrepFace &face = s_cdt->brep->m_F[face_index];
cdt_mesh::cdt_mesh_t *fmesh = &s_cdt->fmeshes[face_index];
- std::set<cdt_mesh::cpolyedge_t *> ws;
- std::set<cdt_mesh::cpolyedge_t *>::iterator w_it;
+ std::vector<cdt_mesh::cpolyedge_t *> ws;
+ std::vector<cdt_mesh::cpolyedge_t *>::iterator w_it;
int loop_cnt = face.LoopCount();
for (int li = 0; li < loop_cnt; li++) {
@@ -1657,12 +1655,14 @@
cdt_mesh::cpolyedge_t *pe = (*cpoly->poly.begin());
cdt_mesh::cpolyedge_t *first = pe;
cdt_mesh::cpolyedge_t *next = pe->next;
- ws.insert(first);
+ first->split_status = 0;
+ ws.push_back(first);
// Walk the loop
while (first != next) {
ecnt++;
if (!next) break;
- ws.insert(next);
+ next->split_status = 0;
+ ws.push_back(next);
next = next->next;
if (ecnt > cpoly->poly.size()) {
std::cerr << "\nrefine_close_edges: ERROR! encountered
infinite loop\n";
@@ -1676,16 +1676,16 @@
// don't have any non-neighbor overlaps.
int split_cnt = 0;
while (ws.size() && split_cnt < 10) {
- std::set<cdt_mesh::cpolyedge_t *> trims_to_split;
- std::set<cdt_mesh::bedge_seg_t *> edges_to_split;
- std::set<cdt_mesh::cpolyedge_t *> current_trims;
- std::map<int, std::set<cdt_mesh::bedge_seg_t *>> curr_edge_segs;
+ std::vector<cdt_mesh::cpolyedge_t *> current_trims;
+ std::map<int, std::vector<cdt_mesh::bedge_seg_t *>> curr_edge_segs;
bool split_check = false;
+#if 1
if (split_cnt) {
std::cout << "Face " << face_index << " split_cnt " <<
split_cnt << "\n";
}
+#endif
for (w_it = ws.begin(); w_it != ws.end(); w_it++) {
cdt_mesh::cpolyedge_t *tseg = *w_it;
ON_2dPoint p2d1 =
s_cdt->brep->m_T[tseg->trim_ind].PointAt(tseg->trim_start);
@@ -1723,8 +1723,6 @@
// Edge context info
struct rtree_minsplit_context a_context;
a_context.s_cdt = s_cdt;
- a_context.split_trims = &trims_to_split;
- a_context.split_edges = &edges_to_split;
a_context.cseg = tseg;
// Do the search
@@ -1736,11 +1734,11 @@
cdt_mesh::cpolyedge_t *pe = *w_it;
if (pe->eseg) {
cdt_mesh::bedge_seg_t *b = pe->eseg;
- if (edges_to_split.find(b) != edges_to_split.end()) {
+ if (pe->split_status == 2) {
std::set<cdt_mesh::bedge_seg_t *> esegs_split =
split_edge_seg(s_cdt, b, 1);
if (esegs_split.size()) {
split_check = true;
-
curr_edge_segs[b->edge_ind].insert(esegs_split.begin(), esegs_split.end());
+ std::copy(esegs_split.begin(), esegs_split.end(),
std::back_inserter(curr_edge_segs[b->edge_ind]));
// Pick up the new trim segments from the edges for
the next iteration. Only
// want the ones associated with the current face.
std::set<cdt_mesh::bedge_seg_t *>::iterator b_it;
@@ -1747,32 +1745,34 @@
for (b_it = esegs_split.begin(); b_it !=
esegs_split.end(); b_it++) {
cdt_mesh::bedge_seg_t *bn = *b_it;
cdt_mesh::cpolyedge_t *ce =
(s_cdt->brep->m_T[bn->tseg1->trim_ind].Face()->m_face_index == face_index) ?
bn->tseg1 : bn->tseg2;
- current_trims.insert(ce);
+ current_trims.push_back(ce);
}
} else {
// This is probably fatal...
std::cerr << "Forced edge split failed???\n";
- curr_edge_segs[b->edge_ind].insert(b);
- current_trims.insert(pe);
+ curr_edge_segs[b->edge_ind].push_back(b);
+ current_trims.push_back(pe);
}
+ } else if (pe->split_status == 1) {
+ curr_edge_segs[b->edge_ind].push_back(b);
+ current_trims.push_back(pe);
} else {
- curr_edge_segs[b->edge_ind].insert(b);
- current_trims.insert(pe);
+ curr_edge_segs[b->edge_ind].push_back(b);
}
} else {
// Trim only, no edge.
- if (trims_to_split.find(pe) != trims_to_split.end()) {
+ if (pe->split_status == 2) {
std::set<cdt_mesh::cpolyedge_t *> ntrims =
split_singular_seg(s_cdt, pe);
if (ntrims.size()) {
- current_trims.insert(ntrims.begin(), ntrims.end());
+ std::copy(ntrims.begin(), ntrims.end(),
std::back_inserter(current_trims));
split_check = true;
} else {
// This is probably fatal...
std::cerr << "Forced trim split failed???\n";
- current_trims.insert(pe);
+ current_trims.push_back(pe);
}
- } else {
- current_trims.insert(pe);
+ } else if (pe->split_status == 1) {
+ current_trims.push_back(pe);
}
}
}
@@ -1779,23 +1779,28 @@
ws.clear();
- std::map<int, std::set<cdt_mesh::bedge_seg_t *>>::iterator m_it;
if (split_check) {
- ws.insert(current_trims.begin(), current_trims.end());
+ ws = current_trims;
+ for (w_it = ws.begin(); w_it != ws.end(); w_it++) {
+ (*w_it)->split_status = 0;
+ }
}
split_cnt++;
// Once we're done with this round of splitting, update the
e2polysegs sets
+ std::map<int, std::vector<cdt_mesh::bedge_seg_t *>>::iterator m_it;
for (m_it = curr_edge_segs.begin(); m_it != curr_edge_segs.end();
m_it++) {
int m_edge_index = m_it->first;
s_cdt->e2polysegs[m_edge_index].clear();
- s_cdt->e2polysegs[m_edge_index].insert(m_it->second.begin(),
m_it->second.end());
+ std::copy(m_it->second.begin(), m_it->second.end(),
std::back_inserter(s_cdt->e2polysegs[m_edge_index]));
}
+#if 1
struct bu_vls fname = BU_VLS_INIT_ZERO;
bu_vls_sprintf(&fname, "%d-rtree_2d_split_update_%d.plot3",
face.m_face_index, split_cnt);
plot_rtree_2d2(s_cdt->trim_segs[face_index], bu_vls_cstr(&fname));
bu_vls_free(&fname);
+#endif
}
}
Modified: brlcad/trunk/src/libbrep/cdt_mesh.h
===================================================================
--- brlcad/trunk/src/libbrep/cdt_mesh.h 2019-09-10 01:06:13 UTC (rev 73867)
+++ brlcad/trunk/src/libbrep/cdt_mesh.h 2019-09-10 13:07:56 UTC (rev 73868)
@@ -243,9 +243,6 @@
e_end = NULL;
e_root_start = NULL;
e_root_end = NULL;
- // TODO - see if it makes sense to initialize these from parents
and override or not
- nlc_start = NULL;
- nlc_end = NULL;
tan_start = ON_3dVector::UnsetVector;
tan_end = ON_3dVector::UnsetVector;
};
@@ -258,13 +255,6 @@
ON_NurbsCurve *nc;
ON_Brep *brep;
- /* These are pointers to points (if any) shared beween this edge and
- * connected non-linear edges. Splitting decisions that involve one
- * of these points will also need to consider the dimensions of the
- * mated edge. */
- ON_3dPoint *nlc_start;
- ON_3dPoint *nlc_end;
-
cpolyedge_t *tseg1;
cpolyedge_t *tseg2;
double edge_start;
@@ -275,6 +265,7 @@
ON_3dPoint *e_root_end;
ON_3dVector tan_start;
ON_3dVector tan_end;
+
};
class cpolygon_t;
@@ -311,6 +302,7 @@
int trim_ind;
double trim_start;
double trim_end;
+ int split_status;
bedge_seg_t *eseg;
};
Modified: brlcad/trunk/src/libbrep/cdt_util.cpp
===================================================================
--- brlcad/trunk/src/libbrep/cdt_util.cpp 2019-09-10 01:06:13 UTC (rev
73867)
+++ brlcad/trunk/src/libbrep/cdt_util.cpp 2019-09-10 13:07:56 UTC (rev
73868)
@@ -104,7 +104,7 @@
++tree_it;
}
- rtree.Save("test.rtree");
+ //rtree.Save("test.rtree");
fclose(plot_file);
}
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