38 template <
typename Po
intT>
void
41 const Eigen::Affine3f &transform)
43 if (&cloud_in != &cloud_out)
57 for (
size_t i = 0; i < cloud_out.
points.size (); ++i)
58 cloud_out.
points[i].getVector3fMap () = transform *
59 cloud_in.
points[i].getVector3fMap ();
65 for (
size_t i = 0; i < cloud_out.
points.size (); ++i)
71 cloud_out.
points[i].getVector3fMap () = transform *
72 cloud_in.
points[i].getVector3fMap ();
78 template <
typename Po
intT>
void
80 const std::vector<int> &indices,
82 const Eigen::Affine3f &transform)
84 size_t npts = indices.size ();
88 cloud_out.
width = npts;
90 cloud_out.
points.resize (npts);
95 for (
size_t i = 0; i < npts; ++i)
99 cloud_out.
points[i].getVector3fMap () = transform*cloud_out.
points[i].getVector3fMap ();
106 for (
size_t i = 0; i < npts; ++i)
113 cloud_out.
points[i].getVector3fMap () = transform*cloud_out.
points[i].getVector3fMap ();
119 template <
typename Po
intT>
void
122 const Eigen::Affine3f &transform)
124 if (&cloud_in != &cloud_out)
138 for (
size_t i = 0; i < cloud_out.
points.size (); ++i)
140 cloud_out.
points[i].getVector3fMap() = transform *
141 cloud_in.
points[i].getVector3fMap ();
144 cloud_out.
points[i].getNormalVector3fMap() = transform.rotation () *
145 cloud_in.
points[i].getNormalVector3fMap ();
151 for (
size_t i = 0; i < cloud_out.
points.size (); ++i)
157 cloud_out.
points[i].getVector3fMap() = transform *
158 cloud_in.
points[i].getVector3fMap ();
161 cloud_out.
points[i].getNormalVector3fMap() = transform.rotation () *
162 cloud_in.
points[i].getNormalVector3fMap ();
168 template <
typename Po
intT>
void
171 const Eigen::Matrix4f &transform)
173 if (&cloud_in != &cloud_out)
184 Eigen::Matrix3f rot = transform.block<3, 3> (0, 0);
185 Eigen::Vector3f trans = transform.block<3, 1> (0, 3);
189 for (
size_t i = 0; i < cloud_out.
points.size (); ++i)
190 cloud_out.
points[i].getVector3fMap () = rot *
191 cloud_in.
points[i].getVector3fMap () + trans;
196 for (
size_t i = 0; i < cloud_out.
points.size (); ++i)
202 cloud_out.
points[i].getVector3fMap () = rot *
203 cloud_in.
points[i].getVector3fMap () + trans;
209 template <
typename Po
intT>
void
212 const Eigen::Matrix4f &transform)
214 if (&cloud_in != &cloud_out)
225 Eigen::Matrix3f rot = transform.block<3, 3> (0, 0);
226 Eigen::Vector3f trans = transform.block<3, 1> (0, 3);
231 for (
size_t i = 0; i < cloud_out.
points.size (); ++i)
233 cloud_out.
points[i].getVector3fMap () = rot *
234 cloud_in.
points[i].getVector3fMap () + trans;
237 cloud_out.
points[i].getNormalVector3fMap() = rot *
238 cloud_in.
points[i].getNormalVector3fMap ();
244 for (
size_t i = 0; i < cloud_out.
points.size (); ++i)
250 cloud_out.
points[i].getVector3fMap () = rot *
251 cloud_in.
points[i].getVector3fMap () + trans;
254 cloud_out.
points[i].getNormalVector3fMap() = rot *
255 cloud_in.
points[i].getNormalVector3fMap ();
261 template <
typename Po
intT>
inline void
264 const Eigen::Vector3f &offset,
265 const Eigen::Quaternionf &rotation)
267 Eigen::Translation3f translation (offset);
270 t = translation * rotation;
275 template <
typename Po
intT>
inline void
278 const Eigen::Vector3f &offset,
279 const Eigen::Quaternionf &rotation)
281 Eigen::Translation3f translation (offset);
284 t = translation * rotation;
289 template <
typename Po
intT>
inline PointT
293 ret.getVector3fMap () = transform * point.getVector3fMap ();