code: func (l Line) IntersectCircle(c Circle) Vec {
  	// Get the point on the line closest to the center of the circle.
  	closest := l.Closest(c.Center)
  	cirToClosest := c.Center.To(closest)
  
  	if cirToClosest.Len() >= c.Radius {
  		return ZV
  	}
  
  	return cirToClosest.Scaled(cirToClosest.Len() - c.Radius)
  }
docs: // IntersectCircle will return the shortest Vec such that moving the Line by that Vec will cause the Line and Circle
  // to no longer intesect.  If they do not intersect at all, this function will return a zero-vector.