想出一种方法来找到以 x 轴为中心覆盖两点的最小圆

Come up with a method to find the smallest circle that covers two points with its center in x axis

给定两个平面点p1=(a1,b1)p2=(a2,b2)和一个line y=0,设计一个算法来找到覆盖这两个点的最小圆,使得它的圆心(x, 0)位于在 y=0 上。没有时间或 space 要求。

虽然这个问题看起来很简单,但是我觉得解决起来有点棘手。你能帮忙吗?谢谢!

如果两点都在圆的外周上:

  • 求 [p1, p2] 的中点: midpoint := ((a1+a2)/2, (b1+b2)/2))
  • 在中点找到垂直于 [p1, p2] 的直线
  • 找到这条线与 x 轴的交点
  • 这个交点是你圆的中点

编辑

如果两个点都应该是 "filled" 圆的一部分:

求出两个点的x值:a1,b1

如果圆心(在上面找到)在 [(a1,0), (b1,0)] 内,那么你有最小的圆

如果上面找到的中心是 < a1 则将其移动到 (a1,0)

如果中心 > b1 则将其移动到 (b1,0)