Revision: 73819
http://sourceforge.net/p/brlcad/code/73819
Author: starseeker
Date: 2019-09-03 20:20:54 +0000 (Tue, 03 Sep 2019)
Log Message:
-----------
Not working yet, but start looking at the surface sampling logic and what's
needed to integrate it into the new setup.
Modified Paths:
--------------
brlcad/trunk/src/libbrep/cdt2.cpp
brlcad/trunk/src/libbrep/cdt_surf2.cpp
Modified: brlcad/trunk/src/libbrep/cdt2.cpp
===================================================================
--- brlcad/trunk/src/libbrep/cdt2.cpp 2019-09-03 18:50:55 UTC (rev 73818)
+++ brlcad/trunk/src/libbrep/cdt2.cpp 2019-09-03 20:20:54 UTC (rev 73819)
@@ -1347,6 +1347,33 @@
// TODO - adapt surface point sampling to new setup
for (int index = 0; index < brep->m_F.Count(); index++) {
+ ON_BrepFace &face = s_cdt->brep->m_F[index];
+ int loop_cnt = face.LoopCount();
+ double min_edge_seg_len = DBL_MAX;
+ double max_edge_seg_len = 0;
+ for (int li = 0; li < loop_cnt; li++) {
+ const ON_BrepLoop *loop = face.Loop(li);
+ for (int lti = 0; lti < loop->TrimCount(); lti++) {
+ ON_BrepTrim *trim = loop->Trim(lti);
+ ON_BrepEdge *edge = trim->Edge();
+ 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];
+ if (!epsegs.size()) continue;
+ std::set<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);
+ min_edge_seg_len = (min_edge_seg_len > seg_dist) ? seg_dist
: min_edge_seg_len;
+ max_edge_seg_len = (max_edge_seg_len < seg_dist) ? seg_dist
: max_edge_seg_len;
+ }
+ }
+ }
+ (*s_cdt->min_edge_seg_len)[index] = min_edge_seg_len;
+ (*s_cdt->max_edge_seg_len)[index] = max_edge_seg_len;
+
+ GetInteriorPoints(s_cdt, index);
}
for (int face_index = 0; face_index < brep->m_F.Count(); face_index++) {
Modified: brlcad/trunk/src/libbrep/cdt_surf2.cpp
===================================================================
--- brlcad/trunk/src/libbrep/cdt_surf2.cpp 2019-09-03 18:50:55 UTC (rev
73818)
+++ brlcad/trunk/src/libbrep/cdt_surf2.cpp 2019-09-03 20:20:54 UTC (rev
73819)
@@ -165,8 +165,8 @@
}
static bool EdgeSegCallback(void *data, void *a_context) {
- struct BrepEdgeSegment *eseg = (struct BrepEdgeSegment *)data;
- std::set<struct BrepEdgeSegment *> *segs = (std::set<struct
BrepEdgeSegment *> *)a_context;
+ cdt_mesh::cpolyedge_t *eseg = (cdt_mesh::cpolyedge_t *)data;
+ std::set<cdt_mesh::cpolyedge_t *> *segs = (std::set<cdt_mesh::cpolyedge_t
*> *)a_context;
segs->insert(eseg);
return true;
}
@@ -226,7 +226,7 @@
fMax[1] = wp2.y;
fMax[2] = wp2.z;
- std::set<struct BrepEdgeSegment *> segs;
+ std::set<cdt_mesh::cpolyedge_t *> segs;
size_t nhits =
sinfo->s_cdt->edge_segs_3d[sinfo->f->m_face_index].Search(fMin, fMax,
EdgeSegCallback, (void *)&segs);
//bu_log("new tree found %zu boxes and %zu segments\n", nhits,
segs.size());
@@ -240,12 +240,12 @@
return true;
}
- std::set<struct BrepEdgeSegment *>::iterator s_it;
+ std::set<cdt_mesh::cpolyedge_t *>::iterator s_it;
for (s_it = segs.begin(); s_it != segs.end(); s_it++) {
- struct BrepEdgeSegment *seg = *s_it;
+ cdt_mesh::cpolyedge_t *seg = *s_it;
ON_BoundingBox lbb;
- lbb.Set(*seg->sbtp1->p3d, true);
- lbb.Set(*seg->ebtp1->p3d, true);
+ lbb.Set(*seg->eseg->e_start, true);
+ lbb.Set(*seg->eseg->e_end, true);
if (!uvbb.IsDisjoint(lbb)) {
fastf_t dist = lbb.Diagonal().Length();
if ((dist > BN_TOL_DIST) && (dist < min_edge_dist)) {
@@ -618,7 +618,7 @@
}
void
-GetInteriorPnts(struct ON_Brep_CDT_State *s_cdt, int face_index)
+GetInteriorPoints(struct ON_Brep_CDT_State *s_cdt, int face_index)
{
double surface_width, surface_height;
@@ -880,6 +880,7 @@
std::queue<SPatch> *nq = &spq2;
int split_depth = 0;
+
while (!wq->empty()) {
SPatch sp = wq->front();
wq->pop();
@@ -896,6 +897,7 @@
nq = tq;
// Let the counter know we're going deeper
split_depth++;
+ std::cout << "split_depth: " << split_depth << "\n";
}
}
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