docs: def rot1(angle, form='c'):
      """Euler rotation about first axis
  
      This computes the rotation matrix associated with a rotation about the first
      axis. It will output matrices assuming column or row format vectors. 
  
      For example, to transform a vector from reference frame b to reference frame a:
  
      Column Vectors : a = rot1(angle, 'c').dot(b)
      Row Vectors    : a = b.dot(rot1(angle, 'r'))
  
      It should be clear that rot1(angle, 'c') = rot1(angle, 'r').T
  
      Parameters
      ----------
      angle : float
          Angle of rotation about first axis. In radians
      form : str
          Flag to choose between row or column vector convention.
  
      Returns
      -------
      mat : numpy.ndarray of shape (3,3)
          Rotation matrix
      """
      cos_a = np.cos(angle)
      sin_a = np.sin(angle)
      rot_mat = np.identity(3)
  
      if form=='c':
          rot_mat[1, 1] = cos_a
          rot_mat[1, 2] = -sin_a
          rot_mat[2, 1] = sin_a
          rot_mat[2, 2] = cos_a
      elif form=='r':
          rot_mat[1, 1] = cos_a
          rot_mat[1, 2] = sin_a
          rot_mat[2, 1] = -sin_a
          rot_mat[2, 2] = cos_a
      else:
          print("Unknown input. 'r' or 'c' for row/column notation.")
          return 1
  
      return rot_mat