19 #ifndef LOCALIZATION_MEASUREMENTS_PLANE_H_
20 #define LOCALIZATION_MEASUREMENTS_PLANE_H_
22 #include <gtsam/base/Testable.h>
23 #include <gtsam/base/Vector.h>
24 #include <gtsam/geometry/Point3.h>
33 const gtsam::Point3&
point()
const {
return point_; }
34 const gtsam::Vector3&
normal()
const {
return normal_; }
38 gtsam::Vector3 normal_;
45 normal_ = point_normal_plane.
normal();
49 d_ = -1.0 * normal_.dot(point_normal_plane.
point());
52 const gtsam::Vector3&
normal()
const {
return normal_; }
53 const double&
d()
const {
return d_; }
57 gtsam::Vector3 normal_;
67 const double norm = general_plane.
normal().norm();
68 unit_normal_ = general_plane.
normal() / norm;
69 constant_ = general_plane.
d() / norm;
71 const gtsam::Vector3&
unit_normal()
const {
return unit_normal_; }
72 const double&
constant()
const {
return constant_; }
77 template <
class ARCHIVE>
78 void serialize(ARCHIVE& ar,
const unsigned int ) {
79 ar& BOOST_SERIALIZATION_NVP(unit_normal_);
80 ar& BOOST_SERIALIZATION_NVP(constant_);
83 gtsam::Vector3 unit_normal_;
94 double Distance(
const gtsam::Point3& point, gtsam::OptionalJacobian<1, 3> d_distance_d_point = boost::none)
const {
96 if (d_distance_d_point) {
101 void print(
const std::string& s =
"")
const {
102 std::cout << (s.empty() ? s : s +
" ") <<
unit_normal() <<
", " <<
constant() << std::endl;
112 template <
class ARCHIVE>
113 void serialize(ARCHIVE& ar,
const unsigned int ) {
114 ar& BOOST_SERIALIZATION_BASE_OBJECT_NVP(
Base);
125 #endif // LOCALIZATION_MEASUREMENTS_PLANE_H_