/* * alignedheaptest.cpp * * Created on: Aug 10, 2019 * Author: gregor */ #include #include "GLTB/geom/affinetransformation.h" TEST(AlignedTransformation, getTransformationmMatrix_rot_scale_trans) { glm::quat quat = glm::angleAxis(float(M_PI / 2), glm::vec3(1, 0, 0)); gltb::AffineTransformation transform(quat, gltb::Scale(glm::vec3(1, 2, 3)), gltb::Translation(glm::vec3(2, 4, 6))); glm::mat4 result = transform.getTransformationMatrix(); ASSERT_FLOAT_EQ(result[0][0], 1); ASSERT_FLOAT_EQ(result[2][1], -2); ASSERT_FLOAT_EQ(result[1][2], 3); ASSERT_FLOAT_EQ(result[3][0], 2); ASSERT_FLOAT_EQ(result[3][1], 4); ASSERT_FLOAT_EQ(result[3][2], 6); } TEST(AlignedTransformation, getTransformationmMatrix_rot_trans_scale) { glm::quat quat = glm::angleAxis(float(M_PI / 2), glm::vec3(1, 0, 0)); gltb::AffineTransformation transform(quat, gltb::Translation(glm::vec3(2, 4, 6)), gltb::Scale(glm::vec3(1, 2, 3))); glm::mat4 result = transform.getTransformationMatrix(); ASSERT_FLOAT_EQ(result[0][0], 1); ASSERT_FLOAT_EQ(result[2][1], -2); ASSERT_FLOAT_EQ(result[1][2], 3); ASSERT_FLOAT_EQ(result[3][0], 2); ASSERT_FLOAT_EQ(result[3][1], 8); ASSERT_FLOAT_EQ(result[3][2], 18); } TEST(AlignedTransformation, getTransformationmMatrix_scale_rot_trans) { glm::quat quat = glm::angleAxis(float(M_PI / 2), glm::vec3(1, 0, 0)); gltb::AffineTransformation transform(gltb::Scale(glm::vec3(1, 2, 3)), quat, gltb::Translation(glm::vec3(2, 4, 6))); glm::mat4 result = transform.getTransformationMatrix(); ASSERT_FLOAT_EQ(result[0][0], 1); ASSERT_FLOAT_EQ(result[2][1], -3); ASSERT_FLOAT_EQ(result[1][2], 2); ASSERT_FLOAT_EQ(result[3][0], 2); ASSERT_FLOAT_EQ(result[3][1], 4); ASSERT_FLOAT_EQ(result[3][2], 6); } TEST(AlignedTransformation, getTransformationmMatrix_scale_trans_rot) { glm::quat quat = glm::angleAxis(float(M_PI / 2), glm::vec3(1, 0, 0)); gltb::AffineTransformation transform(gltb::Scale(glm::vec3(1, 2, 3)), gltb::Translation(glm::vec3(2, 4, 6)), quat); glm::mat4 result = transform.getTransformationMatrix(); ASSERT_FLOAT_EQ(result[0][0], 1); ASSERT_FLOAT_EQ(result[2][1], -3); ASSERT_FLOAT_EQ(result[1][2], 2); ASSERT_FLOAT_EQ(result[3][0], 2); ASSERT_FLOAT_EQ(result[3][1], -6); ASSERT_FLOAT_EQ(result[3][2], 4); } TEST(AlignedTransformation, getTransformationmMatrix_trans_rot_scale) { glm::quat quat = glm::angleAxis(float(M_PI / 2), glm::vec3(1, 0, 0)); gltb::AffineTransformation transform(gltb::Translation(glm::vec3(2, 4, 6)), quat, gltb::Scale(glm::vec3(1, 2, 3))); glm::mat4 result = transform.getTransformationMatrix(); ASSERT_FLOAT_EQ(result[0][0], 1); ASSERT_FLOAT_EQ(result[2][1], -2); ASSERT_FLOAT_EQ(result[1][2], 3); ASSERT_FLOAT_EQ(result[3][0], 2); ASSERT_FLOAT_EQ(result[3][1], -12); ASSERT_FLOAT_EQ(result[3][2], 12); } TEST(AlignedTransformation, getTransformationmMatrix_trans_scale_rot) { glm::quat quat = glm::angleAxis(float(M_PI / 2), glm::vec3(1, 0, 0)); gltb::AffineTransformation transform(gltb::Translation(glm::vec3(2, 4, 6)), gltb::Scale(glm::vec3(1, 2, 3)), quat); glm::mat4 result = transform.getTransformationMatrix(); ASSERT_FLOAT_EQ(result[0][0], 1); ASSERT_FLOAT_EQ(result[2][1], -3); ASSERT_FLOAT_EQ(result[1][2], 2); ASSERT_FLOAT_EQ(result[3][0], 2); ASSERT_FLOAT_EQ(result[3][1], -18); ASSERT_FLOAT_EQ(result[3][2], 8); } int main(int argc, char *argv[]) { ::testing::InitGoogleTest(&argc, argv); return RUN_ALL_TESTS(); }