JavaScript如何判断两个相同半径的圆形是否重叠相交
等半径两圆重叠判断方案
核心判断逻辑
两个半径相同的圆形是否重叠,仅需判断两个圆心之间的距离是否小于等于2倍的单圆半径即可:
- 若圆心距离 ≤ 2*半径:两圆重叠(包含相切、完全重合的边界情况),返回
true - 若圆心距离 > 2半径:两圆不重叠,返回
false
为了避免开平方运算带来的不必要性能损耗,可直接比较距离的平方和(2r)的平方,判断结果完全一致
Javascript实现代码
// 入参circle1、circle2需包含属性:圆心x坐标、圆心y坐标、半径r // 已适配你场景中两圆半径永远相等的前提 function checkSameRadiusCirclesOverlap(circle1, circle2) { // 计算x轴、y轴的坐标差 const dx = circle1.x - circle2.x; const dy = circle1.y - circle2.y; // 计算圆心距离平方 const distanceSquare = dx * dx + dy * dy; // 计算2倍半径的平方 const doubleRadius = 2 * circle1.r; const doubleRadiusSquare = doubleRadius * doubleRadius; // 如果不需要包含相切的边界情况,把<=改成<即可 return distanceSquare <= doubleRadiusSquare; }
调用示例
const circleA = { x: 0, y: 0, r: 5 }; const circleB = { x: 8, y: 0, r: 5 }; console.log(checkSameRadiusCirclesOverlap(circleA, circleB)); // 输出true,圆心距离8 < 10,重叠
内容的提问来源于stack exchange,提问作者Steve G.
相关产品推荐
相关产品推荐

