Пример #1
0
 def test_extrinsic_half_plane_extrinsic_composition(self, dim, point_intrinsic):
     x = Hyperboloid(dim, coords_type="intrinsic").to_coordinates(
         point_intrinsic, to_coords_type="extrinsic"
     )
     x_up = Hyperboloid(dim).to_coordinates(x, to_coords_type="half-space")
     x2 = Hyperbolic.change_coordinates_system(x_up, "half-space", "extrinsic")
     self.assertAllClose(x, x2)
Пример #2
0
    def test_extrinsic_half_plane_extrinsic(self):
        x_in = gs.array([0.5, 7], dtype=gs.float64)
        x = self.intrinsic_manifold.to_coordinates(x_in,
                                                   to_coords_type="extrinsic")
        x_up = self.extrinsic_manifold.to_coordinates(
            x, to_coords_type="half-space")

        x2 = Hyperbolic.change_coordinates_system(x_up, "half-space",
                                                  "extrinsic")
        self.assertAllClose(x, x2)
Пример #3
0
    def test_extrinsic_half_plane_extrinsic(self):
        x_in = gs.array([0.5, 7])
        x = self.intrinsic_manifold.to_coordinates(x_in,
                                                   to_coords_type='extrinsic')
        x_up = self.extrinsic_manifold.to_coordinates(
            x, to_coords_type='half-plane')

        x2 = Hyperbolic.change_coordinates_system(x_up, 'half-plane',
                                                  'extrinsic')
        self.assertAllClose(x, x2, atol=1e-8)
Пример #4
0
    def extrinsic_to_intrinsic_coords(self, point_extrinsic):
        """Convert from extrinsic to intrinsic coordinates.

        Parameters
        ----------
        point_extrinsic : array-like, shape=[..., dim_embedding]
            Point in the embedded manifold in extrinsic coordinates,
            i. e. in the coordinates of the embedding manifold.
        """
        belong_point = self.belongs(point_extrinsic)
        if not gs.all(belong_point):
            raise NameError("Point do not belong to the hyperboloid")
        return\
            Hyperbolic.change_coordinates_system(point_extrinsic,
                                                 'extrinsic',
                                                 'intrinsic')
Пример #5
0
    def intrinsic_to_extrinsic_coords(self, point_intrinsic):
        """Convert from intrinsic to extrinsic coordinates.

        Parameters
        ----------
        point_intrinsic : array-like, shape=[..., dim]
            Point in the embedded manifold in intrinsic coordinates.
        """
        if self.dim != point_intrinsic.shape[-1]:
            raise NameError("Wrong intrinsic dimension: "
                            + str(point_intrinsic.shape[-1]) + " instead of "
                            + str(self.dim))
        return\
            Hyperbolic.change_coordinates_system(point_intrinsic,
                                                 'intrinsic',
                                                 'extrinsic')
Пример #6
0
    def intrinsic_to_extrinsic_coords(self, point_intrinsic):
        """Convert point from intrinsic to extrensic coordinates.

        Convert the parameterization of a point in the hyperbolic space
        from its intrinsic coordinates, to its extrinsic coordinates
        in Minkowski space.

        Parameters
        ----------
        point_intrinsic : array-like, shape=[n_samples, n_disk, dim]

        Returns
        -------
        point_extrinsic : array-like, shape=[n_samples, n_disks, dim + 1]
        """
        n_disks = point_intrinsic.shape[1]
        point_extrinsic = gs.stack([
            Hyperbolic.change_coordinates_system(
                point_intrinsic[:, i_disk, ...], 'intrinsic', 'extrinsic')
            for i_disk in range(n_disks)
        ],
                                   axis=1)
        return point_extrinsic