Revision: 54047
          http://brlcad.svn.sourceforge.net/brlcad/?rev=54047&view=rev
Author:   starseeker
Date:     2012-12-11 22:33:42 +0000 (Tue, 11 Dec 2012)
Log Message:
-----------
Add a relatively simple test bot for subdivision - will use later for 
regression testing.

Modified Paths:
--------------
    brlcad/trunk/src/librt/CMakeLists.txt
    brlcad/trunk/src/librt/test_subdivision.cpp

Added Paths:
-----------
    brlcad/trunk/src/librt/subd_test_bot.asc

Modified: brlcad/trunk/src/librt/CMakeLists.txt
===================================================================
--- brlcad/trunk/src/librt/CMakeLists.txt       2012-12-11 21:26:55 UTC (rev 
54046)
+++ brlcad/trunk/src/librt/CMakeLists.txt       2012-12-11 22:33:42 UTC (rev 
54047)
@@ -252,6 +252,7 @@
   test_nurbsfit.cpp
   test_botpatches.cpp
   test_subdivision.cpp
+  subd_test_bot.asc
   prcomb.c
   primitives/bot/btg.h
   primitives/bot/g_bot_include.c

Added: brlcad/trunk/src/librt/subd_test_bot.asc
===================================================================
--- brlcad/trunk/src/librt/subd_test_bot.asc                            (rev 0)
+++ brlcad/trunk/src/librt/subd_test_bot.asc    2012-12-11 22:33:42 UTC (rev 
54047)
@@ -0,0 +1,3 @@
+title {sqrt(3) Subdivision Test Bot}
+units mm
+put {subd.bot} bot mode surface orient rh flags {} V { {0 2 0} {0.5 1 0 } {1 0 
0} {1 2 0} {1.5 1 0} {2 0 0} {1.5 3 0} {2 2 0} {2.5 1 0} {3 0 0} {2.5 3 0} {3 2 
0}} F { { 0 3 6 } { 3 7 6 } { 7 10 6 } { 7 11 10 } { 0 1 3 } { 1 4 3 } { 3 4 7 
} { 4 8 7 } { 7 8 11 } { 1 2 4 } { 2 5 4 } { 4 5 8 } { 5 9 8 } }


Property changes on: brlcad/trunk/src/librt/subd_test_bot.asc
___________________________________________________________________
Added: svn:mime-type
   + text/plain
Added: svn:eol-style
   + native

Modified: brlcad/trunk/src/librt/test_subdivision.cpp
===================================================================
--- brlcad/trunk/src/librt/test_subdivision.cpp 2012-12-11 21:26:55 UTC (rev 
54046)
+++ brlcad/trunk/src/librt/test_subdivision.cpp 2012-12-11 22:33:42 UTC (rev 
54047)
@@ -144,11 +144,12 @@
 }
 
 // Find outer edge segments and vertices
-void get_boundaries(struct Mesh_Info *mesh, std::set<size_t> *outer_pts, 
std::set<std::pair<size_t, size_t> > *outer_edges) {
+void get_boundaries(struct Mesh_Info *mesh, std::set<size_t> *outer_pts, 
std::set<std::pair<size_t, size_t> > *outer_edges, std::set<size_t> 
*outer_faces) {
     std::map<std::pair<size_t, size_t>, std::set<size_t> >::iterator e_it;
     for (e_it = mesh->edges_to_faces.begin(); 
e_it!=mesh->edges_to_faces.end(); e_it++) {
        if ((*e_it).second.size() == 1) {
            outer_edges->insert((*e_it).first);
+           outer_faces->insert(*(*e_it).second.begin());
            outer_pts->insert((*e_it).first.first);
            outer_pts->insert((*e_it).first.second);
        }
@@ -178,9 +179,11 @@
     get_all_edges(starting_mesh, &old_edges);
     std::set<std::pair<size_t, size_t> > outer_edges;
     std::set<size_t > outer_pts;
-    get_boundaries(starting_mesh, &outer_pts, &outer_edges);
+    std::set<size_t > outer_faces;
+    get_boundaries(starting_mesh, &outer_pts, &outer_edges, &outer_faces);
     std::cout << "outer pt count: " << outer_pts.size() << "\n";
     std::cout << "outer edge count: " << outer_edges.size() << "\n";
+    std::cout << "outer face count: " << outer_faces.size() << "\n";
 
     // Relax old points here
     for(size_t pcnt = 0; pcnt < (size_t)starting_mesh->points_p0.Count(); 
pcnt++) {
@@ -220,6 +223,9 @@
                    std::set<size_t> curr_faces = 
starting_mesh->edges_to_faces[edge];
                    curr_faces.erase((*f_it).first);
                    size_t q1 = 
starting_mesh->index_in_next[*curr_faces.begin()];
+                    if (outer_faces.find(q0) != outer_faces.end() && 
outer_faces.find(q1) != outer_faces.end()) {
+                       std::cout << "Got two edge faces\n";
+                    }
                    mesh_add_face((*e_it).first, q1, q0, face_cnt, mesh);
                    face_cnt++;
                    mesh_add_face((*e_it).second, q0, q1, face_cnt, mesh);

This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.


------------------------------------------------------------------------------
LogMeIn Rescue: Anywhere, Anytime Remote support for IT. Free Trial
Remotely access PCs and mobile devices and provide instant support
Improve your efficiency, and focus on delivering more value-add services
Discover what IT Professionals Know. Rescue delivers
http://p.sf.net/sfu/logmein_12329d2d
_______________________________________________
BRL-CAD Source Commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/brlcad-commits

Reply via email to