Added some simple transform_[to|from] functions to Point2 to allow for linear systems to still use transforms in generic code
parent
c1fee1ab88
commit
b6009028d8
|
|
@ -30,5 +30,19 @@ namespace gtsam {
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ************************************************************************* */
|
/* ************************************************************************* */
|
||||||
|
Point2 Point2::transform_to(const Point2& point,
|
||||||
|
boost::optional<Matrix&> H1, boost::optional<Matrix&> H2) const {
|
||||||
|
if (H1) *H1 = -eye(2);
|
||||||
|
if (H2) *H2 = eye(2);
|
||||||
|
return point - *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ************************************************************************* */
|
||||||
|
Point2 Point2::transform_from(const Point2& point,
|
||||||
|
boost::optional<Matrix&> H1, boost::optional<Matrix&> H2) const {
|
||||||
|
if (H1) *H1 = eye(2);
|
||||||
|
if (H2) *H2 = eye(2);
|
||||||
|
return point + *this;
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace gtsam
|
} // namespace gtsam
|
||||||
|
|
|
||||||
|
|
@ -41,6 +41,17 @@ namespace gtsam {
|
||||||
/** equals with an tolerance, prints out message if unequal*/
|
/** equals with an tolerance, prints out message if unequal*/
|
||||||
bool equals(const Point2& q, double tol = 1e-9) const;
|
bool equals(const Point2& q, double tol = 1e-9) const;
|
||||||
|
|
||||||
|
/** simple transform_[to|from] to allow for generic algorithms */
|
||||||
|
/** Return point coordinates in pose coordinate frame */
|
||||||
|
Point2 transform_to(const Point2& point,
|
||||||
|
boost::optional<Matrix&> H1=boost::none,
|
||||||
|
boost::optional<Matrix&> H2=boost::none) const;
|
||||||
|
|
||||||
|
/** Return point coordinates in global frame */
|
||||||
|
Point2 transform_from(const Point2& point,
|
||||||
|
boost::optional<Matrix&> H1=boost::none,
|
||||||
|
boost::optional<Matrix&> H2=boost::none) const;
|
||||||
|
|
||||||
/** Lie requirements */
|
/** Lie requirements */
|
||||||
|
|
||||||
/** Size of the tangent space of the Lie type */
|
/** Size of the tangent space of the Lie type */
|
||||||
|
|
|
||||||
|
|
@ -42,8 +42,14 @@ TEST( Point2, norm)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ************************************************************************* */
|
/* ************************************************************************* */
|
||||||
int main() {
|
TEST( Point2, transforms ) {
|
||||||
TestResult tr;
|
Point2 offset(3.0, 4.0);
|
||||||
return TestRegistry::runAllTests(tr);
|
EXPECT(assert_equal(Point2(5.0, 6.0), offset.transform_from(Point2(2.0, 2.0))));
|
||||||
|
EXPECT(assert_equal(Point2(-1.0, -2.0), offset.transform_to(Point2(2.0, 2.0))));
|
||||||
|
EXPECT(assert_equal(Point2(1.0, 2.0), offset.transform_to(
|
||||||
|
offset.transform_from(Point2(1.0, 2.0)))));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* ************************************************************************* */
|
||||||
|
int main() { TestResult tr; return TestRegistry::runAllTests(tr); }
|
||||||
/* ************************************************************************* */
|
/* ************************************************************************* */
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue