You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

同圆心圆中从内圆点延伸的水平、垂直线与外圆最近交点求解

同圆心圆中从内圆点延伸的水平、垂直线与外圆最近交点求解

嘿,我来帮你把这个同心圆的交点计算问题拆解清楚~

首先先统一一下前提,避免混淆:

  • 我们把外圆半径记为 $R = \max(r_1, r_2)$,内圆半径记为 $r = \min(r_1, r_2)$,这样不管你给的 $r_1$ 和 $r_2$ 谁大谁小,都能统一处理;如果 $r_1=r_2$,那两圆完全重合,交点就是点 $(x_0,y_0)$ 本身,这个情况先记下来。
  • 已知 $(x_0,y_0)$ 在内圆上,所以它必然满足内圆方程:$x_0^2 + y_0^2 = r^2$。

一、垂直线($x=x_0$)与外圆的最近交点 $(x_1,y_1)$

外圆的方程是 $x^2 + y^2 = R^2$,把 $x=x_0$ 代入进去,就能解出垂直线与外圆的交点纵坐标:
$$y^2 = R^2 - x_0^2$$
所以 $y = \pm\sqrt{R^2 - x_0^2}$,现在要找离 $(x_0,y_0)$ 最近的那个点:

  • 如果 $y_0 \geq 0$,那最近的交点纵坐标就是正的那个:$y_1 = \sqrt{R^2 - x_0^2}$,对应点 $(x_0, \sqrt{R^2 - x_0^2})$
  • 如果 $y_0 < 0$,那最近的交点纵坐标就是负的那个:$y_1 = -\sqrt{R^2 - x_0^2}$,对应点 $(x_0, -\sqrt{R^2 - x_0^2})$

你也可以用内圆方程简化这个表达式,因为 $x_0^2 = r^2 - y_0^2$,代入后 $y_1 = \pm\sqrt{R^2 - (r^2 - y_0^2)} = \pm\sqrt{(R^2 - r^2) + y_0^2}$,不过直接用原始形式计算也很直观。


二、水平线($y=y_0$)与外圆的最近交点 $(x_2,y_2)$

和垂直方向的逻辑完全一致,把 $y=y_0$ 代入外圆方程:
$$x^2 = R^2 - y_0^2$$
得到 $x = \pm\sqrt{R^2 - y_0^2}$,找最近的交点:

  • 如果 $x_0 \geq 0$,最近的交点横坐标是正的那个:$x_2 = \sqrt{R^2 - y_0^2}$,对应点 $(\sqrt{R^2 - y_0^2}, y_0)$
  • 如果 $x_0 < 0$,最近的交点横坐标是负的那个:$x_2 = -\sqrt{R^2 - y_0^2}$,对应点 $(-\sqrt{R^2 - y_0^2}, y_0)$

举个实际例子验证一下

假设内圆半径 $r=2$,外圆半径 $R=5$,内圆上的点 $(x_0,y_0)=(\sqrt{3},1)$(满足 $(\sqrt{3})^2 + 1^2 = 4 = 2^2$):

  • 垂直线交点:代入 $x=\sqrt{3}$,$y^2=25-3=22$,因为 $y_0=1>0$,所以 $y_1=\sqrt{22}\approx4.69$,交点是 $(\sqrt{3}, \sqrt{22})$
  • 水平线交点:代入 $y=1$,$x^2=25-1=24$,因为 $x_0=\sqrt{3}>0$,所以 $x_2=2\sqrt{6}\approx4.90$,交点是 $(2\sqrt{6},1)$

计算一下距离就能发现,垂直线上我们选的点距离原点点更近,完全符合问题要求~

备注:内容来源于stack exchange,提问作者Overjoyed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.23 13:27:38