original_docstring: 
      Creates a random rotation matrix. used to randomize initial pose. 
  
      deflection: the magnitude of the rotation. For 0, no rotation; for 1, competely random
      rotation. Small deflection => small perturbation.
      randnums: 3 random numbers in the range [0, 1]. If `None`, they will be auto-generated.
      
docstring: Creates a random rotation matrix. used to randomize initial pose.
  deflection: the magnitude of the rotation. For 0, no rotation; for 1, competely random
  rotation. Small deflection => small perturbation.
  randnums: 3 random numbers in the range [0, 1]. If `None`, they will be auto-generated.
docstring_tokens: Creates a random rotation matrix . used to randomize initial pose . deflection : the magnitude of the rotation . For 0 no rotation ; for 1 competely random rotation . Small deflection = > small perturbation . randnums : 3 random numbers in the range [ 0 1 ] . If ` None ` they will be auto - generated .
code: def rand_rotation_matrix(deflection=1.0, randnums=None):
      """
      Creates a random rotation matrix. used to randomize initial pose. 
  
      deflection: the magnitude of the rotation. For 0, no rotation; for 1, competely random
      rotation. Small deflection => small perturbation.
      randnums: 3 random numbers in the range [0, 1]. If `None`, they will be auto-generated.
      """
      # from http://www.realtimerendering.com/resources/GraphicsGems/gemsiii/rand_rotation.c
  
      if randnums is None:
          randnums = np.random.uniform(size=(3,))
  
      theta, phi, z = randnums
  
      theta = theta * 2.0 * deflection * np.pi  # Rotation about the pole (Z).
      phi = phi * 2.0 * np.pi  # For direction of pole deflection.
      z = z * 2.0 * deflection  # For magnitude of pole deflection.
  
      # Compute a vector V used for distributing points over the sphere
      # via the reflection I - V Transpose(V).  This formulation of V
      # will guarantee that if x[1] and x[2] are uniformly distributed,
      # the reflected points will be uniform on the sphere.  Note that V
      # has length sqrt(2) to eliminate the 2 in the Householder matrix.
  
      r = np.sqrt(z)
      Vx, Vy, Vz = V = (np.sin(phi) * r, np.cos(phi) * r, np.sqrt(2.0 - z))
  
      st = np.sin(theta)
      ct = np.cos(theta)
  
      R = np.array(((ct, st, 0), (-st, ct, 0), (0, 0, 1)))
  
      # Construct the rotation matrix  ( V Transpose(V) - I ) R.
  
      M = (np.outer(V, V) - np.eye(3)).dot(R)
      return M
code_tokens: def rand_rotation_matrix ( deflection = 1.0 , randnums = None ) : if randnums is None : randnums = np . random . uniform ( size = ( 3 , ) ) theta , phi , z = randnums theta = theta * 2.0 * deflection * np . pi phi = phi * 2.0 * np . pi z = z * 2.0 * deflection r = np . sqrt ( z ) Vx , Vy , Vz = V = ( np . sin ( phi ) * r , np . cos ( phi ) * r , np . sqrt ( 2.0 - z ) ) st = np . sin ( theta ) ct = np . cos ( theta ) R = np . array ( ( ( ct , st , 0 ) , ( - st , ct , 0 ) , ( 0 , 0 , 1 ) ) ) M = ( np . outer ( V , V ) - np . eye ( 3 ) ) . dot ( R ) return M
short_docstring: Creates a random rotation matrix.
short_docstring_tokens: Creates a random rotation matrix .
comment: """
      Creates a random rotation matrix. used to randomize initial pose. 
  
      deflection: the magnitude of the rotation. For 0, no rotation; for 1, competely random
      rotation. Small deflection => small perturbation.
      randnums: 3 random numbers in the range [0, 1]. If `None`, they will be auto-generated.
      """$SEP$# from http://www.realtimerendering.com/resources/GraphicsGems/gemsiii/rand_rotation.c$SEP$# Rotation about the pole (Z).$SEP$# For direction of pole deflection.$SEP$# For magnitude of pole deflection.$SEP$# Compute a vector V used for distributing points over the sphere$SEP$# via the reflection I - V Transpose(V).  This formulation of V$SEP$# will guarantee that if x[1] and x[2] are uniformly distributed,$SEP$# the reflected points will be uniform on the sphere.  Note that V$SEP$# has length sqrt(2) to eliminate the 2 in the Householder matrix.$SEP$# Construct the rotation matrix  ( V Transpose(V) - I ) R.