point3
parent
a1ed6919b4
commit
e5d7e3ce8a
|
|
@ -76,6 +76,13 @@ public:
|
||||||
/// Return skew-symmetric associated with 3D point on unit sphere
|
/// Return skew-symmetric associated with 3D point on unit sphere
|
||||||
Matrix skew() const;
|
Matrix skew() const;
|
||||||
|
|
||||||
|
/// Return unit-norm Point3
|
||||||
|
Point3 point3(boost::optional<Matrix&> H = boost::none) const {
|
||||||
|
if (H)
|
||||||
|
*H = basis();
|
||||||
|
return p_;
|
||||||
|
}
|
||||||
|
|
||||||
/// Rotate
|
/// Rotate
|
||||||
static Sphere2 Rotate(const Rot3& R, const Sphere2& p,
|
static Sphere2 Rotate(const Rot3& R, const Sphere2& p,
|
||||||
boost::optional<Matrix&> HR = boost::none, boost::optional<Matrix&> Hp =
|
boost::optional<Matrix&> HR = boost::none, boost::optional<Matrix&> Hp =
|
||||||
|
|
|
||||||
|
|
@ -16,18 +16,37 @@
|
||||||
* @brief Tests the Sphere2 class
|
* @brief Tests the Sphere2 class
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <gtsam/base/Testable.h>
|
|
||||||
#include <gtsam/geometry/Sphere2.h>
|
#include <gtsam/geometry/Sphere2.h>
|
||||||
#include <CppUnitLite/TestHarness.h>
|
#include <gtsam/base/Testable.h>
|
||||||
#include <gtsam/base/numericalDerivative.h>
|
#include <gtsam/base/numericalDerivative.h>
|
||||||
|
#include <CppUnitLite/TestHarness.h>
|
||||||
#include <boost/bind.hpp>
|
#include <boost/bind.hpp>
|
||||||
|
#include <boost/foreach.hpp>
|
||||||
|
#include <boost/assign/std/vector.hpp>
|
||||||
|
|
||||||
|
using namespace boost::assign;
|
||||||
using namespace gtsam;
|
using namespace gtsam;
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
GTSAM_CONCEPT_TESTABLE_INST(Sphere2)
|
GTSAM_CONCEPT_TESTABLE_INST(Sphere2)
|
||||||
GTSAM_CONCEPT_MANIFOLD_INST(Sphere2)
|
GTSAM_CONCEPT_MANIFOLD_INST(Sphere2)
|
||||||
|
|
||||||
|
//*******************************************************************************
|
||||||
|
Point3 point3_(const Sphere2& p) {
|
||||||
|
return p.point3();
|
||||||
|
}
|
||||||
|
TEST(Sphere2, point3) {
|
||||||
|
vector < Point3 > ps;
|
||||||
|
ps += Point3(1, 0, 0), Point3(0, 1, 0), Point3(0, 0, 1), Point3(1, 1, 0)/sqrt(2);
|
||||||
|
Matrix actualH, expectedH;
|
||||||
|
BOOST_FOREACH(Point3 p,ps) {
|
||||||
|
Sphere2 s(p);
|
||||||
|
expectedH = numericalDerivative11<Point3, Sphere2>(point3_, s);
|
||||||
|
EXPECT(assert_equal(p, s.point3(actualH), 1e-8));
|
||||||
|
EXPECT(assert_equal(expectedH, actualH, 1e-9));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//*******************************************************************************
|
//*******************************************************************************
|
||||||
TEST(Sphere2, rotate) {
|
TEST(Sphere2, rotate) {
|
||||||
Rot3 R = Rot3::yaw(0.5);
|
Rot3 R = Rot3::yaw(0.5);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue