code: def make_quaternion(theta, *axis):
      '''Given an angle and an axis, create a quaternion.'''
      x, y, z = axis
      r = np.sqrt(x * x + y * y + z * z)
      st = np.sin(theta / 2.)
      ct = np.cos(theta / 2.)
      return [x * st / r, y * st / r, z * st / r, ctf make_quaternion(theta, *axis):
      '''Given an angle and an axis, create a quaternion.'''
      x, y, z = axis
      r = np.sqrt(x * x + y * y + z * z)
      st = np.sin(theta / 2.)
      ct = np.cos(theta / 2.)
      return [x * st / r, y * st / r, z * st / r, ct]
docs: Given an angle and an axis, create a quaternion.