code: func (c Circle) Union(d Circle) Circle {
  	biggerC := maxCircle(c.Norm(), d.Norm())
  	smallerC := minCircle(c.Norm(), d.Norm())
  
  	// Get distance between centers
  	dist := c.Center.To(d.Center).Len()
  
  	// If the bigger Circle encompasses the smaller one, we have the result
  	if dist+smallerC.Radius <= biggerC.Radius {
  		return biggerC
  	}
  
  	// Calculate radius for encompassing Circle
  	r := (dist + biggerC.Radius + smallerC.Radius) / 2
  
  	// Calculate center for encompassing Circle
  	theta := .5 + (biggerC.Radius-smallerC.Radius)/(2*dist)
  	center := Lerp(smallerC.Center, biggerC.Center, theta)
  
  	return Circle{
  		Center: center,
  		Radius: r,
  	}
  }
docs: // Union returns the minimal Circle which covers both `c` and `d`.