37 S << 0, -t.z(), t.y(), t.z(), 0, -t.x(), -t.y(), t.x(), 0;
43 cartesian.tail<3>() =
d() /
d().norm();
45 double damping =
cst(1e-9);
46 Matrix3 A = W.transpose() * W + (Matrix3::Identity() * damping);
47 cartesian.head<3>() = A.ldlt().solve(W.transpose() *
w());
53 A.block<3, 3>(0, 0) = t.linear();
54 A.block<3, 3>(0, 3) =
_skew(t.translation()) * t.linear();
55 A.block<3, 3>(3, 3) = t.linear();
63 l.head<3>() = t * line.head<3>();
64 l.tail<3>() = t.linear() * line.tail<3>();
72 p0 -= d0 * (d0.dot(p0));
G2O_TYPES_SLAM3D_ADDONS_API Vector3 w() const
G2O_TYPES_SLAM3D_ADDONS_API Line3D()
G2O_TYPES_SLAM3D_ADDONS_API Vector3 d() const
G2O_TYPES_SLAM3D_ADDONS_API Vector6 toCartesian() const
some general case utility functions
Vector6 transformCartesianLine(const Isometry3 &t, const Vector6 &line)
Vector6 normalizeCartesianLine(const Vector6 &line)
Eigen::Matrix< double, 6, 6 > Matrix6
static Matrix3 _skew(const Vector3 &t)
Line2D operator*(const SE2 &t, const Line2D &l)
constexpr double cst(long double v)
Eigen::Transform< double, 3, Eigen::Isometry, Eigen::ColMajor > Isometry3