已知圆心与半径,求两圆连心线与各自圆周交点的坐标
求解连心线与两圆圆周的交点坐标
嘿,这个问题其实就是向量几何的基础应用,一步步拆解下来超清晰,我给你捋明白具体怎么做:
第一步:明确已知变量
先把所有已知条件用清晰的符号定义好,避免混乱:
- 圆1的圆心坐标:
C₁ = (x₁, y₁),半径:r₁ - 圆2的圆心坐标:
C₂ = (x₂, y₂),半径:r₂
第二步:计算连心线的核心参数
首先算出两圆心之间的方向向量和距离:
- 从C₁指向C₂的向量:
V = (x₂ - x₁, y₂ - y₁) - 两圆心的直线距离(向量V的模长):
d = √[(x₂ - x₁)² + (y₂ - y₁)²]注意:如果d=0,说明两圆心重合,此时直线与圆的交点要么有无数个(两圆重合),要么没有(半径不等),这种特殊情况咱们暂时先排除,默认d>0。
第三步:得到单位方向向量
把方向向量V转换成单位向量u(长度为1的向量,方便后续按半径长度移动):u = ( (x₂ - x₁)/d , (y₂ - y₁)/d )
第四步:计算两个交点坐标
现在就可以直接算出每个圆上的目标交点了:
- 圆1上的交点:从C₁出发,沿着连心线指向C₂的方向移动r₁的距离,坐标为:
P₁ = (x₁ + r₁*(x₂ - x₁)/d , y₁ + r₁*(y₂ - y₁)/d ) - 圆2上的交点:从C₂出发,沿着连心线指向C₁的方向移动r₂的距离,坐标为:
P₂ = (x₂ - r₂*(x₂ - x₁)/d , y₂ - r₂*(y₂ - y₁)/d )
举个实际例子验证
假设:
- C₁=(0,0),r₁=2
- C₂=(5,0),r₂=1
计算过程:
- V=(5-0, 0-0)=(5,0)
- d=√(5²+0²)=5
- u=(5/5, 0/5)=(1,0)
- P₁=(0 + 21, 0 + 20)=(2,0)
- P₂=(5 - 11, 0 - 10)=(4,0)
你看,这两个点正好在连心线(x轴)上,分别在两个圆的圆周上,完全符合要求~
内容的提问来源于stack exchange,提问作者Sanky




