public void AllRaysDirectionIsSameAsCamerasFrontDirection() { Camera orthographic = new OrthographicCamera(Vector3.Zero); orthographic.Rotate(0, (float)Math.PI / 2, 0); for (int i = 0; i < 10; i++) { for (int j = 0; j < 10; j++) { Ray ray = orthographic.GetRay((float)i / 10, (float)j / 10); VectorsShouldBeApproximately(ray.Direction, new Vector3(1, 0, 0), Ray.Epsilon); } } }
public void OrthographicCamera_GetRay_center_gives_camera_position() { var position = new Point(10.0f, 20.0f, -100.0f); var up = new Vector(0.0f, 1.0f, 0.0f); var right = new Vector(1.0f, 0.0f, 0.0f); var width = 10u; var height = 10u; var camera = new OrthographicCamera(position, up, right, width, height); var ray = camera.GetRay(5.0f, 5.0f); Assert.AreEqual(position, ray.Start); Assert.AreEqual(new Vector(0.0f, 0.0f, 1.0f), ray.Direction); }
public void OrthographicCamera_GetRay_throws_given_too_large_x() { var position = new Point(10.0f, 20.0f, -100.0f); var up = new Vector(0.0f, 1.0f, 0.0f); var right = new Vector(1.0f, 0.0f, 0.0f); var width = 10u; var height = 10u; var camera = new OrthographicCamera(position, up, right, width, height); camera.GetRay(10.0f, 5.0f); }
public void OrthographicCamera_GetRay_zeros_give_bottom_left_corner() { var position = new Point(10.0f, 20.0f, -100.0f); var up = new Vector(0.0f, 1.0f, 0.0f); var right = new Vector(1.0f, 0.0f, 0.0f); var width = 10u; var height = 10u; var camera = new OrthographicCamera(position, up, right, width, height); var ray = camera.GetRay(0.0f, 0.0f); Assert.AreEqual(new Point(5.0f, 15.0f, -100.0f), ray.Start); Assert.AreEqual(new Vector(0.0f, 0.0f, 1.0f), ray.Direction); }