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)
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)
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)
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')
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')
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