code: def test_dimensions_ray_params_in_ndc(self, device, dtype):
      cameras = create_four_cameras(device, dtype)
      uniform_sampler_four_cameras = UniformRaySampler(
          2, 3.5, False, device=device, dtype=dtype
      )
      uniform_sampler_four_cameras.calc_ray_params(cameras)
      (
          origins_ndc,
          directions_ndc,
      ) = uniform_sampler_four_cameras.transform_ray_params_world_to_ndc(
          cameras
      )
      assert origins_ndc.shape == (3 * 28 + 45, 3)
      assert directions_ndc.shape == (3 * 28 + 45, 3)
  
imports: import math
  import torch
  from kornia.core import Device
  from kornia.geometry.camera import PinholeCamera
  from kornia.nerf.samplers import RandomGridRaySampler, RandomRaySampler, UniformRaySampler, calc_ray_t_vals, cameras_for_ids, sample_lengths, sample_ray_points
  from kornia.testing import assert_close
label_desc: Use image node_id 5 for calling the TestRaySampler_3DPoints obj's underlying member method code with example usage: obj.test_dimensions_ray_params_in_ndc(device, dtype) without return types