From c4cc784003a3545bf2c33b7978663b270388b701 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Lemaire?= Date: Thu, 13 Jun 2013 17:37:29 +0200 Subject: [PATCH] Adding small unit tests --- src/rendering/camera.c | 5 +++++ src/testing/test_camera.c | 7 +++++++ 2 files changed, 12 insertions(+) diff --git a/src/rendering/camera.c b/src/rendering/camera.c index 1556f61..8967525 100644 --- a/src/rendering/camera.c +++ b/src/rendering/camera.c @@ -309,6 +309,11 @@ Vector3 cameraUnproject(CameraDefinition* camera, Vector3 point) { point.x = (point.x / (0.5 * camera->width) - 1.0); point.y = -(point.y / (0.5 * camera->height) - 1.0); + if (point.z < 1.0) + { + point.x = -point.x; + point.y = -point.y; + } return m4Transform(camera->unproject, point); } diff --git a/src/testing/test_camera.c b/src/testing/test_camera.c index 0fc2143..3cff93f 100644 --- a/src/testing/test_camera.c +++ b/src/testing/test_camera.c @@ -29,6 +29,9 @@ START_TEST(test_camera_projection) Vector3 point = cameraProject(cam, v3(12.0, 5.2, -6.3)); point = cameraUnproject(cam, point); ck_assert_vector_values(point, 12.0, 5.2, -6.3); + point = cameraProject(cam, v3(-25.1, 8.3, 1.3)); + point = cameraUnproject(cam, point); + ck_assert_vector_values(point, -25.1, 8.3, 1.3); cameraDeleteDefinition(cam); } @@ -45,6 +48,10 @@ START_TEST(test_camera_depth) /* Test the real depth getter */ Vector3 point = cameraProject(cam, v3(12.5, 0.0, 0.0)); ck_assert_double_eq(cameraGetRealDepth(cam, point), 12.5); + point = cameraProject(cam, v3(12.5, 8.0, -3.0)); + ck_assert_double_eq(cameraGetRealDepth(cam, point), 12.5); + point = cameraProject(cam, v3(12.5, 12.0, 58.0)); + ck_assert_double_eq(cameraGetRealDepth(cam, point), 12.5); cameraDeleteDefinition(cam); }