Revision: 52508
http://brlcad.svn.sourceforge.net/brlcad/?rev=52508&view=rev
Author: starseeker
Date: 2012-09-20 01:57:19 +0000 (Thu, 20 Sep 2012)
Log Message:
-----------
try to improve flip determination logic in trim building - something still not
right, brep is invalid.
Modified Paths:
--------------
brlcad/trunk/src/librt/test_botpatches.cpp
Modified: brlcad/trunk/src/librt/test_botpatches.cpp
===================================================================
--- brlcad/trunk/src/librt/test_botpatches.cpp 2012-09-20 01:48:53 UTC (rev
52507)
+++ brlcad/trunk/src/librt/test_botpatches.cpp 2012-09-20 01:57:19 UTC (rev
52508)
@@ -1057,15 +1057,20 @@
std::queue<size_t> edge_queue;
edge_queue.push(*(curr_edges.begin()));
curr_edges.erase(edge_queue.front());
+ int vert_to_match = info->brep->m_E[edge_queue.front()].m_vi[0];
while (!edge_queue.empty()) {
size_t curr_edge = edge_queue.front();
edge_queue.pop();
loops[curr_loop].push_back(curr_edge);
ON_BrepEdge& edge = info->brep->m_E[curr_edge];
+ if(vert_to_match == edge.m_vi[0]) {
+ vert_to_match = edge.m_vi[1];
+ } else {
+ vert_to_match = edge.m_vi[0];
+ }
// use vert_to_edges to assemble other curves
std::set<size_t> candidate_edges;
- candidate_edges.insert(vert_to_edges[edge.m_vi[0]].begin(),
vert_to_edges[edge.m_vi[0]].end());
- candidate_edges.insert(vert_to_edges[edge.m_vi[1]].begin(),
vert_to_edges[edge.m_vi[1]].end());
+ candidate_edges.insert(vert_to_edges[vert_to_match].begin(),
vert_to_edges[vert_to_match].end());
candidate_edges.erase(curr_edge);
for (std::set<size_t>::iterator c_it = candidate_edges.begin();
c_it != candidate_edges.end(); c_it++) {
if (curr_edges.find(*c_it) != curr_edges.end()) {
@@ -1104,21 +1109,25 @@
std::vector<size_t>::iterator loop_it;
std::vector<size_t> *outer_loop_edges = &(loops[outer_loop]);
int vert_prev = -1;
- for(loop_it = outer_loop_edges->begin(); loop_it !=
outer_loop_edges->end(); loop_it++) {
+ std::cout << "Patch " << (*p_it).first << " outer loop edges: \n";
+ bool trim_rev = false;
+ for(loop_it = outer_loop_edges->begin(); loop_it !=
outer_loop_edges->end(); loop_it++) {
size_t curr_edge = (*loop_it);
// Will we need to flip the trim?
- bool trim_rev = false;
ON_BrepEdge& edge = info->brep->m_E[curr_edge];
- if(vert_prev == -1) {
- vert_prev = edge.m_vi[1];
- } else {
- if (vert_prev == edge.m_vi[0]) {
- vert_prev = edge.m_vi[1];
- } else {
- vert_prev = edge.m_vi[0];
- trim_rev = true;
- }
- }
+ if(vert_prev != -1) {
+ if (vert_prev == edge.m_vi[0]) {
+ trim_rev = false;
+ } else {
+ trim_rev = true;
+ }
+ }
+ if(trim_rev) {
+ vert_prev = edge.m_vi[0];
+ } else {
+ vert_prev = edge.m_vi[1];
+ }
+ std::cout << "edge verts: " << edge.m_vi[0] << "," << edge.m_vi[1]
<< " flip=" << trim_rev << "\n";
// get 3d curve for pullback
const ON_Curve* edge_curve = edge.EdgeCurveOf();
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
------------------------------------------------------------------------------
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://ad.doubleclick.net/clk;258768047;13503038;j?
http://info.appdynamics.com/FreeJavaPerformanceDownload.html
_______________________________________________
BRL-CAD Source Commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/brlcad-commits