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

标签 algorithm computational-geometry

给定两个平面点 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/

相关文章:

python - 几何 - 将 3D 点划分为具有特定角度的线段

algorithm - 在直线多边形中填充矩形

c++ - 二维中一组点中以 X 轴为底的最大空矩形

寻找路径组合的算法?

algorithm - 用简单语言对算法进行概率分析?

php - 发送和接收编码为 php mysql BLOB 的 PNG

C++ 反向运动学算法/库,其中包括当链中多个节点的位置已知时的 IK 方法

algorithm - 如何计算两个(或更多)矩形的并集多边形

algorithm - 修改后的 MergeSort 的复杂性

c - 随机数计算逻辑