mirror of https://github.com/CGAL/cgal
remove the need to keep a reference to the input range
This commit is contained in:
parent
2a91d6f35b
commit
d7a339d621
|
|
@ -150,7 +150,6 @@ namespace Point_set {
|
|||
K_neighbor_query(
|
||||
const InputRange& input_range,
|
||||
const CGAL_NP_CLASS& np = parameters::default_values()) :
|
||||
m_input_range(input_range),
|
||||
m_ref_gen(input_range.begin()),
|
||||
m_point_map(Point_set_processing_3_np_helper<InputRange, CGAL_NP_CLASS, PointMap>::get_const_point_map(input_range, np)),
|
||||
m_deref_pmap(m_point_map),
|
||||
|
|
@ -211,7 +210,6 @@ namespace Point_set {
|
|||
/// \endcond
|
||||
|
||||
private:
|
||||
const Input_range& m_input_range;
|
||||
internal::reference_iterator_generator<typename Input_range::const_iterator> m_ref_gen;
|
||||
std::vector<Item> m_referenced_input_range;
|
||||
const Point_map m_point_map;
|
||||
|
|
|
|||
|
|
@ -186,7 +186,6 @@ namespace Point_set {
|
|||
Least_squares_circle_fit_region(
|
||||
const InputRange& input_range,
|
||||
const CGAL_NP_CLASS& np = parameters::default_values()) :
|
||||
m_input_range(input_range),
|
||||
m_point_map(Point_set_processing_3_np_helper<InputRange, CGAL_NP_CLASS,PointMap,NormalMap>::get_const_point_map(input_range, np)),
|
||||
m_normal_map(Point_set_processing_3_np_helper<InputRange, CGAL_NP_CLASS,PointMap,NormalMap>::get_normal_map(input_range, np)),
|
||||
m_traits(parameters::choose_parameter(parameters::get_parameter(
|
||||
|
|
@ -375,7 +374,6 @@ namespace Point_set {
|
|||
/// \endcond
|
||||
|
||||
private:
|
||||
const Input_range& m_input_range;
|
||||
const Point_map m_point_map;
|
||||
const Normal_map m_normal_map;
|
||||
const GeomTraits m_traits;
|
||||
|
|
|
|||
|
|
@ -114,7 +114,6 @@ namespace Point_set {
|
|||
const InputRange& input_range,
|
||||
NeighborQuery& neighbor_query,
|
||||
const CGAL_NP_CLASS& np = parameters::default_values()) :
|
||||
m_input_range(input_range),
|
||||
m_neighbor_query(neighbor_query),
|
||||
m_point_map(Point_set_processing_3_np_helper<InputRange, CGAL_NP_CLASS, PointMap>::get_const_point_map(input_range, np)),
|
||||
m_traits(parameters::choose_parameter(parameters::get_parameter(
|
||||
|
|
@ -122,13 +121,13 @@ namespace Point_set {
|
|||
|
||||
CGAL_precondition(input_range.size() > 0);
|
||||
|
||||
m_ordered.resize(m_input_range.size());
|
||||
m_ordered.resize(input_range.size());
|
||||
|
||||
std::size_t index = 0;
|
||||
for (auto it = m_input_range.begin(); it != m_input_range.end(); it++)
|
||||
for (auto it = input_range.begin(); it != input_range.end(); it++)
|
||||
m_ordered[index++] = it;
|
||||
|
||||
m_scores.resize(m_input_range.size());
|
||||
m_scores.resize(input_range.size());
|
||||
}
|
||||
|
||||
/// @}
|
||||
|
|
@ -145,11 +144,11 @@ namespace Point_set {
|
|||
CGAL_precondition(m_scores.size() > 0);
|
||||
Compare_scores cmp(m_scores);
|
||||
|
||||
std::vector<std::size_t> order(m_input_range.size());
|
||||
std::vector<std::size_t> order(m_ordered.size());
|
||||
std::iota(order.begin(), order.end(), 0);
|
||||
std::sort(order.begin(), order.end(), cmp);
|
||||
|
||||
order.resize(m_input_range.size() - seed_cutoff);
|
||||
order.resize(m_ordered.size() - seed_cutoff);
|
||||
|
||||
std::vector<Item> tmp(order.size());
|
||||
for (std::size_t i = 0; i < order.size(); i++)
|
||||
|
|
@ -172,7 +171,6 @@ namespace Point_set {
|
|||
/// @}
|
||||
|
||||
private:
|
||||
const Input_range& m_input_range;
|
||||
Neighbor_query& m_neighbor_query;
|
||||
const Point_map m_point_map;
|
||||
const Traits m_traits;
|
||||
|
|
@ -184,10 +182,10 @@ namespace Point_set {
|
|||
std::vector<Item> neighbors;
|
||||
std::size_t idx = 0;
|
||||
std::size_t seed_cutoff = 0;
|
||||
for (auto it = m_input_range.begin(); it != m_input_range.end(); it++) {
|
||||
for (const Item& item :m_ordered) {
|
||||
neighbors.clear();
|
||||
m_neighbor_query(it, neighbors);
|
||||
neighbors.push_back(it);
|
||||
m_neighbor_query(item, neighbors);
|
||||
neighbors.push_back(item);
|
||||
|
||||
m_scores[idx] = internal::create_circle_2(
|
||||
neighbors, m_point_map, m_traits, true).second;
|
||||
|
|
|
|||
|
|
@ -187,7 +187,6 @@ namespace Point_set {
|
|||
Least_squares_cylinder_fit_region(
|
||||
const InputRange& input_range,
|
||||
const CGAL_NP_CLASS& np = parameters::default_values()) :
|
||||
m_input_range(input_range),
|
||||
m_point_map(Point_set_processing_3_np_helper<InputRange, CGAL_NP_CLASS,PointMap,NormalMap>::get_const_point_map(input_range, np)),
|
||||
m_normal_map(Point_set_processing_3_np_helper<InputRange, CGAL_NP_CLASS,PointMap,NormalMap>::get_normal_map(input_range, np)),
|
||||
m_traits(parameters::choose_parameter(parameters::get_parameter(
|
||||
|
|
@ -384,7 +383,6 @@ namespace Point_set {
|
|||
/// \endcond
|
||||
|
||||
private:
|
||||
const Input_range& m_input_range;
|
||||
const Point_map m_point_map;
|
||||
const Normal_map m_normal_map;
|
||||
const GeomTraits m_traits;
|
||||
|
|
|
|||
|
|
@ -125,7 +125,6 @@ namespace Point_set {
|
|||
const InputRange& input_range,
|
||||
NeighborQuery& neighbor_query,
|
||||
const CGAL_NP_CLASS& np = parameters::default_values()) :
|
||||
m_input_range(input_range),
|
||||
m_neighbor_query(neighbor_query),
|
||||
m_point_map(Point_set_processing_3_np_helper<InputRange, CGAL_NP_CLASS, PointMap, NormalMap>::get_const_point_map(input_range, np)),
|
||||
m_normal_map(Point_set_processing_3_np_helper<InputRange, CGAL_NP_CLASS, PointMap, NormalMap>::get_normal_map(input_range, np)),
|
||||
|
|
@ -134,13 +133,13 @@ namespace Point_set {
|
|||
|
||||
CGAL_precondition(input_range.size() > 0);
|
||||
|
||||
m_ordered.resize(m_input_range.size());
|
||||
m_ordered.resize(input_range.size());
|
||||
|
||||
std::size_t index = 0;
|
||||
for (auto it = m_input_range.begin(); it != m_input_range.end(); it++)
|
||||
for (auto it = input_range.begin(); it != input_range.end(); it++)
|
||||
m_ordered[index++] = it;
|
||||
|
||||
m_scores.resize(m_input_range.size());
|
||||
m_scores.resize(input_range.size());
|
||||
}
|
||||
|
||||
/// @}
|
||||
|
|
@ -156,11 +155,11 @@ namespace Point_set {
|
|||
CGAL_postcondition(m_scores.size() > 0);
|
||||
Compare_scores cmp(m_scores);
|
||||
|
||||
std::vector<std::size_t> order(m_input_range.size());
|
||||
std::vector<std::size_t> order(m_ordered.size());
|
||||
std::iota(order.begin(), order.end(), 0);
|
||||
std::sort(order.begin(), order.end(), cmp);
|
||||
|
||||
order.resize(m_input_range.size() - seed_cutoff);
|
||||
order.resize(m_ordered.size() - seed_cutoff);
|
||||
|
||||
std::vector<Item> tmp(order.size());
|
||||
for (std::size_t i = 0; i < order.size(); i++)
|
||||
|
|
@ -183,7 +182,6 @@ namespace Point_set {
|
|||
/// @}
|
||||
|
||||
private:
|
||||
const Input_range& m_input_range;
|
||||
Neighbor_query& m_neighbor_query;
|
||||
const Point_map m_point_map;
|
||||
const Normal_map m_normal_map;
|
||||
|
|
@ -196,10 +194,10 @@ namespace Point_set {
|
|||
std::vector<Item> neighbors;
|
||||
std::size_t idx = 0;
|
||||
std::size_t seed_cutoff = 0;
|
||||
for (auto it = m_input_range.begin(); it != m_input_range.end(); it++) {
|
||||
for (const Item& item : m_ordered) {
|
||||
neighbors.clear();
|
||||
m_neighbor_query(it, neighbors);
|
||||
neighbors.push_back(it);
|
||||
m_neighbor_query(item, neighbors);
|
||||
neighbors.push_back(item);
|
||||
|
||||
m_scores[idx] = -internal::create_cylinder(
|
||||
neighbors, m_point_map, m_normal_map, m_traits).second;
|
||||
|
|
|
|||
|
|
@ -161,7 +161,6 @@ namespace Point_set {
|
|||
Least_squares_line_fit_region(
|
||||
const InputRange& input_range,
|
||||
const CGAL_NP_CLASS& np = parameters::default_values()) :
|
||||
m_input_range(input_range),
|
||||
m_point_map(Point_set_processing_3_np_helper<InputRange, CGAL_NP_CLASS, PointMap, NormalMap>::get_const_point_map(input_range, np)),
|
||||
m_normal_map(Point_set_processing_3_np_helper<InputRange, CGAL_NP_CLASS, PointMap, NormalMap>::get_normal_map(input_range, np)),
|
||||
m_traits(parameters::choose_parameter(parameters::get_parameter(
|
||||
|
|
@ -359,7 +358,6 @@ namespace Point_set {
|
|||
/// \endcond
|
||||
|
||||
private:
|
||||
const Input_range& m_input_range;
|
||||
const Point_map m_point_map;
|
||||
const Normal_map m_normal_map;
|
||||
const GeomTraits m_traits;
|
||||
|
|
|
|||
|
|
@ -114,7 +114,6 @@ namespace Point_set {
|
|||
const InputRange& input_range,
|
||||
NeighborQuery& neighbor_query,
|
||||
const CGAL_NP_CLASS& np = parameters::default_values()) :
|
||||
m_input_range(input_range),
|
||||
m_neighbor_query(neighbor_query),
|
||||
m_point_map(Point_set_processing_3_np_helper<InputRange, CGAL_NP_CLASS, PointMap>::get_const_point_map(input_range, np)),
|
||||
m_traits(parameters::choose_parameter(parameters::get_parameter(
|
||||
|
|
@ -122,13 +121,13 @@ namespace Point_set {
|
|||
|
||||
CGAL_precondition(input_range.size() > 0);
|
||||
|
||||
m_ordered.resize(m_input_range.size());
|
||||
m_ordered.resize(input_range.size());
|
||||
|
||||
std::size_t index = 0;
|
||||
for (auto it = m_input_range.begin(); it != m_input_range.end(); it++)
|
||||
for (auto it = input_range.begin(); it != input_range.end(); it++)
|
||||
m_ordered[index++] = it;
|
||||
|
||||
m_scores.resize(m_input_range.size());
|
||||
m_scores.resize(input_range.size());
|
||||
}
|
||||
|
||||
/// @}
|
||||
|
|
@ -144,12 +143,12 @@ namespace Point_set {
|
|||
CGAL_precondition(m_scores.size() > 0);
|
||||
Compare_scores cmp(m_scores);
|
||||
|
||||
std::vector<std::size_t> order(m_input_range.size());
|
||||
std::vector<std::size_t> order(m_ordered.size());
|
||||
std::iota(order.begin(), order.end(), 0);
|
||||
std::sort(order.begin(), order.end(), cmp);
|
||||
|
||||
std::vector<Item> tmp(m_input_range.size());
|
||||
for (std::size_t i = 0; i < m_input_range.size(); i++)
|
||||
std::vector<Item> tmp(m_ordered.size());
|
||||
for (std::size_t i = 0; i < m_ordered.size(); i++)
|
||||
tmp[i] = m_ordered[order[i]];
|
||||
|
||||
m_ordered.swap(tmp);
|
||||
|
|
@ -169,7 +168,6 @@ namespace Point_set {
|
|||
/// @}
|
||||
|
||||
private:
|
||||
const Input_range& m_input_range;
|
||||
Neighbor_query& m_neighbor_query;
|
||||
const Point_map m_point_map;
|
||||
const Traits m_traits;
|
||||
|
|
@ -180,10 +178,10 @@ namespace Point_set {
|
|||
|
||||
std::vector<Item> neighbors;
|
||||
std::size_t idx = 0;
|
||||
for (auto it = m_input_range.begin(); it != m_input_range.end(); it++) {
|
||||
for (const Item& item : m_ordered) {
|
||||
neighbors.clear();
|
||||
m_neighbor_query(it, neighbors);
|
||||
neighbors.push_back(it);
|
||||
m_neighbor_query(item, neighbors);
|
||||
neighbors.push_back(item);
|
||||
m_scores[idx++] = internal::create_line_2(
|
||||
neighbors, m_point_map, m_traits).second;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -161,7 +161,6 @@ namespace Point_set {
|
|||
Least_squares_plane_fit_region(
|
||||
const InputRange& input_range,
|
||||
const CGAL_NP_CLASS& np = parameters::default_values()) :
|
||||
m_input_range(input_range),
|
||||
m_point_map(Point_set_processing_3_np_helper<InputRange, CGAL_NP_CLASS,PointMap,NormalMap>::get_const_point_map(input_range, np)),
|
||||
m_normal_map(Point_set_processing_3_np_helper<InputRange, CGAL_NP_CLASS,PointMap,NormalMap>::get_normal_map(input_range, np)),
|
||||
m_traits(parameters::choose_parameter(parameters::get_parameter(
|
||||
|
|
@ -358,7 +357,6 @@ namespace Point_set {
|
|||
/// \endcond
|
||||
|
||||
private:
|
||||
const Input_range& m_input_range;
|
||||
const Point_map m_point_map;
|
||||
const Normal_map m_normal_map;
|
||||
const GeomTraits m_traits;
|
||||
|
|
|
|||
|
|
@ -114,7 +114,6 @@ namespace Point_set {
|
|||
const InputRange& input_range,
|
||||
NeighborQuery& neighbor_query,
|
||||
const CGAL_NP_CLASS& np = parameters::default_values()) :
|
||||
m_input_range(input_range),
|
||||
m_neighbor_query(neighbor_query),
|
||||
m_point_map(Point_set_processing_3_np_helper<InputRange, CGAL_NP_CLASS, PointMap>::get_const_point_map(input_range, np)),
|
||||
m_traits(parameters::choose_parameter(parameters::get_parameter(
|
||||
|
|
@ -122,13 +121,13 @@ namespace Point_set {
|
|||
|
||||
CGAL_precondition(input_range.size() > 0);
|
||||
|
||||
m_ordered.resize(m_input_range.size());
|
||||
m_ordered.resize(input_range.size());
|
||||
|
||||
std::size_t index = 0;
|
||||
for (auto it = m_input_range.begin(); it != m_input_range.end(); it++)
|
||||
for (auto it = input_range.begin(); it != input_range.end(); it++)
|
||||
m_ordered[index++] = it;
|
||||
|
||||
m_scores.resize(m_input_range.size());
|
||||
m_scores.resize(input_range.size());
|
||||
}
|
||||
|
||||
/// @}
|
||||
|
|
@ -144,11 +143,11 @@ namespace Point_set {
|
|||
CGAL_precondition(m_scores.size() > 0);
|
||||
Compare_scores cmp(m_scores);
|
||||
|
||||
std::vector<std::size_t> order(m_input_range.size());
|
||||
std::vector<std::size_t> order(m_ordered.size());
|
||||
std::iota(order.begin(), order.end(), 0);
|
||||
std::sort(order.begin(), order.end(), cmp);
|
||||
std::vector<Item> tmp(m_input_range.size());
|
||||
for (std::size_t i = 0; i < m_input_range.size(); i++)
|
||||
std::vector<Item> tmp(m_ordered.size());
|
||||
for (std::size_t i = 0; i < m_ordered.size(); i++)
|
||||
tmp[i] = m_ordered[order[i]];
|
||||
|
||||
m_ordered.swap(tmp);
|
||||
|
|
@ -168,7 +167,6 @@ namespace Point_set {
|
|||
/// @}
|
||||
|
||||
private:
|
||||
const Input_range& m_input_range;
|
||||
Neighbor_query& m_neighbor_query;
|
||||
const Point_map m_point_map;
|
||||
const Traits m_traits;
|
||||
|
|
@ -180,10 +178,10 @@ namespace Point_set {
|
|||
|
||||
std::vector<Item> neighbors;
|
||||
std::size_t idx = 0;
|
||||
for (auto it = m_input_range.begin(); it != m_input_range.end(); it++) {
|
||||
for (const Item& item : m_ordered) {
|
||||
neighbors.clear();
|
||||
m_neighbor_query(it, neighbors);
|
||||
neighbors.push_back(it);
|
||||
m_neighbor_query(item, neighbors);
|
||||
neighbors.push_back(item);
|
||||
|
||||
m_scores[idx++] = internal::create_plane(
|
||||
neighbors, m_point_map, m_traits).second;
|
||||
|
|
|
|||
|
|
@ -175,7 +175,6 @@ g
|
|||
Least_squares_sphere_fit_region(
|
||||
const InputRange& input_range,
|
||||
const CGAL_NP_CLASS& np = parameters::default_values()) :
|
||||
m_input_range(input_range),
|
||||
m_point_map(Point_set_processing_3_np_helper<InputRange, CGAL_NP_CLASS,PointMap,NormalMap>::get_const_point_map(input_range, np)),
|
||||
m_normal_map(Point_set_processing_3_np_helper<InputRange, CGAL_NP_CLASS,PointMap,NormalMap>::get_normal_map(input_range, np)),
|
||||
m_traits(parameters::choose_parameter(parameters::get_parameter(
|
||||
|
|
@ -365,7 +364,6 @@ g
|
|||
/// \endcond
|
||||
|
||||
private:
|
||||
const Input_range& m_input_range;
|
||||
const Point_map m_point_map;
|
||||
const Normal_map m_normal_map;
|
||||
const GeomTraits m_traits;
|
||||
|
|
|
|||
|
|
@ -114,7 +114,6 @@ namespace Point_set {
|
|||
const InputRange& input_range,
|
||||
NeighborQuery& neighbor_query,
|
||||
const CGAL_NP_CLASS& np = parameters::default_values()) :
|
||||
m_input_range(input_range),
|
||||
m_neighbor_query(neighbor_query),
|
||||
m_point_map(Point_set_processing_3_np_helper<InputRange, CGAL_NP_CLASS,PointMap>::get_const_point_map(input_range, np)),
|
||||
m_traits(parameters::choose_parameter(parameters::get_parameter(
|
||||
|
|
@ -122,13 +121,13 @@ namespace Point_set {
|
|||
|
||||
CGAL_precondition(input_range.size() > 0);
|
||||
|
||||
m_ordered.resize(m_input_range.size());
|
||||
m_ordered.resize(input_range.size());
|
||||
|
||||
std::size_t index = 0;
|
||||
for (auto it = m_input_range.begin(); it != m_input_range.end(); it++)
|
||||
for (auto it = input_range.begin(); it != input_range.end(); it++)
|
||||
m_ordered[index++] = it;
|
||||
|
||||
m_scores.resize(m_input_range.size());
|
||||
m_scores.resize(input_range.size());
|
||||
}
|
||||
|
||||
/// @}
|
||||
|
|
@ -144,11 +143,11 @@ namespace Point_set {
|
|||
CGAL_postcondition(m_scores.size() > 0);
|
||||
Compare_scores cmp(m_scores);
|
||||
|
||||
std::vector<std::size_t> order(m_input_range.size());
|
||||
std::vector<std::size_t> order(m_ordered.size());
|
||||
std::iota(order.begin(), order.end(), 0);
|
||||
std::sort(order.begin(), order.end(), cmp);
|
||||
|
||||
order.resize(m_input_range.size() - seed_cutoff);
|
||||
order.resize(m_ordered.size() - seed_cutoff);
|
||||
|
||||
std::vector<Item> tmp(order.size());
|
||||
for (std::size_t i = 0; i < order.size(); i++)
|
||||
|
|
@ -171,7 +170,6 @@ namespace Point_set {
|
|||
/// @}
|
||||
|
||||
private:
|
||||
const Input_range& m_input_range;
|
||||
Neighbor_query& m_neighbor_query;
|
||||
const Point_map m_point_map;
|
||||
const Traits m_traits;
|
||||
|
|
@ -183,10 +181,10 @@ namespace Point_set {
|
|||
std::vector<Item> neighbors;
|
||||
std::size_t idx = 0;
|
||||
std::size_t seed_cutoff = 0;
|
||||
for (auto it = m_input_range.begin(); it != m_input_range.end(); it++) {
|
||||
for (const Item& item : m_ordered) {
|
||||
neighbors.clear();
|
||||
m_neighbor_query(it, neighbors);
|
||||
neighbors.push_back(it);
|
||||
m_neighbor_query(item, neighbors);
|
||||
neighbors.push_back(item);
|
||||
|
||||
m_scores[idx] = internal::create_sphere(
|
||||
neighbors, m_point_map, m_traits, true).second;
|
||||
|
|
|
|||
|
|
@ -134,7 +134,6 @@ public:
|
|||
Sphere_neighbor_query(
|
||||
const InputRange& input_range,
|
||||
const CGAL_NP_CLASS& np = parameters::default_values()) :
|
||||
m_input_range(input_range),
|
||||
m_ref_gen(input_range.begin()),
|
||||
m_point_map(Point_set_processing_3_np_helper<InputRange, CGAL_NP_CLASS, PointMap>::get_const_point_map(input_range, np)),
|
||||
m_deref_pmap(m_point_map),
|
||||
|
|
@ -200,7 +199,6 @@ public:
|
|||
/// \endcond
|
||||
|
||||
private:
|
||||
const Input_range& m_input_range;
|
||||
internal::reference_iterator_generator<typename Input_range::const_iterator> m_ref_gen;
|
||||
const Point_map m_point_map;
|
||||
const Dereference_pmap m_deref_pmap;
|
||||
|
|
|
|||
|
|
@ -162,7 +162,6 @@ namespace Polyline {
|
|||
Least_squares_line_fit_region(
|
||||
const InputRange& input_range,
|
||||
const NamedParameters& np = parameters::default_values()) :
|
||||
m_input_range(input_range),
|
||||
m_point_map(parameters::choose_parameter(parameters::get_parameter(
|
||||
np, internal_np::point_map), PointMap())),
|
||||
m_traits(parameters::choose_parameter(parameters::get_parameter(
|
||||
|
|
@ -346,7 +345,6 @@ namespace Polyline {
|
|||
/// \endcond
|
||||
|
||||
private:
|
||||
const Input_range& m_input_range;
|
||||
const Point_map m_point_map;
|
||||
const Traits m_traits;
|
||||
const Polyline_traits m_polyline_traits;
|
||||
|
|
|
|||
|
|
@ -119,7 +119,6 @@ namespace Polyline {
|
|||
const InputRange& input_range,
|
||||
NeighborQuery& neighbor_query,
|
||||
const NamedParameters& np = parameters::default_values()) :
|
||||
m_input_range(input_range),
|
||||
m_neighbor_query(neighbor_query),
|
||||
m_point_map(parameters::choose_parameter(parameters::get_parameter(
|
||||
np, internal_np::point_map), PointMap())),
|
||||
|
|
@ -130,13 +129,13 @@ namespace Polyline {
|
|||
|
||||
CGAL_precondition(input_range.size() > 0);
|
||||
|
||||
m_ordered.resize(m_input_range.size());
|
||||
m_ordered.resize(input_range.size());
|
||||
|
||||
std::size_t index = 0;
|
||||
for (auto it = m_input_range.begin(); it != m_input_range.end(); it++)
|
||||
for (auto it = input_range.begin(); it != input_range.end(); it++)
|
||||
m_ordered[index++] = it;
|
||||
|
||||
m_scores.resize(m_input_range.size());
|
||||
m_scores.resize(input_range.size());
|
||||
}
|
||||
|
||||
/// @}
|
||||
|
|
@ -152,12 +151,12 @@ namespace Polyline {
|
|||
CGAL_precondition(m_scores.size() > 0);
|
||||
Compare_scores cmp(m_scores);
|
||||
|
||||
std::vector<std::size_t> order(m_input_range.size());
|
||||
std::vector<std::size_t> order(m_ordered.size());
|
||||
std::iota(order.begin(), order.end(), 0);
|
||||
std::sort(order.begin(), order.end(), cmp);
|
||||
|
||||
std::vector<Item> tmp(m_input_range.size());
|
||||
for (std::size_t i = 0; i < m_input_range.size(); i++)
|
||||
std::vector<Item> tmp(m_ordered.size());
|
||||
for (std::size_t i = 0; i < m_ordered.size(); i++)
|
||||
tmp[i] = m_ordered[order[i]];
|
||||
|
||||
m_ordered.swap(tmp);
|
||||
|
|
@ -177,7 +176,6 @@ namespace Polyline {
|
|||
/// @}
|
||||
|
||||
private:
|
||||
const Input_range& m_input_range;
|
||||
Neighbor_query& m_neighbor_query;
|
||||
const Point_map m_point_map;
|
||||
Dereference_pmap m_deref_pmap;
|
||||
|
|
@ -190,10 +188,10 @@ namespace Polyline {
|
|||
|
||||
std::vector<Item> neighbors;
|
||||
std::size_t idx = 0;
|
||||
for (auto it = m_input_range.begin(); it != m_input_range.end(); it++) {
|
||||
for (const Item& item : m_ordered) {
|
||||
neighbors.clear();
|
||||
m_neighbor_query(it, neighbors);
|
||||
neighbors.push_back(it);
|
||||
m_neighbor_query(item, neighbors);
|
||||
neighbors.push_back(item);
|
||||
m_scores[idx++] = m_polyline_traits.create_line(
|
||||
neighbors, m_point_map).second;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -47,8 +47,8 @@ namespace Segment_set {
|
|||
a model of `ConstRange` whose iterator type is `RandomAccessIterator`
|
||||
|
||||
\tparam SegmentMap
|
||||
a model of `ReadablePropertyMap` whose key type is the value type of the input
|
||||
range and value type is `Kernel::Segment_2` or `Kernel::Segment_3`
|
||||
a model of `ReadablePropertyMap` whose key type is `Item`
|
||||
and value type is `Kernel::Segment_2` or `Kernel::Segment_3`
|
||||
|
||||
\cgalModels `RegionType`
|
||||
*/
|
||||
|
|
@ -167,7 +167,6 @@ namespace Segment_set {
|
|||
Least_squares_line_fit_region(
|
||||
const InputRange& input_range,
|
||||
const NamedParameters& np = parameters::default_values()) :
|
||||
m_input_range(input_range),
|
||||
m_segment_map(parameters::choose_parameter(parameters::get_parameter(
|
||||
np, internal_np::segment_map), SegmentMap())),
|
||||
m_traits(parameters::choose_parameter(parameters::get_parameter(
|
||||
|
|
@ -343,7 +342,6 @@ namespace Segment_set {
|
|||
/// \endcond
|
||||
|
||||
private:
|
||||
const Input_range& m_input_range;
|
||||
const Segment_map m_segment_map;
|
||||
const GeomTraits m_traits;
|
||||
const Segment_set_traits m_segment_set_traits;
|
||||
|
|
|
|||
|
|
@ -59,7 +59,7 @@ namespace Segment_set {
|
|||
using Input_range = InputRange;
|
||||
using Neighbor_query = NeighborQuery;
|
||||
using Segment_map = SegmentMap;
|
||||
using Segment_type = typename Segment_map::value_type;
|
||||
using Segment_type = typename boost::property_traits<Segment_map>::value_type;
|
||||
/// \endcond
|
||||
|
||||
/// Item type.
|
||||
|
|
@ -104,7 +104,7 @@ namespace Segment_set {
|
|||
|
||||
\cgalNamedParamsBegin
|
||||
\cgalParamNBegin{segment_map}
|
||||
\cgalParamDescription{an instance of `SegmentMap` that maps a segment from `input_range`
|
||||
\cgalParamDescription{an instance of `SegmentMap` that maps the `Item` of a segment
|
||||
to `Kernel::Segment_2` or `Kernel::Segment_3`}
|
||||
\cgalParamDefault{`SegmentMap()`}
|
||||
\cgalParamNEnd
|
||||
|
|
@ -121,7 +121,6 @@ namespace Segment_set {
|
|||
const InputRange& input_range,
|
||||
NeighborQuery& neighbor_query,
|
||||
const NamedParameters& np = parameters::default_values()) :
|
||||
m_input_range(input_range),
|
||||
m_neighbor_query(neighbor_query),
|
||||
m_segment_map(parameters::choose_parameter(parameters::get_parameter(
|
||||
np, internal_np::segment_map), SegmentMap())),
|
||||
|
|
@ -131,13 +130,13 @@ namespace Segment_set {
|
|||
|
||||
CGAL_precondition(input_range.size() > 0);
|
||||
|
||||
m_ordered.resize(m_input_range.size());
|
||||
m_ordered.resize(input_range.size());
|
||||
|
||||
std::size_t index = 0;
|
||||
for (auto it = m_input_range.begin(); it != m_input_range.end(); it++)
|
||||
for (auto it = input_range.begin(); it != input_range.end(); it++)
|
||||
m_ordered[index++] = internal::conditional_deref<typename Input_range::const_iterator, Item>()(it);
|
||||
|
||||
m_scores.resize(m_input_range.size());
|
||||
m_scores.resize(input_range.size());
|
||||
}
|
||||
|
||||
/// @}
|
||||
|
|
@ -154,12 +153,12 @@ namespace Segment_set {
|
|||
CGAL_precondition(m_scores.size() > 0);
|
||||
Compare_scores cmp(m_scores);
|
||||
|
||||
std::vector<std::size_t> order(m_input_range.size());
|
||||
std::vector<std::size_t> order(m_ordered.size());
|
||||
std::iota(order.begin(), order.end(), 0);
|
||||
std::sort(order.begin(), order.end(), cmp);
|
||||
|
||||
std::vector<Item> tmp(m_input_range.size());
|
||||
for (std::size_t i = 0; i < m_input_range.size(); i++)
|
||||
std::vector<Item> tmp(m_ordered.size());
|
||||
for (std::size_t i = 0; i < m_ordered.size(); i++)
|
||||
tmp[i] = m_ordered[order[i]];
|
||||
|
||||
m_ordered.swap(tmp);
|
||||
|
|
@ -179,7 +178,6 @@ namespace Segment_set {
|
|||
/// @}
|
||||
|
||||
private:
|
||||
const Input_range& m_input_range;
|
||||
Neighbor_query& m_neighbor_query;
|
||||
const Segment_map m_segment_map;
|
||||
const GeomTraits m_traits;
|
||||
|
|
@ -191,12 +189,12 @@ namespace Segment_set {
|
|||
|
||||
std::vector<Item> neighbors;
|
||||
std::size_t idx = 0;
|
||||
for (auto it = m_input_range.begin(); it != m_input_range.end(); it++) {
|
||||
for (const Item& item : m_ordered) {
|
||||
neighbors.clear();
|
||||
m_neighbor_query(it, neighbors);
|
||||
neighbors.push_back(internal::conditional_deref<typename InputRange::const_iterator, Item>()(it));
|
||||
m_neighbor_query(item, neighbors);
|
||||
neighbors.push_back(item);
|
||||
|
||||
const auto& segment = get(m_segment_map, *it);
|
||||
const auto& segment = get(m_segment_map, internal::conditional_deref<Item, typename Segment_map::key_type>()(item));
|
||||
const auto& source = segment.source();
|
||||
const auto& target = segment.target();
|
||||
if (source == target)
|
||||
|
|
|
|||
|
|
@ -189,7 +189,7 @@ bool test_lines_segment_set_2_sorting() {
|
|||
using Segment_2 = typename Kernel::Segment_2;
|
||||
|
||||
using Segment_range = std::vector<Segment_2>;
|
||||
using Segment_map = CGAL::Identity_property_map<Segment_2>;
|
||||
using Segment_map = CGAL::Identity_property_map<const Segment_2>;
|
||||
|
||||
using Region_type = CGAL::Shape_detection::
|
||||
Segment_set::Least_squares_line_fit_region<Kernel, Segment_range, Segment_map>;
|
||||
|
|
|
|||
Loading…
Reference in New Issue