9 template class Map<Sophus::RxSO2<double>>;
10 template class Map<Sophus::RxSO2<double>
const>;
15 template class RxSO2<double, Eigen::AutoAlign>;
16 template class RxSO2<float, Eigen::DontAlign>;
18 template class RxSO2<ceres::Jet<double, 3>>;
21 template <
class Scalar>
64 template <
class S = Scalar>
67 for (
int i = 0; i < 10; ++i) {
73 "isScaledOrthogonalAndPositive(sR): % *\n%", scale, R);
75 sR_cols_swapped << sR.col(1), sR.col(0);
77 "isScaledOrthogonalAndPositive(-sR): % *\n%", scale, R);
83 template <
class S = Scalar>
108 RxSO2Type saturated_product = small1 * small2;
113 (small1.so2() * small2.so2()).matrix(),
120 Eigen::Matrix<Scalar, 2, 1> raw = {0, 1};
121 Eigen::Map<RxSO2Type const> map_of_const_rxso2(raw.data());
125 Eigen::Map<RxSO2Type const> const_shallow_copy = map_of_const_rxso2;
127 map_of_const_rxso2.complex().eval());
129 Eigen::Matrix<Scalar, 2, 1> raw2 = {1, 0};
130 Eigen::Map<RxSO2Type> map_of_rxso2(raw2.data());
134 Eigen::Map<RxSO2Type> shallow_copy = map_of_rxso2;
136 map_of_rxso2.complex().eval());
139 for (
int i = 0; i < 2; ++i) {
144 for (
int i = 0; i < 2; ++i) {
145 so2.data()[i] = raw[i];
148 for (
int i = 0; i < 2; ++i) {
158 rxso2.setScale(scale);
162 rxso2.setAngle(angle);
167 "setAngle leaves scale as is");
177 "RxSO2(scale, SO2)");
182 rxso2.setScaledRotationMatrix(sR);
184 "setScaleRotationMatrix");
185 rxso2.setScale(scale);
186 rxso2.setRotationMatrix(R);
195 std::vector<RxSO2Type, Eigen::aligned_allocator<RxSO2Type>>
rxso2_vec_;
197 std::vector<Point, Eigen::aligned_allocator<Point>>
point_vec_;
204 cerr <<
"Test RxSO2" << endl << endl;
205 cerr <<
"Double tests: " << endl;
207 cerr <<
"Float tests: " << endl;
211 cerr <<
"ceres::Jet<double, 3> tests: " << endl;