docstr: Tests the Jacobian of model_to_screen.
docstr_tok: ["Tests","the","Jacobian","of","model_to_screen","."]
code: def test_model_to_screen_jacobian_preset(self):
      """Tests the Jacobian of model_to_screen."""
      point_world_space_init = np.array(
          ((3.1, 4.1, 5.1), (-1.1, 2.2, -3.1))
      )
      camera_position_init = np.array(
          ((0.0, 0.0, 0.0), (0.4, -0.8, 0.1))
      )
      camera_up_init = np.array(((0.0, 1.0, 0.0), (0.0, 0.0, 1.0)))
      look_at_init = np.array(((0.0, 0.0, 1.0), (0.0, 1.0, 0.0)))
      vertical_field_of_view_init = np.array(
          ((60.0 * math.pi / 180.0,), (65 * math.pi / 180,))
      )
      lower_left_corner_init = np.array(((0.0, 0.0), (10.0, 20.0)))
      screen_dimensions_init = np.array(
          ((501.0, 501.0), (400.0, 600.0))
      )
      near_init = np.array(((0.01,), (1.0,)))
      far_init = np.array(((4.0,), (3.0,)))
  
      # Build matrices.
      model_to_eye_matrix = look_at.right_handed(
          camera_position_init, look_at_init, camera_up_init
      )
      perspective_matrix = perspective.right_handed(
          vertical_field_of_view_init,
          screen_dimensions_init[..., 0:1]
          / screen_dimensions_init[..., 1:2],
          near_init,
          far_init,
      )
  
      args = [
          point_world_space_init,
          model_to_eye_matrix,
          perspective_matrix,
          screen_dimensions_init,
          lower_left_corner_init,
      ]
  
      with self.subTest(name="jacobian_y_projection"):
          self.assert_jacobian_is_correct_fn(
              lambda *args: glm.model_to_screen(*args)[0],
              args,
              atol=1e-4,
          )
  
imports: import math
  from absl.testing import flagsaver
  from absl.testing import parameterized
  import numpy
  import tensorflow
  from tensorflow_graphics.geometry.transformation import look_at
  from tensorflow_graphics.rendering.camera import perspective
  from tensorflow_graphics.rendering.opengl import math
  from tensorflow_graphics.util import test_case
label_desc: Use image node_id 27 for calling the MathTest obj's underlying member method code with example usage: obj.test_model_to_screen_jacobian_preset() without return types