class_docstr: Class used to plot points in Kendall shape space of 3D triangles.
  
  The shape space of 2D triangles is isometric to the 2-sphere of radius 1/2
  [K1984]_. This isometry induced another isometry between the shape space of
  3D triangle and the 1-ball of radius pi/4 [LK1993]_. Following the first
  visualization class "KendallSphere" for 2D triangles, this class encodes
  the 2D isometric representation of Kendall shape space of order (3,3).
  
  Attributes
  ----------
  points : list
      List of points to plot on the Kendall sphere.
  coords_type : str
      Type of the points. Can be either 'pre-shape' (for points in Kendall
      pre-shape space) or 'extrinsic' (for points given as 3x2 matrices).
      Optional, default: 'pre-shape'.
  pole : array-like, shape=[3,2]
      Equilateral triangle in 2D (north pole).
  centre : array-like, shape=[3,3]
      Equilateral triangle in 3D (centre).
  ua : array-like, shape=[3,2]
      Tangent vector at north pole toward isosceles triangle at vertex A.
  ub : array-like, shape=[3,2]
      Tangent vector at north pole toward isosceles triangle at vertex B.
  na : array-like, shape=[3,2]
      Tangent vector such that (ua,na) is a positively oriented
      orthonormal basis of the horizontal space at north pole.
  
  References
  ----------
  .. [K1984] David G. Kendall. "Shape Manifolds, Procrustean Metrics, and
      Complex Projective Spaces." Bulletin of the London Mathematical
      Society, Volume 16, Issue 2, March 1984, Pages 81–121.
      https://doi.org/10.1112/blms/16.2.81
  .. [LK1993] Huiling Le and David G. Kendall. "The Riemannian structure of
      Euclidean shape spaces: a novel environment for statistics." Annals of
      statistics, 1993, vol. 21, no 3, p. 1225-1271.
      https://doi.org/10.1112/blms/16.2.81
class_docstr_tok: ["Class","used","to","plot","points","in","Kendall","shape","space","of","3D","triangles",".","The","shape","space","of","2D","triangles","is","isometric","to","the","2-sphere","of","radius","1\/2","[","K1984","]","_",".","This","isometry","induced","another","isometry","between","the","shape","space","of","3D","triangle","and","the","1-ball","of","radius","pi\/4","[","LK1993","]","_",".","Following","the","first","visualization","class","``","KendallSphere","''","for","2D","triangles",",","this","class","encodes","the","2D","isometric","representation","of","Kendall","shape","space","of","order","(","3,3",")",".","Attributes","--","--","--","--","--","points",":","list","List","of","points","to","plot","on","the","Kendall","sphere",".","coords_type",":","str","Type","of","the","points",".","Can","be","either","'pre-shape","'","(","for","points","in","Kendall","pre-shape","space",")","or","'extrinsic","'","(","for","points","given","as","3x2","matrices",")",".","Optional",",","default",":","'pre-shape","'",".","pole",":","array-like",",","shape=","[","3,2","]","Equilateral","triangle","in","2D","(","north","pole",")",".","centre",":","array-like",",","shape=","[","3,3","]","Equilateral","triangle","in","3D","(","centre",")",".","ua",":","array-like",",","shape=","[","3,2","]","Tangent","vector","at","north","pole","toward","isosceles","triangle","at","vertex","A.","ub",":","array-like",",","shape=","[","3,2","]","Tangent","vector","at","north","pole","toward","isosceles","triangle","at","vertex","B.","na",":","array-like",",","shape=","[","3,2","]","Tangent","vector","such","that","(","ua",",","na",")","is","a","positively","oriented","orthonormal","basis","of","the","horizontal","space","at","north","pole",".","References","--","--","--","--","--","..","[","K1984","]","David","G.","Kendall",".","``","Shape","Manifolds",",","Procrustean","Metrics",",","and","Complex","Projective","Spaces",".","''","Bulletin","of","the","London","Mathematical","Society",",","Volume","16",",","Issue","2",",","March","1984",",","Pages","81\u2013121",".","https",":","\/\/doi.org\/10.1112\/blms\/16.2.81","..","[","LK1993","]","Huiling","Le","and","David","G.","Kendall",".","``","The","Riemannian","structure","of","Euclidean","shape","spaces",":","a","novel","environment","for","statistics",".","''","Annals","of","statistics",",","1993",",","vol",".","21",",","no","3",",","p.","1225-1271.","https",":","\/\/doi.org\/10.1112\/blms\/16.2.81"]
docstr: Draw one vector in the tangent space to disk at a base point.
docstr_tok: ["Draw","one","vector","in","the","tangent","space","to","disk","at","a","base","point","."]
code: def draw_vector(self, tangent_vec, base_point, tol=1e-03, **kwargs):
      """Draw one vector in the tangent space to disk at a base point."""
      r_bp, th_bp = self.convert_to_polar_coordinates(base_point)
      bp = gs.array(
          [
              gs.cos(th_bp) * gs.sin(2 * r_bp),
              gs.sin(th_bp) * gs.sin(2 * r_bp),
              gs.cos(2 * r_bp),
          ]
      )
      r_exp, th_exp = self.convert_to_polar_coordinates(
          S33.quotient.metric.exp(
              tol
              * tangent_vec
              / S33.quotient.metric.norm(tangent_vec, base_point),
              base_point,
          )
      )
      exp = gs.array(
          [
              gs.cos(th_exp) * gs.sin(2 * r_exp),
              gs.sin(th_exp) * gs.sin(2 * r_exp),
              gs.cos(2 * r_exp),
          ]
      )
      pole = gs.array([0.0, 0.0, 1.0])
  
      tv = exp - gs.dot(exp, bp) * bp
      u_tv = tv / gs.linalg.norm(tv)
      u_r = (gs.dot(pole, bp) * bp - pole) / gs.linalg.norm(
          gs.dot(pole, bp) * bp - pole
      )
      u_th = gs.cross(bp, u_r)
      x_r, x_th = gs.dot(u_tv, u_r), gs.dot(u_tv, u_th)
  
      bp = self.convert_to_planar_coordinates(base_point)
      u_r = bp / gs.linalg.norm(bp)
      u_th = gs.array([[0.0, -1.0], [1.0, 0.0]]) @ u_r
      tv = S33.quotient.metric.norm(tangent_vec, base_point) * (
          x_r * u_r + x_th * u_th
      )
  
      self.ax.quiver(bp[0], bp[1], tv[0], tv[1], **kwargs)
  
imports: import matplotlib.pyplot
  from mpl_toolkits.mplot3d import Axes3D
  import geomstats.backend
  from geomstats.geometry.matrices import Matrices
  from geomstats.geometry.pre_shape import PreShapeSpace
label_desc: Use image node_id 11 for calling the KendallDisk obj's underlying member method code with example usage: obj.draw_vector(tangent_vec, base_point, tol) without return types