class_docstr: Class used to plot points on the manifold SPD(2).
  
  Elements S of the manifold of 2D Symmetric Positive Definite matrices
  can be conveniently represented by ellipses.
  
  We write :math:`S = O D O^T` with :math:`O` an orthogonal matrix (rotation)
  and :math:`D` a diagonal matrix. The positive eigenvalues, i.e. the elements of
  :math:`D`, are the inverse of the length of the major and minor axes of
  the ellipse. The rotation matrix :math:`O` determines the orientation of the
  2D ellipse in the 2D plane.
  
  Parameters
  ----------
  k_sampling_points : int
      Number of points to sample on the discretized ellipses.
docstr: Compute the ellipse coordinates of a 2D SPD matrix.
  
  Parameters
  ----------
  point : array-like, shape=[2, 2]
      SPD matrix.
  
  Returns
  -------
  x_coords : array-like, shape=[k_sampling_points,]
      x_coords coordinates of the sampling points on the discretized ellipse.
  Y: array-like, shape = [k_sampling_points,]
      y coordinates of the sampling points on the discretized ellipse.
docstr_tok: ["Compute","the","ellipse","coordinates","of","a","2D","SPD","matrix",".","Parameters","--","--","--","--","--","point",":","array-like",",","shape=","[","2",",","2","]","SPD","matrix",".","Returns","--","--","--","-","x_coords",":","array-like",",","shape=","[","k_sampling_points",",","]","x_coords","coordinates","of","the","sampling","points","on","the","discretized","ellipse",".","Y",":","array-like",",","shape","=","[","k_sampling_points",",","]","y","coordinates","of","the","sampling","points","on","the","discretized","ellipse","."]
code: def compute_coordinates(self, point):
      """Compute the ellipse coordinates of a 2D SPD matrix.
  
      Parameters
      ----------
      point : array-like, shape=[2, 2]
          SPD matrix.
  
      Returns
      -------
      x_coords : array-like, shape=[k_sampling_points,]
          x_coords coordinates of the sampling points on the discretized ellipse.
      Y: array-like, shape = [k_sampling_points,]
          y coordinates of the sampling points on the discretized ellipse.
      """
      eigvalues, eigvectors = gs.linalg.eigh(point)
      eigvalues = gs.where(eigvalues < gs.atol, gs.atol, eigvalues)
  
      [eigvalue1, eigvalue2] = eigvalues
  
      rot_sin = eigvectors[1, 0]
      rot_cos = eigvectors[0, 0]
      thetas = gs.linspace(0.0, 2 * gs.pi, self.k_sampling_points + 1)
  
      x_coords = eigvalue1 * gs.cos(thetas) * rot_cos
      x_coords -= rot_sin * eigvalue2 * gs.sin(thetas)
      y_coords = eigvalue1 * gs.cos(thetas) * rot_sin
      y_coords += rot_cos * eigvalue2 * gs.sin(thetas)
      return x_coords, y_coords
  
imports: import matplotlib.pyplot
  from mpl_toolkits.mplot3d import Axes3D
  import geomstats.backend
label_desc: Use image node_id 4 for calling the Ellipses obj's underlying member method code with example usage: obj.compute_coordinates(point) and returns: x_coords,  y_coords