def test_ndc_to_screen_exception_screen_dimensions_raised(self): """Tests that an exception is raised when `screen_dimensions` is not strictly positive.""" point = np.random.uniform(size=(3,)) lower_left_corner = np.random.uniform(size=(2,)) screen_dimensions = np.random.uniform(-1.0, 0.0, size=(2,)) near = np.random.uniform(1.0, 10.0, size=(1,)) far = near + np.random.uniform(0.1, 1.0, size=(1,)) with self.subTest("negative_screen_dimensions"): with self.assertRaises(tf.errors.InvalidArgumentError): self.evaluate( glm.ndc_to_screen(point, lower_left_corner, screen_dimensions, near, far)) with self.subTest("zero_screen_dimensions"): with self.assertRaises(tf.errors.InvalidArgumentError): self.evaluate( glm.ndc_to_screen(point, lower_left_corner, np.array((0.0, 0.0)), near, far))
def test_ndc_to_screen_exception_far_raised(self): """Tests that an exception is raised if `far` is not greater than `near`.""" point = np.random.uniform(size=(3,)) lower_left_corner = np.random.uniform(size=(2,)) screen_dimensions = np.random.uniform(1.0, 2.0, size=(2,)) near = np.random.uniform(1.0, 10.0, size=(1,)) far = near + np.random.uniform(-1.0, 0.0, size=(1,)) with self.assertRaises(tf.errors.InvalidArgumentError): self.evaluate( glm.ndc_to_screen(point, lower_left_corner, screen_dimensions, near, far))
def test_ndc_to_screen_preset(self): """Tests that ndc_to_screen generates expected results.""" point = ((1.1, 2.2, 3.3), (5.1, 5.2, 5.3)) lower_left_corner = ((6.4, 4.8), (0.0, 0.0)) screen_dimensions = ((640.0, 480.0), (300.0, 400.0)) near = ((1.0,), (11.0,)) far = ((10.0,), (100.0,)) pred = glm.ndc_to_screen(point, lower_left_corner, screen_dimensions, near, far) gt = ((678.40002441, 772.79998779, 20.34999847), (915.0, 1240.0, 291.3500061)) self.assertAllClose(pred, gt)
def test_ndc_to_screen_preset(self): """Tests that ndc_to_screen generates expected results.""" point = ((0.0, 0.0, 0.0), (1.0, 1.0, 0.0), (-1.0, -1.0, 1.0), (1.0, -1.0, -1.0)) lower_left_corner = ((0.0, 0.0), (0.0, 0.0), (3.0, 4.0), (4.0, 3.0)) screen_dimensions = ((10.0, 10.0), (5.0, 10.0), (20.0, 20.0), (15.0, 35.0)) near = ((1.0,), (1.0,), (2.0,), (3.0,)) far = ((11.0,), (11.0,), (20.0,), (4.0,)) pred = glm.ndc_to_screen(point, lower_left_corner, screen_dimensions, near, far) gt = ((5.0, 5.0, 6.0), (5.0, 10.0, 6.0), (3.0, 4.0, 20.0), (19.0, 3.0, 3.0)) self.assertAllClose(pred, gt)