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

Reply via email to