26 template <concepts::accessors::Translation TGroup>
28 using Scalar =
typename TGroup::Scalar;
29 int constexpr k_point_dim = TGroup::kPointDim;
30 Eigen::Vector<Scalar, k_point_dim> p;
31 for (
int i = 0; i < k_point_dim; ++i) {
36 Eigen::Vector<Scalar, k_point_dim> q;
37 for (
int i = 0; i < k_point_dim; ++i) {
46 template <concepts::accessors::Rotation TGroup>
48 using Scalar =
typename TGroup::Scalar;
49 if constexpr (TGroup::kPointDim == 2) {
51 for (
size_t g_id = 0; g_id < kElems.size(); ++g_id) {
54 TGroup g = TGroup::fromRotationMatrix(rot.
matrix());
56 g.rotationMatrix(), rot.
matrix(), kEpsilonSqrt<Scalar>);
58 }
else if constexpr (TGroup::kPointDim == 3) {
61 for (
size_t g_id = 0; g_id < kElems.size(); ++g_id) {
64 TGroup g = TGroup::fromRotationMatrix(rot.
matrix());
66 g.rotationMatrix(), rot.
matrix(), kEpsilonSqrt<Scalar>);
71 template <concepts::accessors::TxTy TGroup>
74 auto g = TGroup::fromTx(0.7);
76 g.translation().x(), 0.7, kEpsilon<typename TGroup::Scalar>);
80 kEpsilon<typename TGroup::Scalar>,
85 auto g = TGroup::fromTy(-0.9);
89 kEpsilon<typename TGroup::Scalar>,
95 kEpsilon<typename TGroup::Scalar>,
101 template <concepts::accessors::TxTyTz TGroup>
104 auto g = TGroup::fromTx(0.7);
106 g.translation().x(), 0.7, kEpsilon<typename TGroup::Scalar>);
108 g.translation().template tail<2>().norm(),
109 kEpsilon<typename TGroup::Scalar>);
112 auto g = TGroup::fromTy(-0.9);
116 kEpsilon<typename TGroup::Scalar>,
122 kEpsilon<typename TGroup::Scalar>,
128 kEpsilon<typename TGroup::Scalar>,
133 auto g = TGroup::fromTz(0.9);
137 kEpsilon<typename TGroup::Scalar>,
141 g.translation().template head<2>().norm(),
142 kEpsilon<typename TGroup::Scalar>);
146 template <concepts::accessors::Isometry TGroup>
148 using Scalar =
typename TGroup::Scalar;
149 if constexpr (TGroup::kPointDim == 2) {
151 for (
size_t g_id = 0; g_id < kElems.size(); ++g_id) {
158 }
else if constexpr (TGroup::kPointDim == 3) {
161 for (
size_t g_id = 0; g_id < kElems.size(); ++g_id) {
173 template <concepts::accessors::SpiralSimilarity TGroup>
175 using Scalar =
typename TGroup::Scalar;
177 if constexpr (TGroup::kPointDim == 2) {
179 for (
size_t g_id = 0; g_id < kElems.size(); ++g_id) {
181 double scale = spiral_sim.
scale();
183 TGroup scale_g = TGroup::fromScale(scale);
187 scale_g2.setScale(spiral_sim.
scale());
190 }
else if constexpr (TGroup::kPointDim == 3) {
193 for (
size_t g_id = 0; g_id < kElems.size(); ++g_id) {
195 double scale = spiral_sim.
scale();
197 TGroup scale_g = TGroup::fromScale(scale);
201 scale_g2.setScale(spiral_sim.
scale());
207 template <concepts::accessors::Similarity TGroup>
209 using Scalar =
typename TGroup::Scalar;
211 if constexpr (TGroup::kPointDim == 2) {
213 for (
size_t g_id = 0; g_id < kElems.size(); ++g_id) {
215 double scale = sim.
scale();
217 TGroup scale_g = TGroup::fromScale(scale);
221 scale_g2.setScale(sim.
scale());
224 }
else if constexpr (TGroup::kPointDim == 3) {
227 for (
size_t g_id = 0; g_id < kElems.size(); ++g_id) {
229 double scale = sim.
scale();
231 TGroup scale_g = TGroup::fromScale(scale);
235 scale_g2.setScale(sim.
scale());
241 template <concepts::accessors::UnitComplex TGroup>
246 template <concepts::accessors::UnitQuaternion TGroup>
251 template <concepts::accessors::Rotation2 TGroup>
253 runRotationAccessorTests<TGroup>();
257 template <concepts::accessors::Rotation3 TGroup>
259 runRotationAccessorTests<TGroup>();
263 template <concepts::accessors::SpiralSimilarity2 TGroup>
265 runSpiralSimilarityAccessorTests<TGroup>();
266 runRotation2AccessorTests<TGroup>();
270 template <concepts::accessors::SpiralSimilarity3 TGroup>
272 runSpiralSimilarityAccessorTests<TGroup>();
273 runRotation3AccessorTests<TGroup>();
277 template <concepts::base::Rotation TGroup>
282 template <concepts::accessors::Isometry2 TGroup>
284 runIsometryAccessorTests<TGroup>();
285 runRotation2AccessorTests<TGroup>();
286 runTxTyTests<TGroup>();
289 template <concepts::accessors::Isometry3 TGroup>
291 runIsometryAccessorTests<TGroup>();
292 runRotation3AccessorTests<TGroup>();
293 runTxTyTzTests<TGroup>();
296 template <concepts::accessors::Similarity2 TGroup>
298 runSimilarityAccessorTests<TGroup>();
299 runSpiralSimilarity2AccessorTests<TGroup>();
300 runTxTyTests<TGroup>();
303 template <concepts::accessors::Similarity3 TGroup>
305 runSimilarityAccessorTests<TGroup>();
306 runSpiralSimilarity3AccessorTests<TGroup>();
307 runTxTyTzTests<TGroup>();
312 template <concepts::Rotation2 TGroup>
314 runRotation2AccessorTests<TGroup>();
315 runBaseRotationTests<TGroup>();
316 runUnitComplexTests<TGroup>();
319 template <concepts::Rotation3 TGroup>
321 runRotation3AccessorTests<TGroup>();
322 runBaseRotationTests<TGroup>();
323 runUnitQuaternionTests<TGroup>();
326 template <concepts::Isometry2 TGroup>
328 runIsometry2AccessorTests<TGroup>();
329 runUnitComplexTests<TGroup>();
332 template <concepts::Isometry3 TGroup>
334 runIsometry3AccessorTests<TGroup>();
335 runUnitQuaternionTests<TGroup>();
338 template <concepts::SpiralSimilarity2 TGroup>
340 runSpiralSimilarity2AccessorTests<TGroup>();
343 template <concepts::SpiralSimilarity3 TGroup>
345 runSpiralSimilarity3AccessorTests<TGroup>();
348 template <concepts::Similarity2 TGroup>
350 runSimilarity2AccessorTests<TGroup>();
351 runSpiralSimilarity2AccessorTests<TGroup>();
354 template <concepts::Similarity3 TGroup>
356 runSimilarity3AccessorTests<TGroup>();
357 runSpiralSimilarity3AccessorTests<TGroup>();