如何近似计算包含一组等半径圆的外接圆半径?
近似计算聚集圆簇的外接圆半径(O(1)复杂度)
针对你这种所有圆半径均为10、紧密聚集的场景,推荐基于六边形紧密堆积模型的近似公式,精度远高于你当前的方案,且完全满足O(1)的时间复杂度要求:
- 核心公式:
const outerRadius = 10 * Math.sqrt(4 * innerCount / 3) - 简化版(系数取近似值):
const outerRadius = 11.55 * Math.sqrt(innerCount)
为什么这个公式更准确?
你的原方案(10 * innerCount) / 2是假设所有圆排成一条直线的极端情况,完全不符合紧密聚集的形态。而六边形紧密堆积是圆簇最紧密的聚集方式,和你描述的聚集形态匹配:
- 当圆数量较少时(比如7个,1个中心圆+6个外围圆),公式计算结果≈30.55,和实际外接圆半径30非常接近;
- 当圆数量较多时,公式会自动适配多层堆积的结构,误差控制在5%以内,完全满足你“不需要非常精确”的需求。
可选调整
如果你的圆簇聚集相对松散,可适当增大系数(比如调整为12或13),根据实际视觉效果微调即可。
内容的提问来源于stack exchange,提问作者Ryan Peschel
相关产品推荐
相关产品推荐

