10 template class Map<Sophus::SO3<double>>;
11 template class Map<Sophus::SO3<double>
const>;
16 template class SO3<double, Eigen::AutoAlign>;
17 template class SO3<float, Eigen::DontAlign>;
19 template class SO3<ceres::Jet<double, 3>>;
22 template <
class Scalar>
83 for (std::size_t i = 0; i < 1000; ++i) {
97 Eigen::Map<SO3Type const> map_of_const_so3(raw.data());
99 map_of_const_so3.unit_quaternion().coeffs().eval(), raw,
102 passed, map_of_const_so3.unit_quaternion().coeffs().data(), raw.data());
103 Eigen::Map<SO3Type const> const_shallow_copy = map_of_const_so3;
105 const_shallow_copy.unit_quaternion().coeffs().eval(),
106 map_of_const_so3.unit_quaternion().coeffs().eval());
110 Eigen::Map<SO3Type> map_of_so3(raw.data());
111 Eigen::Quaternion<Scalar> quat;
112 quat.coeffs() = raw2;
113 map_of_so3.setQuaternion(quat);
119 quat.coeffs().data());
120 Eigen::Map<SO3Type> shallow_copy = map_of_so3;
122 map_of_so3.unit_quaternion().coeffs().eval());
125 for (
int i = 0; i < 4; ++i) {
130 for (
int i = 0; i < 4; ++i) {
131 so3.data()[i] = raw[i];
134 for (
int i = 0; i < 4; ++i) {
160 template <
class S = Scalar>
164 for (
int i = 0; i < 100; ++i) {
185 template <
class S = Scalar>
190 std::vector<SO3Type, Eigen::aligned_allocator<SO3Type>>
so3_vec_;
191 std::vector<Tangent, Eigen::aligned_allocator<Tangent>>
tangent_vec_;
192 std::vector<Point, Eigen::aligned_allocator<Point>>
point_vec_;
199 cerr <<
"Test SO3" << endl << endl;
200 cerr <<
"Double tests: " << endl;
202 cerr <<
"Float tests: " << endl;
206 cerr <<
"ceres::Jet<double, 3> tests: " << endl;