Beispiel #1
0
 def test_broadcast_transform_points(self):
     t1 = Scale(0.1, 0.1, 0.1)
     N = 10
     P = 7
     M = 20
     x = torch.tensor([0.2] * N)
     y = torch.tensor([0.3] * N)
     z = torch.tensor([0.4] * N)
     tN = Translate(x, y, z)
     p1 = t1.transform_points(torch.randn(P, 3))
     self.assertTrue(p1.shape == (P, 3))
     p2 = t1.transform_points(torch.randn(1, P, 3))
     self.assertTrue(p2.shape == (1, P, 3))
     p3 = t1.transform_points(torch.randn(M, P, 3))
     self.assertTrue(p3.shape == (M, P, 3))
     p4 = tN.transform_points(torch.randn(P, 3))
     self.assertTrue(p4.shape == (N, P, 3))
     p5 = tN.transform_points(torch.randn(1, P, 3))
     self.assertTrue(p5.shape == (N, P, 3))
Beispiel #2
0
 def test_stack(self):
     rotations = random_rotations(3)
     transform3 = Transform3d().rotate(rotations).translate(
         torch.full((3, 3), 0.3))
     transform1 = Scale(37)
     transform4 = transform1.stack(transform3)
     self.assertEqual(len(transform1), 1)
     self.assertEqual(len(transform3), 3)
     self.assertEqual(len(transform4), 4)
     self.assertClose(
         transform4.get_matrix(),
         torch.cat([transform1.get_matrix(),
                    transform3.get_matrix()]),
     )
     points = torch.rand(4, 5, 3)
     new_points_expect = torch.cat([
         transform1.transform_points(points[:1]),
         transform3.transform_points(points[1:]),
     ])
     new_points = transform4.transform_points(points)
     self.assertClose(new_points, new_points_expect)
Beispiel #3
0
 def test_transform_points_fail(self):
     t1 = Scale(0.1, 0.1, 0.1)
     P = 7
     with self.assertRaises(ValueError):
         t1.transform_points(torch.randn(P))