两个圆公切线求法_求两圆的公切线计算

关于两圆的公切线计算我们首先需要搞清楚的是两个圆之间有哪些位置关系,两个圆的位置包括内含、内切、外切、外离几种方式,可以看出位置关系可以根据“两圆心之间的距离”与“两圆半径和”以及“两圆半径差”之间的关系判断。 假设大圆半径为R,小圆半径为 r, 把“两圆心之间的距离”表示为d,“两圆半径和”表示为s,“两圆半径差”表示为x,那么:d = |R + r|;x =|R - r|;可以得出各位置...
摘要由CSDN通过智能技术生成

关于两圆的公切线计算我们首先需要搞清楚的是两个圆之间有哪些位置关系,两个圆的位置包括内含、内切、外切、外离几种方式,可以看出位置关系可以根据“两圆心之间的距离”与“两圆半径和”以及“两圆半径差”之间的关系判断。

假设大圆半径为R,小圆半径为 r, 把“两圆心之间的距离”表示为d, “两圆半径和”表示为s, “两圆半径差”表示为x,那么:

d = |R + r|;

x = |R - r|;

可以得出各位置关系必须满足以下相应条件:

内含:    d > 0 && d < x

内切:    d  > 0 && d = x

外切:    d = s

外离:    d > s

从图中我们也可以看出不同位置关系的公切线分布情况

内切位置的公切线比较容易求解,而外切、外离位置情况下公切线求解是相对复杂的,这次主要分析如何求出处于外离位置关系的两圆之间的公切线。

首先,我们先分析如何求解外公切线;

如图所示(1.以下角度均是用弧度值表示;2. 为了方便,假设有P、Q两点, 则两点之间的朝向暂用Hpq表示 ):

cosα =|PA| / |PQ| = (|PB| - |AB|) / |PQ|  =  (|R

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要找出三个公切线,我们先要确定三个是否存在公共切点。如果存在,那么公切线将通过这些切点。以下是一种实现方法: 首先,我们需要计算两个之间的距离,然后检查这些距离是否等于三个的半径之和。如果等于,则表示存在公切点。 接下来,我们可以通过两个的外公切线方程来找到这些切点。对于每对,我们可以通过解决一个二次方程来找到切点的坐标。 代码示例如下: ```python import math # 计算两个之间的距离 def calc_distance(center1, center2): return math.sqrt((center2[0] - center1[0])**2 + (center2[1] - center1[1])**2) # 找到两个公切线 def find_tangent_circles(center1, radius1, center2, radius2): distance = calc_distance(center1, center2) # 如果距离不等于两个的半径之和,则不存在公切点 if distance != radius1 + radius2: return [] # 计算切点的坐标 x = (radius1 * center2[0] + radius2 * center1[0]) / (radius1 + radius2) y = (radius1 * center2[1] + radius2 * center1[1]) / (radius1 + radius2) return [(x, y)] # 找到三个公切线 def find_common_tangent_circles(center1, radius1, center2, radius2, center3, radius3): # 找到两个的公切点 tangent_points_12 = find_tangent_circles(center1, radius1, center2, radius2) tangent_points_23 = find_tangent_circles(center2, radius2, center3, radius3) tangent_points_31 = find_tangent_circles(center3, radius3, center1, radius1) # 如果有任意一对没有公切点,则不存在公切线 if not tangent_points_12 or not tangent_points_23 or not tangent_points_31: return [] # 返回三对切点 return [tangent_points_12[0], tangent_points_23[0], tangent_points_31[0]] # 示例输入 center1 = (0, 0) radius1 = 1 center2 = (2, 0) radius2 = 1 center3 = (1, 2) radius3 = 1 # 查找三个公切线 common_tangents = find_common_tangent_circles(center1, radius1, center2, radius2, center3, radius3) # 输出结果 print("三个公切线:") for tangent in common_tangents: print(tangent) ``` 以上代码将输出三个的公切点的坐标。请根据实际情况修改示例输入,以适应您的具体需

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值