9 template class Map<Sophus::RxSO3<double>>;
10 template class Map<Sophus::RxSO3<double>
const>;
15 template class RxSO3<double, Eigen::AutoAlign>;
16 template class RxSO3<float, Eigen::DontAlign>;
18 template class RxSO3<ceres::Jet<double, 3>>;
21 template <
class Scalar_>
100 RxSO3Type saturated_product = small1 * small2;
105 (small1.so3() * small2.so3()).matrix(),
114 Eigen::Map<RxSO3Type const> map_of_const_rxso3(raw.data());
119 Eigen::Map<RxSO3Type const> const_shallow_copy = map_of_const_rxso3;
121 map_of_const_rxso3.quaternion().coeffs().eval());
125 Eigen::Map<RxSO3Type> map_of_rxso3(raw.data());
126 Eigen::Quaternion<Scalar> quat;
127 quat.coeffs() = raw2;
128 map_of_rxso3.setQuaternion(quat);
134 quat.coeffs().data());
135 Eigen::Map<RxSO3Type> shallow_copy = map_of_rxso3;
137 map_of_rxso3.quaternion().coeffs().eval());
140 for (
int i = 0; i < 4; ++i) {
145 for (
int i = 0; i < 4; ++i) {
146 so3.data()[i] = raw[i];
149 for (
int i = 0; i < 4; ++i) {
160 rxso3.setScale(scale);
171 "RxSO3(scale, SO3)");
178 rxso3.setScaledRotationMatrix(sR);
180 "setScaleRotationMatrix");
181 rxso3.setScale(scale);
182 rxso3.setRotationMatrix(R);
191 template <
class S = Scalar>
194 for (
int i = 0; i < 10; ++i) {
200 "isScaledOrthogonalAndPositive(sR): % *\n%", scale, R);
202 sR_cols_swapped << sR.col(1), sR.col(0), sR.col(2);
204 "isScaledOrthogonalAndPositive(-sR): % *\n%", scale, R);
210 template <
class S = Scalar>
215 std::vector<RxSO3Type, Eigen::aligned_allocator<RxSO3Type>>
rxso3_vec_;
216 std::vector<Tangent, Eigen::aligned_allocator<Tangent>>
tangent_vec_;
217 std::vector<Point, Eigen::aligned_allocator<Point>>
point_vec_;
224 cerr <<
"Test RxSO3" << endl << endl;
225 cerr <<
"Double tests: " << endl;
227 cerr <<
"Float tests: " << endl;
231 cerr <<
"ceres::Jet<double, 3> tests: " << endl;