mirror of https://github.com/CGAL/cgal
using constant property map instead of new get scalar value class
This commit is contained in:
parent
c8307dc0d6
commit
cb0e72049b
|
|
@ -435,30 +435,6 @@ CGAL_DEF_GET_INITIALIZED_INDEX_MAP(face, typename boost::graph_traits<Graph>::fa
|
|||
> ::type type;
|
||||
};
|
||||
|
||||
template<typename PointRange, typename NamedParameters>
|
||||
class GetScalarMap
|
||||
{
|
||||
struct DummyScalarMap
|
||||
{
|
||||
typedef typename std::iterator_traits<typename PointRange::iterator>::value_type key_type;
|
||||
typedef typename GetK<PointRange, NamedParameters>::Kernel::FT value_type;
|
||||
typedef value_type reference;
|
||||
typedef boost::read_write_property_map_tag category;
|
||||
|
||||
typedef DummyScalarMap Self;
|
||||
friend reference get(const Self&, const key_type&) { return value_type(1); }
|
||||
friend void put(const Self&, const key_type&, const value_type&) { }
|
||||
};
|
||||
|
||||
public:
|
||||
typedef DummyScalarMap NoMap;
|
||||
typedef typename internal_np::Lookup_named_param_def <
|
||||
internal_np::scalar_t,
|
||||
NamedParameters,
|
||||
DummyScalarMap // default
|
||||
> ::type type;
|
||||
};
|
||||
|
||||
template<typename PlaneRange, typename NamedParameters>
|
||||
class GetPlaneMap
|
||||
{
|
||||
|
|
|
|||
|
|
@ -21,6 +21,7 @@
|
|||
#include <CGAL/boost/graph/Named_function_parameters.h>
|
||||
#include <CGAL/boost/graph/named_params_helper.h>
|
||||
#include <CGAL/aff_transformation_tags.h>
|
||||
#include <CGAL/property_map.h>
|
||||
|
||||
#include <boost/type_traits/is_same.hpp>
|
||||
|
||||
|
|
@ -590,6 +591,11 @@ compute_registration_transformation (const PointRange1& point_set_1, const Point
|
|||
|
||||
namespace PSP = CGAL::Point_set_processing_3;
|
||||
|
||||
// basic types
|
||||
typedef typename PSP::GetK<PointRange1, NamedParameters1>::Kernel Kernel;
|
||||
typedef typename Kernel::FT Scalar;
|
||||
typedef typename Kernel::Aff_transformation_3 Transformation;
|
||||
|
||||
// property map types
|
||||
typedef typename CGAL::GetPointMap<PointRange1, NamedParameters1>::type PointMap1;
|
||||
typedef typename CGAL::GetPointMap<PointRange2, NamedParameters2>::type PointMap2;
|
||||
|
|
@ -603,22 +609,22 @@ compute_registration_transformation (const PointRange1& point_set_1, const Point
|
|||
typename boost::property_traits<NormalMap2>::value_type> ::value),
|
||||
"The vector type of input ranges must be the same");
|
||||
|
||||
typedef typename PSP::GetScalarMap<PointRange1, NamedParameters1>::type WeightMap1;
|
||||
typedef typename PSP::GetScalarMap<PointRange2, NamedParameters2>::type WeightMap2;
|
||||
CGAL_static_assertion_msg((boost::is_same< typename boost::property_traits<WeightMap1>::value_type,
|
||||
typename boost::property_traits<WeightMap2>::value_type> ::value),
|
||||
"The scalar type of input ranges must be the same");
|
||||
typedef typename std::iterator_traits<typename PointRange1::iterator>::value_type key_type1;
|
||||
typedef typename std::iterator_traits<typename PointRange2::iterator>::value_type key_type2;
|
||||
|
||||
typedef typename PSP::GetK<PointRange1, NamedParameters1>::Kernel Kernel;
|
||||
typedef typename Kernel::FT Scalar;
|
||||
typedef typename Kernel::Aff_transformation_3 Transformation;
|
||||
typedef typename CGAL::Constant_property_map<key_type1, Scalar> DefaultWeightMap1;
|
||||
typedef typename CGAL::Constant_property_map<key_type2, Scalar> DefaultWeightMap2;
|
||||
|
||||
PointMap1 point_map1 = choose_parameter(get_parameter(np1, internal_np::point_map), PointMap1());
|
||||
NormalMap1 normal_map1 = choose_parameter(get_parameter(np1, internal_np::normal_map), NormalMap1());
|
||||
WeightMap1 weight_map1 = choose_parameter(get_parameter(np1, internal_np::scalar_map), WeightMap1());
|
||||
auto weight_map1 = choose_parameter(get_parameter(np1, internal_np::scalar_map), DefaultWeightMap1(Scalar(1)));
|
||||
PointMap2 point_map2 = choose_parameter(get_parameter(np2, internal_np::point_map), PointMap2());
|
||||
NormalMap2 normal_map2 = choose_parameter(get_parameter(np2, internal_np::normal_map), NormalMap2());
|
||||
WeightMap2 weight_map2 = choose_parameter(get_parameter(np2, internal_np::scalar_map), WeightMap2());
|
||||
auto weight_map2 = choose_parameter(get_parameter(np2, internal_np::scalar_map), DefaultWeightMap2(Scalar(1)));
|
||||
|
||||
CGAL_static_assertion_msg((boost::is_same< typename boost::property_traits<decltype(weight_map1)>::value_type,
|
||||
typename boost::property_traits<decltype(weight_map2)>::value_type> ::value),
|
||||
"The scalar type of input ranges must be the same");
|
||||
|
||||
// initial transformation
|
||||
Transformation initial_transformation
|
||||
|
|
|
|||
Loading…
Reference in New Issue