diff --git a/camera/three_d_camera.py b/camera/three_d_camera.py index bd3a72f1..2e0fb91e 100644 --- a/camera/three_d_camera.py +++ b/camera/three_d_camera.py @@ -156,8 +156,8 @@ class ThreeDCamera(Camera): points -= fc rot_matrix = self.get_rotation_matrix() points = np.dot(points, rot_matrix.T) - zs = points[:, 2] - points[:, 0] *= (distance + zs) / distance - points[:, 1] *= (distance + zs) / distance + zs = np.clip(points[:, 2], -np.inf, distance - 0.001) + for i in 0, 1: + points[:, i] *= distance / (distance - zs) points += fc return points