docs: def vector_projection(v1, v2):
      '''compute the vector projection of v1 upon v2
  
      Args:
          v1, v2: iterable
          indices 0, 1, 2 corresponding to cartesian coordinates
  
      Returns:
          3-vector of the projection of point p onto the direction of v
      '''
      return scalar_projection(v1, v2) * v2 / np.linalg.norm(v2)