From 3b0c8befbb493438bfa8ddab5646d64746380a05 Mon Sep 17 00:00:00 2001 From: Ben Visness Date: Sun, 28 Aug 2016 23:07:59 -0500 Subject: [PATCH] Add tests for projection (Zak should review) --- test/hmm_test.cpp | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/test/hmm_test.cpp b/test/hmm_test.cpp index 013cee1..78c2817 100644 --- a/test/hmm_test.cpp +++ b/test/hmm_test.cpp @@ -1236,6 +1236,41 @@ TEST(Division, Mat4Scalar) EXPECT_FLOAT_EQ(m4.Elements[3][3], 8.0f); } +TEST(Projection, Orthographic) +{ + hmm_mat4 projection = HMM_Orthographic(-10.0f, 10.0f, -5.0f, 5.0f, 0.0f, -10.0f); + + hmm_vec3 original = HMM_Vec3(5.0f, 5.0f, -5.0f); + hmm_vec4 projected = projection * HMM_Vec4v(original, 1); + + EXPECT_FLOAT_EQ(projected.X, 0.5f); + EXPECT_FLOAT_EQ(projected.Y, 1.0f); + EXPECT_FLOAT_EQ(projected.Z, -2.0f); + EXPECT_FLOAT_EQ(projected.W, 1.0f); +} + +TEST(Projection, Perspective) +{ + hmm_mat4 projection = HMM_Perspective(90.0f, 2.0f, 5.0f, 15.0f); + + { + hmm_vec3 original = HMM_Vec3(5.0f, 5.0f, -15.0f); + hmm_vec4 projected = projection * HMM_Vec4v(original, 1); + EXPECT_FLOAT_EQ(projected.X, 5.0f); + EXPECT_FLOAT_EQ(projected.Y, 10.0f); + EXPECT_FLOAT_EQ(projected.Z, 15.0f); + EXPECT_FLOAT_EQ(projected.W, 15.0f); + } + { + hmm_vec3 original = HMM_Vec3(5.0f, 5.0f, -5.0f); + hmm_vec4 projected = projection * HMM_Vec4v(original, 1); + EXPECT_FLOAT_EQ(projected.X, 5.0f); + EXPECT_FLOAT_EQ(projected.Y, 10.0f); + EXPECT_FLOAT_EQ(projected.Z, -5.0f); + EXPECT_FLOAT_EQ(projected.W, 5.0f); + } +} + TEST(Transformations, Translate) { hmm_mat4 translate = HMM_Translate(HMM_Vec3(1.0f, -3.0f, 6.0f));