36 #define BOOST_PARAMETER_MAX_ARITY 7 46 normal_ = Eigen::Vector3f(coefficients[0], coefficients[1], coefficients[2]);
54 normal_ = Eigen::Vector3f(coefficients[0], coefficients[1], coefficients[2]);
109 return normal_.dot(another_normal) > 0;
134 return fabs(fabs(
d_) - fabs(another.
d_));
143 else if (dot < -1.0) {
146 double theta =
acos(dot);
147 if (theta > M_PI / 2.0) {
160 else if (dot < -1.0) {
163 double theta =
acos(dot);
164 if (theta > M_PI / 2.0) {
182 Eigen::Vector3f output_f;
183 project(Eigen::Vector3f(p[0], p[1], p[2]), output_f);
184 pointFromVectorToVector<Eigen::Vector3f, Eigen::Vector3d>(output_f, output);
189 project(Eigen::Vector3f(p[0], p[1], p[2]), output);
194 Eigen::Vector3f output_f;
196 pointFromVectorToVector<Eigen::Vector3f, Eigen::Vector3d>(output_f, output);
201 Eigen::Affine3f pose_f, output_f;
209 Eigen::Vector3f
p(pose.translation());
210 Eigen::Vector3f output_p;
212 Eigen::Quaternionf rot;
213 rot.setFromTwoVectors(pose.rotation() * Eigen::Vector3f::UnitZ(),
214 coordinates().rotation() * Eigen::Vector3f::UnitZ());
215 output = Eigen::Affine3f::Identity() * Eigen::Translation3f(output_p) * rot;
220 Eigen::Affine3d transform_d;
232 Eigen::Matrix4d m = transform.matrix();
233 Eigen::Vector4d n_d = m.transpose() * n;
235 Eigen::Vector4d n_dd = n_d /
sqrt(n_d[0] * n_d[0] + n_d[1] * n_d[1] + n_d[2] * n_d[2]);
236 return Plane(Eigen::Vector3f(n_dd[0], n_dd[1], n_dd[2]), n_dd[3]);
241 std::vector<float> ret;
251 output.push_back(
d_);
266 Eigen::Quaternionf rot;
267 rot.setFromTwoVectors(Eigen::Vector3f::UnitZ(),
normal_);
279 = Eigen::Affine3f::Identity() * Eigen::Translation3f(0, 0, z) * rot;
Eigen::Affine3f plane_coordinates_
virtual Eigen::Vector3f getPointOnPlane()
virtual bool isSameDirection(const Plane &another)
virtual Plane::Ptr faceToOrigin()
virtual double angle(const Plane &another)
virtual Plane transform(const Eigen::Affine3d &transform)
virtual Eigen::Affine3f coordinates()
virtual void initializeCoordinates()
doubleAcc dot(const VectorAcc &lhs, const VectorAcc &rhs)
Plane(const std::vector< float > &coefficients)
TFSIMD_FORCE_INLINE Vector3 normalized() const
virtual std::vector< float > toCoefficients()
boost::shared_ptr< Plane > Ptr
void convertEigenAffine3(const Eigen::Affine3d &from, Eigen::Affine3f &to)
INLINE Rall1d< T, V, S > sqrt(const Rall1d< T, V, S > &arg)
virtual void project(const Eigen::Vector3f &p, Eigen::Vector3f &output)
INLINE Rall1d< T, V, S > acos(const Rall1d< T, V, S > &x)
virtual double signedDistanceToPoint(const Eigen::Vector4f p)
virtual double distance(const Plane &another)
virtual Eigen::Vector3f getNormal()
virtual double distanceToPoint(const Eigen::Vector4f p)