213TEST(math_rotation_types, QuaternionTwistSwing)
215 Quaternion q(0.927091f, 0.211322f, -0.124857f, 0.283295f);
257 EXPECT_EQ((-pi * 4 / 2).wrapped(), (+pi * 0 / 2));
258 EXPECT_EQ((-pi * 3 / 2).wrapped(), (+pi * 1 / 2));
259 EXPECT_EQ((-pi * 2 / 2).wrapped(), (-pi * 2 / 2));
260 EXPECT_EQ((-pi * 1 / 2).wrapped(), (-pi * 1 / 2));
261 EXPECT_EQ((+pi * 0 / 2).wrapped(), (+pi * 0 / 2));
262 EXPECT_EQ((+pi * 1 / 2).wrapped(), (+pi * 1 / 2));
263 EXPECT_EQ((+pi * 2 / 2).wrapped(), (+pi * 2 / 2));
264 EXPECT_EQ((+pi * 3 / 2).wrapped(), (-pi * 1 / 2));
265 EXPECT_EQ((+pi * 4 / 2).wrapped(), (-pi * 0 / 2));
266 EXPECT_EQ((+pi * 0 / 2).wrapped_around(pi), (+pi * 0 / 2));
267 EXPECT_EQ((+pi * 1 / 2).wrapped_around(pi), (+pi * 1 / 2));
268 EXPECT_EQ((+pi * 2 / 2).wrapped_around(pi), (+pi * 2 / 2));
269 EXPECT_EQ((+pi * 3 / 2).wrapped_around(pi), (+pi * 3 / 2));
270 EXPECT_EQ((+pi * 4 / 2).wrapped_around(pi), (+pi * 4 / 2));
272 for (
int i = 0; i < 32; i++) {
337TEST(math_rotation_types, Euler3Conversion)
340 float3 xyz{0.350041, -0.358896, 0.528994};
348 Quaternion quat_xyz(0.927091f, 0.211322f, -0.124857f, 0.283295f);
349 Quaternion quat_xzy(0.943341f, 0.119427f, -0.124857f, 0.283295f);
350 Quaternion quat_yxz(0.943341f, 0.211322f, -0.124857f, 0.223297f);
351 Quaternion quat_yzx(0.927091f, 0.211322f, -0.214438f, 0.223297f);
352 Quaternion quat_zxy(0.927091f, 0.119427f, -0.214438f, 0.283295f);
353 Quaternion quat_zyx(0.943341f, 0.119427f, -0.214438f, 0.223297f);
356 {0.47251, 0.750174, -0.462572},
357 {0.35124, 0.321087, 0.879508}});
359 {0.504665, 0.810963, -0.296063},
360 {0.303231, 0.154577, 0.940296}});
362 {0.368521, 0.810963, -0.454458},
363 {0.329941, 0.342937, 0.879508}});
365 {0.323403, 0.810963, -0.487596},
366 {0.491982, 0.296063, 0.818719}});
368 {0.474061, 0.810963, -0.342937},
369 {0.465272, 0.0999405, 0.879508}});
371 {0.370072, 0.871751, -0.321087},
372 {0.457911, 0.129553, 0.879508}});
static T sum(const btAlignedObjectArray< T > &items)