给定两个平面点 p1=(a1,b1)
和 }}p2=(a2,b2)}
和一个 line y=0
, 设计一个算法来找到最小的圆,它覆盖两个点,使得它的中心 (xədsəcu, 0)
₩ 位于 \y=㎜0
上。没有时间或空间要求。
虽然这个问题看起来很简单,但我觉得解决起来有点棘手。你能帮忙吗?谢谢!
最佳答案
如果两个点都在圆的外周上:
- 找到 [p1, p2] 的中点:midpoint := ((a1+a2)/2, (b1+b2)/2))
- 在中点找到垂直于 [p1, p2] 的直线
- 找到这条线与x轴的交点
- 这个交点是你圆圈的中点
编辑
如果两个点都应该是“实心”圆的一部分:
求出两点的x值:a1,b1
如果圆心(在上面找到)在 [(a1,0), (b1,0)] 之内,那么你有最小的圆
如果上面找到的中心是 < a1 然后将它移动到 (a1,0)
如果中心 > b1 则将其移动到 (b1,0)
关于algorithm - 想出一种方法来找到以 x 轴为中心覆盖两点的最小圆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30730207/