Improve readability (no 250+ char lines)

This commit is contained in:
Mael Rouxel-Labbé 2019-10-04 08:54:43 +02:00
parent 930fbb3280
commit d307df36ea
6 changed files with 198 additions and 83 deletions

View File

@ -171,7 +171,8 @@ public:
\brief A model of `BidirectionalIterator` to access the source points
\details An iterator becomes invalid if:
- the corresponding point is removed (either with `Surface_mesh_shortest_path::remove_source_point()` or `Surface_mesh_shortest_path::remove_all_source_points()`).
- the corresponding point is removed (either with `Surface_mesh_shortest_path::remove_source_point()`
or `Surface_mesh_shortest_path::remove_all_source_points()`).
- the structure is re-built (triggered by a shortest path query or a call to `Surface_mesh_shortest_path::build_sequence_tree()`).
- the structure is cleared (`Surface_mesh_shortest_path::clear()`).
@ -388,13 +389,15 @@ public:
std::size_t current_memory_usage() const
{
std::size_t baseUsage = m_rootNodes.size() * sizeof(Cone_tree_node*) + m_closestToVertices.size() * sizeof(Node_distance_pair);
std::size_t baseUsage = m_rootNodes.size() * sizeof(Cone_tree_node*)
+ m_closestToVertices.size() * sizeof(Node_distance_pair);
std::size_t finalUsage = baseUsage + sizeof(Cone_tree_node) * m_currentNodeCount;
for (std::size_t i = 0; i < m_faceOccupiers.size(); ++i)
{
finalUsage += (m_faceOccupiers[i].size() * sizeof(Cone_tree_node*)) + sizeof(std::vector<Cone_tree_node*>);
finalUsage += (m_faceOccupiers[i].size() * sizeof(Cone_tree_node*))
+ sizeof(std::vector<Cone_tree_node*>);
}
return finalUsage;
@ -402,11 +405,17 @@ public:
std::size_t peak_memory_usage() const
{
std::size_t baseUsage = m_rootNodes.size() * sizeof(Cone_tree_node*) + m_vertexOccupiers.size() * sizeof(Node_distance_pair) + m_closestToVertices.size() * sizeof(Node_distance_pair);
std::size_t baseUsage = m_rootNodes.size() * sizeof(Cone_tree_node*)
+ m_vertexOccupiers.size() * sizeof(Node_distance_pair)
+ m_closestToVertices.size() * sizeof(Node_distance_pair);
std::size_t peakNodeUsage = baseUsage + (sizeof(Cone_tree_node) * m_peakNodeCount) + ((sizeof(Cone_expansion_event) + sizeof(Cone_expansion_event*)) * m_queueAtPeakNodes);
std::size_t peakNodeUsage = baseUsage + (sizeof(Cone_tree_node) * m_peakNodeCount)
+ ((sizeof(Cone_expansion_event)
+ sizeof(Cone_expansion_event*)) * m_queueAtPeakNodes);
std::size_t peakQueueUsage = baseUsage + (sizeof(Cone_expansion_event) + (sizeof(Cone_expansion_event*)) * m_peakQueueSize) + (sizeof(Cone_tree_node) * m_nodesAtPeakQueue);
std::size_t peakQueueUsage = baseUsage
+ (sizeof(Cone_expansion_event) + (sizeof(Cone_expansion_event*)) * m_peakQueueSize)
+ (sizeof(Cone_tree_node) * m_nodesAtPeakQueue);
return std::max(peakNodeUsage, peakQueueUsage);
}
@ -452,17 +461,20 @@ private:
void node_deleted()
{
#if !defined(NDEBUG)
#if 1// !defined(NDEBUG)
--m_currentNodeCount;
#endif
}
Point_2 construct_barycenter_in_triangle_2(const Triangle_2& t, const Barycentric_coordinates& b) const
Point_2 construct_barycenter_in_triangle_2(const Triangle_2& t,
const Barycentric_coordinates& b) const
{
return construct_barycenter_in_triangle_2(t, b, m_traits);
}
static Point_2 construct_barycenter_in_triangle_2(const Triangle_2& t, const Barycentric_coordinates& b, const Traits& traits)
static Point_2 construct_barycenter_in_triangle_2(const Triangle_2& t,
const Barycentric_coordinates& b,
const Traits& traits)
{
typename Traits::Construct_vertex_2 cv2(traits.construct_vertex_2_object());
typename Traits::Construct_barycentric_coordinates_weight cbcw(traits.construct_barycentric_coordinates_weight_object());
@ -471,12 +483,15 @@ private:
return cb2(cv2(t, 0), cbcw(b, 0), cv2(t, 1), cbcw(b, 1), cv2(t, 2), cbcw(b, 2));
}
Point_3 construct_barycenter_in_triangle_3(const Triangle_3& t, const Barycentric_coordinates& b) const
Point_3 construct_barycenter_in_triangle_3(const Triangle_3& t,
const Barycentric_coordinates& b) const
{
return construct_barycenter_in_triangle_3(t, b, m_traits);
}
static Point_3 construct_barycenter_in_triangle_3(const Triangle_3& t, const Barycentric_coordinates& b, const Traits& traits)
static Point_3 construct_barycenter_in_triangle_3(const Triangle_3& t,
const Barycentric_coordinates& b,
const Traits& traits)
{
typename Traits::Construct_vertex_3 cv3(traits.construct_vertex_3_object());
typename Traits::Construct_barycentric_coordinates_weight cbcw(traits.construct_barycentric_coordinates_weight_object());
@ -574,21 +589,23 @@ private:
d2 = v2Distance.second;
d3 = v3Distance.second;
bool hasD1 = v1Distance.first != NULL && v1Distance.first != cone->parent();
bool hasD2 = v2Distance.first != NULL && v2Distance.first != cone->parent();
bool hasD3 = v3Distance.first != NULL && v3Distance.first != cone->parent();
const bool hasD1 = v1Distance.first != NULL && v1Distance.first != cone->parent();
const bool hasD2 = v2Distance.first != NULL && v2Distance.first != cone->parent();
const bool hasD3 = v3Distance.first != NULL && v3Distance.first != cone->parent();
if (hasD1 && (d + CGAL::approximate_sqrt(csd2(I, B)) > d1 + CGAL::approximate_sqrt(csd2(v1, B))))
{
if (m_debugOutput)
{
std::cout << "Filter: d + |I,B| > d1 + |v1,B|: " << std::endl;
std::cout << "v1 = " << v1Index << " , " << d1 << " , v2 = " << v2Index << " , " << d2 << " , v3 = " << v3Index << " , " << d3 << std::endl;
std::cout << "v1 = " << v1Index << " , " << d1 << " , v2 = " << v2Index
<< " , " << d2 << " , v3 = " << v3Index << " , " << d3 << std::endl;
std::cout << "d = " << d << std::endl;
std::cout << "v1,B = " << CGAL::approximate_sqrt(csd2(v1, B)) << std::endl;
std::cout << "I,B = " << CGAL::approximate_sqrt(csd2(I, B)) << std::endl;
std::cout << "I,A = " << CGAL::approximate_sqrt(csd2(I, A)) << std::endl;
std::cout << (d + CGAL::approximate_sqrt(csd2(I, B))) << " vs. " << (d1 + CGAL::approximate_sqrt(csd2(v1, B))) << std::endl;
std::cout << (d + CGAL::approximate_sqrt(csd2(I, B)))
<< " vs. " << (d1 + CGAL::approximate_sqrt(csd2(v1, B))) << std::endl;
}
return false;
@ -599,11 +616,13 @@ private:
if (m_debugOutput)
{
std::cout << "Filter: d + |I,A| > d2 + |v2,A|: " << std::endl;
std::cout << "v1 = " << v1Index << " , " << d1 << " , v2 = " << v2Index << " , " << d2 << " , v3 = " << v3Index << " , " << d3 << std::endl;
std::cout << "v1 = " << v1Index << " , " << d1 << " , v2 = " << v2Index
<< " , " << d2 << " , v3 = " << v3Index << " , " << d3 << std::endl;
std::cout << "d = " << d << std::endl;
std::cout << "v2,A = " << CGAL::approximate_sqrt(csd2(v2, A)) << std::endl;
std::cout << "I,A = " << CGAL::approximate_sqrt(csd2(I, A)) << std::endl;
std::cout << (d + CGAL::approximate_sqrt(csd2(I, A))) << " vs. " << (d2 + CGAL::approximate_sqrt(csd2(v2, A))) << std::endl;
std::cout << (d + CGAL::approximate_sqrt(csd2(I, A)))
<< " vs. " << (d2 + CGAL::approximate_sqrt(csd2(v2, A))) << std::endl;
}
return false;
@ -614,11 +633,13 @@ private:
if (m_debugOutput)
{
std::cout << "Filter: d + |I,A| > d3 + |v3,A|: " << std::endl;
std::cout << "v1 = " << v1Index << " , " << d1 << " , v2 = " << v2Index << " , " << d2 << " , v3 = " << v3Index << " , " << d3 << std::endl;
std::cout << "v1 = " << v1Index << " , " << d1 << " , v2 = " << v2Index
<< " , " << d2 << " , v3 = " << v3Index << " , " << d3 << std::endl;
std::cout << "d = " << d << std::endl;
std::cout << "v3,A = " << CGAL::approximate_sqrt(csd2(v3, A)) << std::endl;
std::cout << "I,A = " << CGAL::approximate_sqrt(csd2(I, A)) << std::endl;
std::cout << (d + CGAL::approximate_sqrt(csd2(I, A))) << " vs. " << (d3 + CGAL::approximate_sqrt(csd2(v3, A))) << std::endl;
std::cout << (d + CGAL::approximate_sqrt(csd2(I, A)))
<< " vs. " << (d3 + CGAL::approximate_sqrt(csd2(v3, A))) << std::endl;
}
return false;
@ -644,7 +665,10 @@ private:
{
Triangle_3 adjacentFace = triangle_from_halfedge(cone->left_child_edge());
Triangle_2 layoutFace = ft3as2(adjacentFace, 0, cone->left_child_base_segment());
Cone_tree_node* child = new Cone_tree_node(m_traits, m_graph, cone->left_child_edge(), layoutFace, cone->source_image(), cone->distance_from_source_to_root(), cv2(windowSegment, 0), cv2(windowSegment, 1), Cone_tree_node::INTERVAL);
Cone_tree_node* child = new Cone_tree_node(m_traits, m_graph, cone->left_child_edge(), layoutFace,
cone->source_image(), cone->distance_from_source_to_root(),
cv2(windowSegment, 0), cv2(windowSegment, 1),
Cone_tree_node::INTERVAL);
node_created();
cone->set_left_child(child);
process_node(child);
@ -672,7 +696,10 @@ private:
{
Triangle_3 adjacentFace = triangle_from_halfedge(cone->right_child_edge());
Triangle_2 layoutFace = ft3as2(adjacentFace, 0, cone->right_child_base_segment());
Cone_tree_node* child = new Cone_tree_node(m_traits, m_graph, cone->right_child_edge(), layoutFace, cone->source_image(), cone->distance_from_source_to_root(), cv2(windowSegment, 0), cv2(windowSegment, 1), Cone_tree_node::INTERVAL);
Cone_tree_node* child = new Cone_tree_node(m_traits, m_graph, cone->right_child_edge(), layoutFace,
cone->source_image(), cone->distance_from_source_to_root(),
cv2(windowSegment, 0), cv2(windowSegment, 1),
Cone_tree_node::INTERVAL);
node_created();
cone->set_right_child(child);
process_node(child);
@ -749,7 +776,9 @@ private:
if (m_debugOutput)
{
typename Traits::Construct_barycentric_coordinates_weight cbcw(m_traits.construct_barycentric_coordinates_weight_object());
std::cout << "\tFace Root Expansion: id = " << get(m_faceIndexMap, f) << " , Location = " << cbcw(faceLocation, 0) << " " << cbcw(faceLocation, 1) << " " << cbcw(faceLocation, 2) << " " << std::endl;
std::cout << "\tFace Root Expansion: id = " << get(m_faceIndexMap, f)
<< " , Location = " << cbcw(faceLocation, 0) << " " << cbcw(faceLocation, 1)
<< " " << cbcw(faceLocation, 2) << " " << std::endl;
}
for (std::size_t currentVertex = 0; currentVertex < 3; ++currentVertex)
@ -759,7 +788,9 @@ private:
const Barycentric_coordinates rotatedFaceLocation(shifted_coordinates(faceLocation, currentVertex));
const Point_2 sourcePoint(construct_barycenter_in_triangle_2(layoutFace, rotatedFaceLocation));
Cone_tree_node* child = new Cone_tree_node(m_traits, m_graph, current, layoutFace, sourcePoint, FT(0), cv2(layoutFace, 0), cv2(layoutFace, 2), Cone_tree_node::FACE_SOURCE);
Cone_tree_node* child = new Cone_tree_node(m_traits, m_graph, current, layoutFace, sourcePoint,
FT(0), cv2(layoutFace, 0), cv2(layoutFace, 2),
Cone_tree_node::FACE_SOURCE);
node_created();
faceRoot->push_middle_child(child);
@ -789,7 +820,9 @@ private:
if (m_debugOutput)
{
std::cout << "\tEdge Root Expansion: faceA = " << get(m_faceIndexMap, face(baseEdge, m_graph)) << " , faceB = " << get(m_faceIndexMap, face(opposite(baseEdge, m_graph), m_graph)) << " , t0 = " << t0 << " , t1 = " << t1 << std::endl;
std::cout << "\tEdge Root Expansion: faceA = " << get(m_faceIndexMap, face(baseEdge, m_graph))
<< " , faceB = " << get(m_faceIndexMap, face(opposite(baseEdge, m_graph), m_graph))
<< " , t0 = " << t0 << " , t1 = " << t1 << std::endl;
}
halfedge_descriptor baseEdges[2];
@ -822,7 +855,9 @@ private:
std::cout << "\t\tLocation = " << sourcePoints[side] << std::endl;
}
Cone_tree_node* mainChild = new Cone_tree_node(m_traits, m_graph, baseEdges[side], layoutFaces[side], sourcePoints[side], FT(0), cv2(layoutFaces[side], 0), cv2(layoutFaces[side], 1), Cone_tree_node::EDGE_SOURCE);
Cone_tree_node* mainChild = new Cone_tree_node(m_traits, m_graph, baseEdges[side], layoutFaces[side],
sourcePoints[side], FT(0), cv2(layoutFaces[side], 0),
cv2(layoutFaces[side], 1), Cone_tree_node::EDGE_SOURCE);
node_created();
edgeRoot->push_middle_child(mainChild);
process_node(mainChild);
@ -832,14 +867,16 @@ private:
/*
Create a 'source' node for each face surrounding the given vertex.
*/
void expand_vertex_root(vertex_descriptor vertex, Source_point_iterator sourcePointIt)
void expand_vertex_root(const vertex_descriptor vertex,
Source_point_iterator sourcePointIt)
{
if (m_debugOutput)
{
std::cout << "\tVertex Root Expansion: Vertex = " << get(m_vertexIndexMap, vertex) << std::endl;
}
Cone_tree_node* vertexRoot = new Cone_tree_node(m_traits, m_graph, m_rootNodes.size(), prev(halfedge(vertex, m_graph), m_graph));
Cone_tree_node* vertexRoot = new Cone_tree_node(m_traits, m_graph, m_rootNodes.size(),
prev(halfedge(vertex, m_graph), m_graph));
node_created();
m_rootNodes.push_back(std::make_pair(vertexRoot, sourcePointIt));
@ -894,7 +931,10 @@ private:
std::cout << std::endl;
}
Cone_tree_node* child = new Cone_tree_node(m_traits, m_graph, currentEdge, layoutFace, cv2(layoutFace, 1), distanceFromTargetToRoot, cv2(layoutFace, 0), cv2(layoutFace, 2), Cone_tree_node::VERTEX_SOURCE);
Cone_tree_node* child = new Cone_tree_node(m_traits, m_graph, currentEdge, layoutFace,
cv2(layoutFace, 1), distanceFromTargetToRoot,
cv2(layoutFace, 0), cv2(layoutFace, 2),
Cone_tree_node::VERTEX_SOURCE);
node_created();
parent->push_middle_child(child);
@ -1113,7 +1153,8 @@ private:
std::cout << "\tSource Image = " << node->source_image() << std::endl;
std::cout << "\tWindow Left = " << node->window_left() << std::endl;
std::cout << "\tWindow Right = " << node->window_right() << std::endl;
std::cout << "\t Has Left : " << (leftSide ? "yes" : "no") << " , Has Right : " << (rightSide ? "yes" : "no") << std::endl;
std::cout << "\t Has Left : " << (leftSide ? "yes" : "no") << " , Has Right : "
<< (rightSide ? "yes" : "no") << std::endl;
}
if (node->is_source_node() || (leftSide && rightSide))
@ -1338,7 +1379,8 @@ private:
}
else
{
bool result = clip_to_bounds(parent->left_child_base_segment(), parent->left_boundary(), parent->right_boundary(), leftWindow);
bool result = clip_to_bounds(parent->left_child_base_segment(), parent->left_boundary(),
parent->right_boundary(), leftWindow);
if (!result)
{
if (m_debugOutput)
@ -1349,14 +1391,17 @@ private:
}
}
FT distanceEstimate = parent->distance_from_source_to_root() + CGAL::approximate_sqrt(csd2(parent->source_image(), leftWindow));
FT distanceEstimate = parent->distance_from_source_to_root()
+ CGAL::approximate_sqrt(csd2(parent->source_image(), leftWindow));
if (m_debugOutput)
{
std::cout << "\tPushing Left Child, Segment = " << parent->left_child_base_segment() << " , clipped = " << leftWindow << " , Estimate = " << distanceEstimate << std::endl;
std::cout << "\tPushing Left Child, Segment = " << parent->left_child_base_segment()
<< " , clipped = " << leftWindow << " , Estimate = " << distanceEstimate << std::endl;
}
Cone_expansion_event* event = new Cone_expansion_event(parent, distanceEstimate, Cone_expansion_event::LEFT_CHILD, leftWindow);
Cone_expansion_event* event = new Cone_expansion_event(parent, distanceEstimate,
Cone_expansion_event::LEFT_CHILD, leftWindow);
parent->m_pendingLeftSubtree = event;
m_expansionPriqueue.push(event);
@ -1371,7 +1416,8 @@ private:
if (face(parent->right_child_edge(), m_graph) != Graph_traits::null_face())
{
Segment_2 rightWindow;
bool result = clip_to_bounds(parent->right_child_base_segment(), parent->left_boundary(), parent->right_boundary(), rightWindow);
bool result = clip_to_bounds(parent->right_child_base_segment(), parent->left_boundary(),
parent->right_boundary(), rightWindow);
if (!result)
{
@ -1382,14 +1428,17 @@ private:
return;
}
FT distanceEstimate = parent->distance_from_source_to_root() + CGAL::approximate_sqrt(csd2(parent->source_image(), rightWindow));
FT distanceEstimate = parent->distance_from_source_to_root()
+ CGAL::approximate_sqrt(csd2(parent->source_image(), rightWindow));
if (m_debugOutput)
{
std::cout << "\tPushing Right Child, Segment = " << parent->right_child_base_segment() << " , clipped = " << rightWindow << " , Estimate = " << distanceEstimate << std::endl;
std::cout << "\tPushing Right Child, Segment = " << parent->right_child_base_segment()
<< " , clipped = " << rightWindow << " , Estimate = " << distanceEstimate << std::endl;
}
Cone_expansion_event* event = new Cone_expansion_event(parent, distanceEstimate, Cone_expansion_event::RIGHT_CHILD, rightWindow);
Cone_expansion_event* event = new Cone_expansion_event(parent, distanceEstimate,
Cone_expansion_event::RIGHT_CHILD, rightWindow);
parent->m_pendingRightSubtree = event;
m_expansionPriqueue.push(event);
@ -1469,7 +1518,8 @@ private:
delete_node(node->pop_middle_child(), destruction);
}
// At the point of destruction, the `Triangle_mesh` referenced may have gone out of scope, we wish to distinguish between deletion with an assumed reference
// At the point of destruction, the `Triangle_mesh` referenced may have gone out of scope,
// we wish to distinguish between deletion with an assumed reference
// to the original `Triangle_mesh`, and deletion without
if (!node->is_root_node() && !destruction)
{
@ -1573,7 +1623,9 @@ private:
}
template <class Visitor>
void visit_shortest_path(Cone_tree_node* startNode, const Point_2& startLocation, Visitor& visitor)
void visit_shortest_path(Cone_tree_node* startNode,
const Point_2& startLocation,
Visitor& visitor)
{
typename Traits::Compute_parametric_distance_along_segment_2 parametric_distance_along_segment_2(m_traits.compute_parametric_distance_along_segment_2_object());
typename Traits::Construct_ray_2 construct_ray_2(m_traits.construct_ray_2_object());
@ -1624,10 +1676,13 @@ private:
std::cout << "Inside cone: " << (current->inside_window(currentLocation) ? "Yes" : "No") << std::endl;
std::cout << "Current Source: " << current->source_image() << std::endl;
std::cout << "Current Segment: " << entrySegment << std::endl;
std::cout << "Current Left Window: " << current->window_left() << " , " << m_traits.compute_parametric_distance_along_segment_2_object()(entrySegment.start(), entrySegment.end(), current->window_left()) << std::endl;
std::cout << "Current Right Window: " << current->window_right() << " , " << m_traits.compute_parametric_distance_along_segment_2_object()(entrySegment.start(), entrySegment.end(), current->window_right()) << std::endl;
std::cout << "Current Left Window: " << current->window_left() << " , "
<< m_traits.compute_parametric_distance_along_segment_2_object()(entrySegment.start(), entrySegment.end(), current->window_left()) << std::endl;
std::cout << "Current Right Window: " << current->window_right() << " , "
<< m_traits.compute_parametric_distance_along_segment_2_object()(entrySegment.start(), entrySegment.end(), current->window_right()) << std::endl;
std::cout << "Current Segment Intersection: " << *result << std::endl;
std::cout << "Edge: (" << get(m_vertexIndexMap, source(current->entry_edge(), m_graph)) << "," << get(m_vertexIndexMap, target(current->entry_edge(), m_graph)) << ") : " << t0 << std::endl;
std::cout << "Edge: (" << get(m_vertexIndexMap, source(current->entry_edge(), m_graph))
<< "," << get(m_vertexIndexMap, target(current->entry_edge(), m_graph)) << ") : " << t0 << std::endl;
}
visitor(current->entry_edge(), t0);
@ -1823,7 +1878,8 @@ private:
}
template <class InputIterator>
Source_point_iterator add_source_points_internal(InputIterator begin, InputIterator end, vertex_descriptor)
Source_point_iterator add_source_points_internal(InputIterator begin, InputIterator end,
const vertex_descriptor)
{
Source_point_iterator firstAdded;
@ -1875,7 +1931,9 @@ private:
for (boost::tie(current,end) = vertices(m_graph); current != end; ++current)
{
std::cout << "Vertex#" << numVertices << ": p = " << get(m_vertexPointMap,*current) << " , Saddle Vertex: " << (is_saddle_vertex(*current) ? "yes" : "no") << " , Boundary Vertex: " << (is_boundary_vertex(*current) ? "yes" : "no") << std::endl;
std::cout << "Vertex#" << numVertices << ": p = " << get(m_vertexPointMap,*current)
<< " , Saddle Vertex: " << (is_saddle_vertex(*current) ? "yes" : "no")
<< " , Boundary Vertex: " << (is_boundary_vertex(*current) ? "yes" : "no") << std::endl;
++numVertices;
}
}
@ -1920,7 +1978,8 @@ private:
{
if (m_debugOutput)
{
std::cout << "Root: " << get(m_faceIndexMap, it->first) << " , " << it->second[0] << " " << it->second[1] << " " << it->second[2] << " " << std::endl;
std::cout << "Root: " << get(m_faceIndexMap, it->first)
<< " , " << it->second[0] << " " << it->second[1] << " " << it->second[2] << " " << std::endl;
}
expand_root(it->first, it->second, Source_point_iterator(it));
@ -1950,7 +2009,9 @@ private:
case Cone_expansion_event::PSEUDO_SOURCE:
if (m_debugOutput)
{
std::cout << "PseudoSource Expansion: Parent = " << parent << " , Vertex = " << get(m_vertexIndexMap, event->m_parent->target_vertex()) << " , Distance = " << event->m_distanceEstimate << " , Level = " << event->m_parent->level() + 1 << std::endl;
std::cout << "PseudoSource Expansion: Parent = " << parent
<< " , Vertex = " << get(m_vertexIndexMap, event->m_parent->target_vertex())
<< " , Distance = " << event->m_distanceEstimate << " , Level = " << event->m_parent->level() + 1 << std::endl;
}
expand_pseudo_source(parent);
@ -1958,7 +2019,10 @@ private:
case Cone_expansion_event::LEFT_CHILD:
if (m_debugOutput)
{
std::cout << "Left Expansion: Parent = " << parent << " Edge = (" << get(m_vertexIndexMap, source(event->m_parent->left_child_edge(), m_graph)) << "," << get(m_vertexIndexMap, target(event->m_parent->left_child_edge(), m_graph)) << ") , Distance = " << event->m_distanceEstimate << " , Level = " << event->m_parent->level() + 1 << std::endl;
std::cout << "Left Expansion: Parent = " << parent
<< " Edge = (" << get(m_vertexIndexMap, source(event->m_parent->left_child_edge(), m_graph))
<< "," << get(m_vertexIndexMap, target(event->m_parent->left_child_edge(), m_graph))
<< ") , Distance = " << event->m_distanceEstimate << " , Level = " << event->m_parent->level() + 1 << std::endl;
}
expand_left_child(parent, event->m_windowSegment);
@ -1966,7 +2030,10 @@ private:
case Cone_expansion_event::RIGHT_CHILD:
if (m_debugOutput)
{
std::cout << "Right Expansion: Parent = " << parent << " , Edge = (" << get(m_vertexIndexMap, source(event->m_parent->right_child_edge(), m_graph)) << "," << get(m_vertexIndexMap, target(event->m_parent->right_child_edge(), m_graph)) << ") , Distance = " << event->m_distanceEstimate << " , Level = " << event->m_parent->level() + 1 << std::endl;
std::cout << "Right Expansion: Parent = " << parent
<< " , Edge = (" << get(m_vertexIndexMap, source(event->m_parent->right_child_edge(), m_graph))
<< "," << get(m_vertexIndexMap, target(event->m_parent->right_child_edge(), m_graph))
<< ") , Distance = " << event->m_distanceEstimate << " , Level = " << event->m_parent->level() + 1 << std::endl;
}
expand_right_child(parent, event->m_windowSegment);
@ -2029,9 +2096,11 @@ public:
/*!
\brief Creates a shortest paths object using `tm` as input.
Equivalent to `Surface_mesh_shortest_path(tm, get(boost::vertex_index, tm), get(boost::halfedge_index, tm), get(boost::face_index, tm), get(CGAL::vertex_point, tm), traits)`.
Equivalent to `Surface_mesh_shortest_path(tm, get(boost::vertex_index, tm), get(boost::halfedge_index, tm),
get(boost::face_index, tm), get(CGAL::vertex_point, tm), traits)`.
*/
Surface_mesh_shortest_path(const Triangle_mesh& tm, const Traits& traits = Traits())
Surface_mesh_shortest_path(Triangle_mesh& tm,
const Traits& traits = Traits())
: m_traits(traits)
, m_graph(const_cast<Triangle_mesh&>(tm))
, m_vertexIndexMap(get(boost::vertex_index, tm))
@ -2060,7 +2129,12 @@ public:
\param traits Optional instance of the traits class to use.
*/
Surface_mesh_shortest_path(const Triangle_mesh& tm, Vertex_index_map vertexIndexMap, Halfedge_index_map halfedgeIndexMap, Face_index_map faceIndexMap, Vertex_point_map vertexPointMap, const Traits& traits = Traits())
Surface_mesh_shortest_path(Triangle_mesh& tm,
Vertex_index_map vertexIndexMap,
Halfedge_index_map halfedgeIndexMap,
Face_index_map faceIndexMap,
Vertex_point_map vertexPointMap,
const Traits& traits = Traits())
: m_traits(traits)
, m_graph(const_cast<Triangle_mesh&>(tm))
, m_vertexIndexMap(vertexIndexMap)
@ -2149,7 +2223,8 @@ public:
until either `Surface_mesh_shortest_path::build_sequence_tree()` or
the first shortest path query is done.
\tparam InputIterator A `ForwardIterator` which dereferences to either `Surface_mesh_shortest_path::Face_location`, or `Surface_mesh_shortest_path::vertex_descriptor`.
\tparam InputIterator A `ForwardIterator` which dereferences to either `Surface_mesh_shortest_path::Face_location`,
or `Surface_mesh_shortest_path::vertex_descriptor`.
\param begin iterator to the first in the list of source point locations.
\param end iterator to one past the end of the list of source point locations.
@ -2191,7 +2266,8 @@ public:
*/
void remove_all_source_points()
{
m_deletedSourceLocations.splice(m_deletedSourceLocations.begin(), m_faceLocations, m_faceLocations.begin(), m_faceLocations.end());
m_deletedSourceLocations.splice(m_deletedSourceLocations.begin(), m_faceLocations,
m_faceLocations.begin(), m_faceLocations.end());
m_firstNewSourcePoint = m_faceLocations.end();
}
@ -2659,7 +2735,8 @@ public:
that accept a reference to an `AABB_tree` as input.
\details The following static overload is also available:
- `static Face_location locate(const Point_3& p, const Triangle_mesh& tm, Vertex_point_map vertexPointMap, const Traits& traits = Traits())`
- `static Face_location locate(const Point_3& p, const Triangle_mesh& tm,
Vertex_point_map vertexPointMap, const Traits& traits = Traits())`
\tparam AABBTraits A model of `AABBTraits` used to define a \cgal `AABB_tree`.
@ -2674,8 +2751,10 @@ public:
/// \cond
template <class AABBTraits>
static Face_location locate(const Point_3& location, const Triangle_mesh& tm,
Vertex_point_map vertexPointMap, const Traits& traits = Traits())
static Face_location locate(const Point_3& location,
const Triangle_mesh& tm,
Vertex_point_map vertexPointMap,
const Traits& traits = Traits())
{
AABB_tree<AABBTraits> tree;
build_aabb_tree(tm, tree, vertexPointMap);
@ -2688,7 +2767,8 @@ public:
\brief Returns the face location nearest to the given point.
\details The following static overload is also available:
- static Face_location locate(const Point_3& p, const AABB_tree<AABBTraits>& tree, const Triangle_mesh& tm, Vertex_point_map vertexPointMap, const Traits& traits = Traits())
- static Face_location locate(const Point_3& p, const AABB_tree<AABBTraits>& tree, const Triangle_mesh& tm,
Vertex_point_map vertexPointMap, const Traits& traits = Traits())
\tparam AABBTraits A model of `AABBTraits` used to define a \cgal `AABB_tree`.
@ -2696,7 +2776,8 @@ public:
\param tree A `AABB_tree` containing the triangular faces of the input surface mesh to perform the point location with
*/
template <class AABBTraits>
Face_location locate(const Point_3& p, const AABB_tree<AABBTraits>& tree) const
Face_location locate(const Point_3& p,
const AABB_tree<AABBTraits>& tree) const
{
return locate(p, tree, m_graph, m_vertexPointMap, m_traits);
}
@ -2704,7 +2785,11 @@ public:
/// \cond
template <class AABBTraits>
static Face_location locate(const Point_3& location, const AABB_tree<AABBTraits>& tree, const Triangle_mesh& tm, Vertex_point_map vertexPointMap, const Traits& traits = Traits())
static Face_location locate(const Point_3& location,
const AABB_tree<AABBTraits>& tree,
const Triangle_mesh& tm,
Vertex_point_map vertexPointMap,
const Traits& traits = Traits())
{
typename Traits::Construct_barycentric_coordinates_in_triangle_3 cbcit3(traits.construct_barycentric_coordinates_in_triangle_3_object());
typename AABB_tree<AABBTraits>::Point_and_primitive_id result = tree.closest_point_and_primitive(location);
@ -2739,8 +2824,10 @@ public:
/// \cond
template <class AABBTraits>
static Face_location locate(const Ray_3& ray, const Triangle_mesh& tm,
Vertex_point_map vertexPointMap, const Traits& traits = Traits())
static Face_location locate(const Ray_3& ray,
const Triangle_mesh& tm,
Vertex_point_map vertexPointMap,
const Traits& traits = Traits())
{
AABB_tree<AABBTraits> tree;
build_aabb_tree(tm, tree, vertexPointMap);
@ -2754,7 +2841,8 @@ public:
its source point.
\details The following static overload is also available:
- static Face_location locate(const Ray_3& ray, const AABB_tree<AABBTraits>& tree, const Triangle_mesh& tm, Vertex_point_map vertexPointMap, const Traits& traits = Traits())
- static Face_location locate(const Ray_3& ray, const AABB_tree<AABBTraits>& tree, const Triangle_mesh& tm,
Vertex_point_map vertexPointMap, const Traits& traits = Traits())
\tparam AABBTraits A model of `AABBTraits` used to define a \cgal `AABB_tree`.
@ -2762,7 +2850,8 @@ public:
\param tree A `AABB_tree` containing the triangular faces of the input surface mesh to perform the point location with
*/
template <class AABBTraits>
Face_location locate(const Ray_3& ray, const AABB_tree<AABBTraits>& tree) const
Face_location locate(const Ray_3& ray,
const AABB_tree<AABBTraits>& tree) const
{
return locate(ray, tree, m_graph, m_vertexPointMap, m_traits);
}
@ -2770,7 +2859,11 @@ public:
/// \cond
template <class AABBTraits>
static Face_location locate(const Ray_3& ray, const AABB_tree<AABBTraits>& tree, const Triangle_mesh& tm, Vertex_point_map vertexPointMap, const Traits& traits = Traits())
static Face_location locate(const Ray_3& ray,
const AABB_tree<AABBTraits>& tree,
const Triangle_mesh& tm,
Vertex_point_map vertexPointMap,
const Traits& traits = Traits())
{
typedef AABB_tree<AABBTraits> AABB_face_graph_tree;
typename Traits::Construct_barycentric_coordinates_in_triangle_3 cbcit3(traits.construct_barycentric_coordinates_in_triangle_3_object());
@ -2841,7 +2934,8 @@ public:
}
template <class AABBTraits>
void build_aabb_tree(AABB_tree<AABBTraits>& outTree, Vertex_point_map vertexPointMap) const
void build_aabb_tree(AABB_tree<AABBTraits>& outTree,
Vertex_point_map vertexPointMap) const
{
build_aabb_tree(m_graph, outTree, vertexPointMap);
}
@ -2849,7 +2943,8 @@ public:
/// \cond
template <class AABBTraits>
static void build_aabb_tree(const Triangle_mesh& tm, AABB_tree<AABBTraits>& outTree,
static void build_aabb_tree(const Triangle_mesh& tm,
AABB_tree<AABBTraits>& outTree,
Vertex_point_map vertexPointMap)
{
face_iterator facesStart, facesEnd;

View File

@ -58,7 +58,9 @@ public:
{
}
Construct_barycentric_coordinates_in_triangle_2(const Construct_barycentric_coordinates& cbc, const Construct_vector_2& cv2, const Compute_scalar_product_2& csp2)
Construct_barycentric_coordinates_in_triangle_2(const Construct_barycentric_coordinates& cbc,
const Construct_vector_2& cv2,
const Compute_scalar_product_2& csp2)
: m_construct_barycentric_coordinates(cbc)
, m_construct_vector_2(cv2)
, m_compute_scalar_product_2(csp2)
@ -109,7 +111,9 @@ public:
{
}
Construct_barycentric_coordinates_in_triangle_3(const Construct_barycentric_coordinates& cbc, const Construct_vector_3& cv3, const Compute_scalar_product_3& csp3)
Construct_barycentric_coordinates_in_triangle_3(const Construct_barycentric_coordinates& cbc,
const Construct_vector_3& cv3,
const Compute_scalar_product_3& csp3)
: m_construct_barycentric_coordinates(cbc)
, m_construct_vector_3(cv3)
, m_compute_scalar_product_3(csp3)
@ -194,7 +198,8 @@ public:
bool nonZero[3];
std::size_t numNonZero = 0;
if (cbcw(baryCoords, 0) + cbcw(baryCoords, 1) + cbcw(baryCoords, 2) > 1.00001 || cbcw(baryCoords, 0) + cbcw(baryCoords, 1) + cbcw(baryCoords, 2) < 0.99999)
if (cbcw(baryCoords, 0) + cbcw(baryCoords, 1) + cbcw(baryCoords, 2) > 1.00001 ||
cbcw(baryCoords, 0) + cbcw(baryCoords, 1) + cbcw(baryCoords, 2) < 0.99999)
{
return std::make_pair(BARYCENTRIC_COORDINATES_ON_UNBOUNDED_SIDE, 0);
}

View File

@ -542,7 +542,9 @@ public:
{
}
Is_saddle_vertex(const Kernel& kernel, const Construct_triangle_3_to_triangle_2_projection& pt3tt2, const Construct_triangle_3_along_segment_2_flattening& ft3as2)
Is_saddle_vertex(const Kernel& kernel,
const Construct_triangle_3_to_triangle_2_projection& pt3tt2,
const Construct_triangle_3_along_segment_2_flattening& ft3as2)
: m_orientation_2(kernel.orientation_2_object())
, m_construct_triangle_3(kernel.construct_triangle_3_object())
, m_construct_vertex_2(kernel.construct_vertex_2_object())

View File

@ -53,7 +53,9 @@ public:
bool m_cancelled;
public:
Cone_expansion_event(Cone_tree_node<Traits>* parent, const FT& distanceEstimate, Expansion_type type)
Cone_expansion_event(Cone_tree_node<Traits>* parent,
const FT& distanceEstimate,
Expansion_type type)
: m_parent(parent)
, m_distanceEstimate(distanceEstimate)
, m_type(type)
@ -61,7 +63,10 @@ public:
{
}
Cone_expansion_event(Cone_tree_node<Traits>* parent, const FT& distanceEstimate, Expansion_type type, const Segment_2& windowSegment)
Cone_expansion_event(Cone_tree_node<Traits>* parent,
const FT& distanceEstimate,
Expansion_type type,
const Segment_2& windowSegment)
: m_parent(parent)
, m_distanceEstimate(distanceEstimate)
, m_type(type)
@ -76,7 +81,8 @@ template <class Traits>
struct Cone_expansion_event_min_priority_queue_comparator
{
public:
bool operator () (const Cone_expansion_event<Traits>* lhs, const Cone_expansion_event<Traits>* rhs) const
bool operator () (const Cone_expansion_event<Traits>* lhs,
const Cone_expansion_event<Traits>* rhs) const
{
return rhs->m_distanceEstimate < lhs->m_distanceEstimate;
}

View File

@ -282,10 +282,13 @@ public:
bool inside_window(const Point_2& point) const
{
typename Traits::Orientation_2 orientation_2(m_traits.orientation_2_object());
Point_2 sourceImagePoint(source_image());
CGAL::Orientation leftOrientation = orientation_2(sourceImagePoint, m_windowLeft, point);
CGAL::Orientation rightOrientation = orientation_2(sourceImagePoint, m_windowRight, point);
return (leftOrientation == CGAL::RIGHT_TURN || leftOrientation == CGAL::COLLINEAR) && (rightOrientation == CGAL::LEFT_TURN || rightOrientation == CGAL::COLLINEAR);
return (leftOrientation == CGAL::RIGHT_TURN || leftOrientation == CGAL::COLLINEAR) &&
(rightOrientation == CGAL::LEFT_TURN || rightOrientation == CGAL::COLLINEAR);
}
Point_2 target_point() const

View File

@ -33,25 +33,30 @@ namespace Surface_mesh_shortest_paths_3 {
namespace internal {
template <class Triangle_3, class Triangle_mesh, class VertexPointMap>
Triangle_3 triangle_from_halfedge(typename boost::graph_traits<Triangle_mesh>::halfedge_descriptor edge, const Triangle_mesh& g, VertexPointMap vertexPointMap)
Triangle_3 triangle_from_halfedge(typename boost::graph_traits<Triangle_mesh>::halfedge_descriptor edge,
const Triangle_mesh& g,
const VertexPointMap vertexPointMap)
{
typedef typename boost::graph_traits<Triangle_mesh>::halfedge_descriptor halfedge_descriptor;
const halfedge_descriptor e0 = edge;
const halfedge_descriptor e1 = next(edge, g);
return Triangle_3(get(vertexPointMap, source(e0, g)), get(vertexPointMap, target(e0, g)), get(vertexPointMap, target(e1, g)));
return Triangle_3(get(vertexPointMap, source(e0, g)),
get(vertexPointMap, target(e0, g)),
get(vertexPointMap, target(e1, g)));
}
template <class Triangle_3, class Triangle_mesh>
Triangle_3 triangle_from_halfedge(typename boost::graph_traits<Triangle_mesh>::halfedge_descriptor edge, const Triangle_mesh& g)
Triangle_3 triangle_from_halfedge(typename boost::graph_traits<Triangle_mesh>::halfedge_descriptor edge,
const Triangle_mesh& g)
{
return triangle_from_halfedge<Triangle_3, Triangle_mesh, typename boost::property_map<Triangle_mesh, boost::vertex_point_t>::type>(edge, g, get(boost::vertex_point, g));
return triangle_from_halfedge<Triangle_3>(edge, g, get(boost::vertex_point, g));
}
template <class Triangle_mesh>
size_t edge_index(typename boost::graph_traits<Triangle_mesh>::halfedge_descriptor he, Triangle_mesh& p)
std::size_t edge_index(typename boost::graph_traits<Triangle_mesh>::halfedge_descriptor he,
const Triangle_mesh& p)
{
typedef typename boost::graph_traits<Triangle_mesh> Graph_traits;
typedef typename Graph_traits::face_descriptor face_descriptor;
@ -62,8 +67,7 @@ size_t edge_index(typename boost::graph_traits<Triangle_mesh>::halfedge_descript
const halfedge_descriptor start = halfedge(f, p);
halfedge_descriptor current = start;
size_t count = 0;
std::size_t count = 0;
while (current != he)
{
current = next(current, p);