def test_invalid_param_combinations(self, depth, height, width,
                                     distortion_scale, device, dtype):
     random_perspective_generator3d(batch_size=8,
                                    height=height,
                                    width=width,
                                    distortion_scale=distortion_scale.to(
                                        device=device, dtype=dtype))
 def test_same_on_batch(self, device, dtype):
     torch.manual_seed(42)
     batch_size = 2
     res = random_perspective_generator3d(batch_size,
                                          200,
                                          200,
                                          200,
                                          torch.tensor(0.5,
                                                       device=device,
                                                       dtype=dtype),
                                          same_on_batch=True)
     expected = dict(
         start_points=torch.tensor(
             [[[0., 0., 0.], [199., 0., 0.], [199., 199., 0.],
               [0., 199., 0.], [0., 0., 199.], [199., 0., 199.],
               [199., 199., 199.], [0., 199., 199.]],
              [[0., 0., 0.], [199., 0., 0.], [199., 199., 0.],
               [0., 199., 0.], [0., 0., 199.], [199., 0., 199.],
               [199., 199., 199.], [0., 199., 199.]]],
             device=device,
             dtype=dtype),
         end_points=torch.tensor(
             [[[2.9077, 3.1455, 6.1793], [196.3710, 26.3086, 23.8392],
               [151.2382, 152.5624, 4.1772], [6.6320, 191.1473, 18.7684],
               [42.1260, 43.5251, 180.1234], [168.3782, 4.4055, 163.9409],
               [167.8298, 177.1361, 195.2633],
               [34.1715, 183.3881, 183.5471]],
              [[2.9077, 3.1455, 6.1793], [196.3710, 26.3086, 23.8392],
               [151.2382, 152.5624, 4.1772], [6.6320, 191.1473, 18.7684],
               [42.1260, 43.5251, 180.1234], [168.3782, 4.4055, 163.9409],
               [167.8298, 177.1361, 195.2633],
               [34.1715, 183.3881, 183.5471]]],
             device=device,
             dtype=dtype))
     assert res.keys() == expected.keys()
     assert_allclose(res['start_points'],
                     expected['start_points'],
                     atol=1e-4,
                     rtol=1e-4)
     assert_allclose(res['end_points'],
                     expected['end_points'],
                     atol=1e-4,
                     rtol=1e-4)
 def test_same_on_batch(self, device, dtype):
     torch.manual_seed(42)
     batch_size = 2
     res = random_perspective_generator3d(batch_size,
                                          200,
                                          200,
                                          200,
                                          torch.tensor(0.5,
                                                       device=device,
                                                       dtype=dtype),
                                          same_on_batch=True)
     expected = dict(
         start_points=torch.tensor(
             [[[0., 0., 0.], [199., 0., 0.], [199., 199., 0.],
               [0., 199., 0.], [0., 0., 199.], [199., 0., 199.],
               [199., 199., 199.], [0., 199., 199.]],
              [[0., 0., 0.], [199., 0., 0.], [199., 199., 0.],
               [0., 199., 0.], [0., 0., 199.], [199., 0., 199.],
               [199., 199., 199.], [0., 199., 199.]]],
             device=device,
             dtype=dtype),
         end_points=torch.tensor(
             [[[44.1135, 45.7502, 19.1432], [151.0347, 19.5224, 30.0448],
               [186.1714, 159.3179, 47.0386], [6.6593, 152.2701, 29.6790],
               [43.4702, 28.3858, 161.9453], [177.5298, 44.2721, 170.3048],
               [185.6710, 167.6275, 185.5184],
               [22.0682, 184.1540, 157.4157]],
              [[44.1135, 45.7502, 19.1432], [151.0347, 19.5224, 30.0448],
               [186.1714, 159.3179, 47.0386], [6.6593, 152.2701, 29.6790],
               [43.4702, 28.3858, 161.9453], [177.5298, 44.2721, 170.3048],
               [185.6710, 167.6275, 185.5184],
               [22.0682, 184.1540, 157.4157]]],
             device=device,
             dtype=dtype))
     assert res.keys() == expected.keys()
     assert_allclose(res['start_points'],
                     expected['start_points'],
                     atol=1e-4,
                     rtol=1e-4)
     assert_allclose(res['end_points'],
                     expected['end_points'],
                     atol=1e-4,
                     rtol=1e-4)
 def test_random_gen(self, device, dtype):
     torch.manual_seed(42)
     batch_size = 2
     res = random_perspective_generator3d(
         batch_size, 200, 200, 200,
         torch.tensor(0.5, device=device, dtype=dtype))
     expected = dict(
         start_points=torch.tensor(
             [[[0., 0., 0.], [199., 0., 0.], [199., 199., 0.],
               [0., 199., 0.], [0., 0., 199.], [199., 0., 199.],
               [199., 199., 199.], [0., 199., 199.]],
              [[0., 0., 0.], [199., 0., 0.], [199., 199., 0.],
               [0., 199., 0.], [0., 0., 199.], [199., 0., 199.],
               [199., 199., 199.], [0., 199., 199.]]],
             device=device,
             dtype=dtype),
         end_points=torch.tensor(
             [[[2.9077, 3.1455, 6.1793], [196.3710, 26.3086, 23.8392],
               [151.2382, 152.5624, 4.1772], [6.6320, 191.1473, 18.7684],
               [42.1260, 43.5251, 180.1234], [168.3782, 4.4055, 163.9409],
               [167.8298, 177.1361, 195.2633],
               [34.1715, 183.3881, 183.5471]],
              [[1.5670, 2.0183, 46.5954], [191.3937, 13.2522, 6.5217],
               [186.4072, 187.3296, 11.2833], [15.8784, 168.2796, 29.8886],
               [42.4501, 1.6248, 183.5378], [177.3848, 46.7149, 192.8844],
               [177.6152, 184.5908, 149.9299],
               [42.2815, 179.7861, 194.0347]]],
             device=device,
             dtype=dtype),
     )
     assert res.keys() == expected.keys()
     assert_allclose(res['start_points'],
                     expected['start_points'],
                     atol=1e-4,
                     rtol=1e-4)
     assert_allclose(res['end_points'],
                     expected['end_points'],
                     atol=1e-4,
                     rtol=1e-4)
 def test_random_gen(self, device, dtype):
     torch.manual_seed(42)
     batch_size = 2
     res = random_perspective_generator3d(
         batch_size, 200, 200, 200,
         torch.tensor(0.5, device=device, dtype=dtype))
     expected = dict(
         start_points=torch.tensor(
             [[[0., 0., 0.], [199., 0., 0.], [199., 199., 0.],
               [0., 199., 0.], [0., 0., 199.], [199., 0., 199.],
               [199., 199., 199.], [0., 199., 199.]],
              [[0., 0., 0.], [199., 0., 0.], [199., 199., 0.],
               [0., 199., 0.], [0., 0., 199.], [199., 0., 199.],
               [199., 199., 199.], [0., 199., 199.]]],
             device=device,
             dtype=dtype),
         end_points=torch.tensor(
             [[[44.1135, 45.7502, 19.1432], [151.0347, 19.5224, 30.0448],
               [186.1714, 159.3179, 47.0386], [6.6593, 152.2701, 29.6790],
               [43.4702, 28.3858, 161.9453], [177.5298, 44.2721, 170.3048],
               [185.6710, 167.6275, 185.5184],
               [22.0682, 184.1540, 157.4157]],
              [[5.2657, 13.4747, 17.9406], [189.0318, 27.3596, 0.3080],
               [151.4223, 195.2367, 44.3007], [29.1605, 182.1176, 40.4487],
               [28.8963, 45.1991, 171.2670], [181.8843, 31.7171, 180.7795],
               [163.4786, 151.6794, 159.5485],
               [14.0707, 159.5684, 169.5268]]],
             device=device,
             dtype=dtype),
     )
     assert res.keys() == expected.keys()
     assert_allclose(res['start_points'],
                     expected['start_points'],
                     atol=1e-4,
                     rtol=1e-4)
     assert_allclose(res['end_points'],
                     expected['end_points'],
                     atol=1e-4,
                     rtol=1e-4)