def test_right_exp_coincides(self, n, initial_vec):
     group = SpecialEuclidean(n=n)
     vector_group = SpecialEuclidean(n=n, point_type="vector")
     initial_matrix_vec = group.lie_algebra.matrix_representation(initial_vec)
     vector_exp = vector_group.right_canonical_metric.exp(initial_vec)
     result = group.right_canonical_metric.exp(initial_matrix_vec, n_steps=25)
     expected = vector_group.matrix_from_vector(vector_exp)
     self.assertAllClose(result, expected, atol=1e-6)
示例#2
0
 def test_right_exp_coincides(self):
     vector_group = SpecialEuclidean(n=2, point_type="vector")
     theta = gs.pi / 2
     initial_vec = gs.array([theta, 1.0, 1.0])
     initial_matrix_vec = self.group.lie_algebra.matrix_representation(initial_vec)
     vector_exp = vector_group.right_canonical_metric.exp(initial_vec)
     result = self.group.right_canonical_metric.exp(initial_matrix_vec, n_steps=25)
     expected = vector_group.matrix_from_vector(vector_exp)
     self.assertAllClose(result, expected, atol=1e-6)
示例#3
0
 def test_left_exp_coincides(self):
     vector_group = SpecialEuclidean(n=2, point_type='vector')
     theta = gs.pi / 3
     initial_vec = gs.array([theta, 2., 2.])
     initial_matrix_vec = self.group.lie_algebra.matrix_representation(
         initial_vec)
     vector_exp = vector_group.left_canonical_metric.exp(initial_vec)
     result = self.group.left_canonical_metric.exp(initial_matrix_vec)
     expected = vector_group.matrix_from_vector(vector_exp)
     self.assertAllClose(result, expected)
示例#4
0
    def setUp(self):
        warnings.simplefilter("ignore", category=ImportWarning)
        gs.random.seed(1234)

        group = SpecialEuclidean(n=2, point_type="vector")

        point_1 = gs.array([0.1, 0.2, 0.3])
        point_2 = gs.array([0.5, 5.0, 60.0])

        translation_large = gs.array([0.0, 5.0, 6.0])
        translation_small = gs.array([0.0, 0.6, 0.7])

        elements_all = {
            "translation_large": translation_large,
            "translation_small": translation_small,
            "point_1": point_1,
            "point_2": point_2,
        }
        elements = elements_all
        if geomstats.tests.tf_backend():
            # Tf is extremely slow
            elements = {"point_1": point_1, "point_2": point_2}

        elements_matrices_all = {
            key: group.matrix_from_vector(elements_all[key])
            for key in elements_all
        }
        elements_matrices = elements_matrices_all

        self.group = group
        self.elements_all = elements_all
        self.elements = elements
        self.elements_matrices_all = elements_matrices_all
        self.elements_matrices = elements_matrices

        self.n_samples = 4
示例#5
0
    def setUp(self):
        warnings.simplefilter('ignore', category=ImportWarning)
        gs.random.seed(1234)

        group = SpecialEuclidean(n=2, point_type='vector')

        point_1 = gs.array([0.1, 0.2, 0.3])
        point_2 = gs.array([0.5, 5., 60.])

        translation_large = gs.array([0., 5., 6.])
        translation_small = gs.array([0., 0.6, 0.7])

        elements_all = {
            'translation_large': translation_large,
            'translation_small': translation_small,
            'point_1': point_1,
            'point_2': point_2
        }
        elements = elements_all
        if geomstats.tests.tf_backend():
            # Tf is extremely slow
            elements = {'point_1': point_1, 'point_2': point_2}

        elements_matrices_all = {
            key: group.matrix_from_vector(elements_all[key])
            for key in elements_all
        }
        elements_matrices = elements_matrices_all

        self.group = group
        self.elements_all = elements_all
        self.elements = elements
        self.elements_matrices_all = elements_matrices_all
        self.elements_matrices = elements_matrices

        self.n_samples = 4