Returns interior angle of two vector(0 <= θ <= pi)
    Args:
      p1, p2: point (x, y)
      o: origin
    Raises:
      ValueError: p1 or p2 is overlapped with origin

def interior_angle(p1, p2, o=(0, 0)):
    """ Returns interior angle of two vector(0 <= θ <= pi)
    Args:
      p1, p2: point (x, y)
      o: origin
    Raises:
      ValueError: p1 or p2 is overlapped with origin
    """
    v1 = vector(o, p1)
    v2 = vector(o, p2)
    len1 = distance(o, p1)
    len2 = distance(o, p2)
    try:
        return acos(dot_product(v1, v2) / (len1 * len2))
    except ZeroDivisionError:
        raise ValueError("p1 or p2 is overlapped with origin")