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