class_docstr: Private class for the n-dimensional hypersphere.
  
  Class for the n-dimensional hypersphere embedded in the
  (n+1)-dimensional Euclidean space.
  
  By default, points are parameterized by their extrinsic
  (n+1)-coordinates. For dimensions 1 and 2, this can be changed with the
  `default_coords_type` parameter. For dimensions 1 (the circle),
  the intrinsic coordinates correspond angles in radians, with 0. mapping
  to point [1., 0.]. For dimension 2, the intrinsic coordinates are the
  spherical coordinates from the north pole, i.e. where angles [0., 0.]
  correspond to point [0., 0., 1.].
  
  Parameters
  ----------
  dim : int
      Dimension of the hypersphere.
  
  default_coords_type : str, {'extrinsic', 'intrinsic'}
      Type of representation for dimensions 1 and 2.
docstr: Convert point from extrinsic to spherical coordinates.
  
  Convert from the extrinsic coordinates, i.e. embedded in Euclidean
  space of dim 3 to spherical coordinates in the hypersphere.
  Spherical coordinates are defined from the north pole, i.e.
  angles [0., 0.] correspond to point [0., 0., 1.].
  Only implemented in dimension 2.
  
  Parameters
  ----------
  point_extrinsic : array-like, shape=[..., 3]
      Point on the sphere, in extrinsic coordinates.
  
  Returns
  -------
  point_spherical : array_like, shape=[..., 2]
      Point on the sphere, in spherical coordinates relative to the
      north pole.
docstr_tok: ["Convert","point","from","extrinsic","to","spherical","coordinates",".","Convert","from","the","extrinsic","coordinates",",","i.e",".","embedded","in","Euclidean","space","of","dim","3","to","spherical","coordinates","in","the","hypersphere",".","Spherical","coordinates","are","defined","from","the","north","pole",",","i.e",".","angles","[","0.",",","0",".","]","correspond","to","point","[","0.",",","0.",",","1.","]",".","Only","implemented","in","dimension","2",".","Parameters","--","--","--","--","--","point_extrinsic",":","array-like",",","shape=","[","...",",","3","]","Point","on","the","sphere",",","in","extrinsic","coordinates",".","Returns","--","--","--","-","point_spherical",":","array_like",",","shape=","[","...",",","2","]","Point","on","the","sphere",",","in","spherical","coordinates","relative","to","the","north","pole","."]
code: def extrinsic_to_spherical(self, point_extrinsic):
      """Convert point from extrinsic to spherical coordinates.
  
      Convert from the extrinsic coordinates, i.e. embedded in Euclidean
      space of dim 3 to spherical coordinates in the hypersphere.
      Spherical coordinates are defined from the north pole, i.e.
      angles [0., 0.] correspond to point [0., 0., 1.].
      Only implemented in dimension 2.
  
      Parameters
      ----------
      point_extrinsic : array-like, shape=[..., 3]
          Point on the sphere, in extrinsic coordinates.
  
      Returns
      -------
      point_spherical : array_like, shape=[..., 2]
          Point on the sphere, in spherical coordinates relative to the
          north pole.
      """
      theta = gs.arccos(point_extrinsic[..., -1])
      x = point_extrinsic[..., 0]
      y = point_extrinsic[..., 1]
      phi = gs.arctan2(y, x)
      phi = gs.where(phi < 0, phi + 2 * gs.pi, phi)
      return gs.stack([theta, phi], axis=-1)
  
imports: import logging
  import math
  from itertools import product
  from scipy.stats import beta
  import geomstats.algebra_utils
  import geomstats.backend
  from geomstats.geometry.base import LevelSet
  from geomstats.geometry.euclidean import Euclidean
  from geomstats.geometry.riemannian_metric import RiemannianMetric
  from geomstats.vectorization import get_batch_shape, repeat_out
label_desc: Use image node_id 12 for calling the _Hypersphere obj's underlying member method code with example usage: obj.extrinsic_to_spherical(point_extrinsic) and returns: gs