39 #ifndef PCL_POINT_REPRESENTATION_H_
40 #define PCL_POINT_REPRESENTATION_H_
42 #include <pcl/point_types.h>
43 #include <pcl/pcl_macros.h>
44 #include <pcl/for_each_type.h>
54 template <
typename Po
intT>
74 typedef boost::shared_ptr<PointRepresentation<PointT> >
Ptr;
75 typedef boost::shared_ptr<const PointRepresentation<PointT> >
ConstPtr;
104 bool is_valid =
true;
108 const float* temp =
reinterpret_cast<const float*
>(&p);
112 if (!pcl_isfinite (temp[i]))
126 if (!pcl_isfinite (temp[i]))
141 template <
typename OutputType>
void
154 out[i] = temp[i] *
alpha_[i];
167 alpha_[i] = rescale_array[i];
177 template <
typename Po
intDefault>
185 typedef boost::shared_ptr<DefaultPointRepresentation<PointDefault> >
Ptr;
186 typedef boost::shared_ptr<const DefaultPointRepresentation<PointDefault> >
ConstPtr;
210 const float* ptr =
reinterpret_cast<const float*
> (&p);
220 template <
typename Po
intDefault>
227 struct IncrementFunctor
229 IncrementFunctor (
int &n) : n_ (n)
234 template<
typename Key>
inline void operator () ()
243 struct NdCopyPointFunctor
247 NdCopyPointFunctor (
const PointDefault &p1,
float * p2)
248 : p1_ (reinterpret_cast<const Pod&>(p1)), p2_ (p2), f_idx_ (0) { }
250 template<
typename Key>
inline void operator() ()
258 template <
typename Key,
typename FieldT,
int NrDims>
263 const uint8_t * data_ptr =
reinterpret_cast<const uint8_t *
> (&p1) +
265 p2[f_idx++] = *
reinterpret_cast<const FieldT*
> (data_ptr);
269 template <
typename Key,
typename FieldT,
int NrDims>
270 struct Helper<Key, FieldT[NrDims], NrDims>
274 const uint8_t * data_ptr =
reinterpret_cast<const uint8_t *
> (&p1) +
276 int nr_dims = NrDims;
277 const FieldT * array =
reinterpret_cast<const FieldT *
> (data_ptr);
278 for (
int i = 0; i < nr_dims; ++i)
280 p2[f_idx++] = array[i];
293 typedef typename boost::shared_ptr<DefaultFeatureRepresentation<PointDefault> >
Ptr;
294 typedef typename boost::shared_ptr<const DefaultFeatureRepresentation<PointDefault> >
ConstPtr;
300 pcl::for_each_type <FieldList> (IncrementFunctor (
nr_dimensions_));
312 pcl::for_each_type <FieldList> (NdCopyPointFunctor (p, out));
498 template <
typename Po
intDefault>
505 typedef boost::shared_ptr<CustomPointRepresentation<PointDefault> >
Ptr;
506 typedef boost::shared_ptr<const CustomPointRepresentation<PointDefault> >
ConstPtr;
536 const float *ptr = (
reinterpret_cast<const float*
> (&p)) +
start_dim_;
549 #endif // #ifndef PCL_POINT_REPRESENTATION_H_