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

假设大圆半径为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-r|) / d    ->   α = acos ( (|R-r|) / d )

Hpq = atan( (y1-y0)/(x1-x0) )

Hpb = Hpq + α     同理 Hpc = Hpq - α

Hbe = Hpb - PI/2

Hcd = Hpc + PI/2

若两条切线的斜率分别用k1、k2表示, 那么

k1 = tan(Hbe);  k2 = tan(Hcd)

通过距离和朝向我们可以计算出距离直线某点的另一个点, 从而求出切点,比如B(x3, y3)和E(x4, y4)这两个点,

x3 = x0 + R * cos(Hpb)

y3 = y0 + R * sin(Hpb)

x4 = x1 + r * cos(Hpb)

y4 = y1 + r * sin(Hpb)

同理我们可以去求点C和D

最后,知道斜率以及直线上的任意一个点就可以求出直线方程了;

下边再来分析如何求解两条交叉公切线:

如图,求解交叉公切线主要利用对角三角形对应边成比例的思想求出边L,然后就和上边求外公切线一样,求出α的值就可以顺利求出切线方程

假设|PQ|长度为d, 那么 L / (d-L)  = R / r     ->    L = dR / (R +r)

cosα = |PA| / L = R / L =(R + r) / d      ->  α = acos( (R+r) / d )

Hpq = atan( (y1-y0)/(x1-x0) )

Hpa = Hpq + α     同理 Hpb = Hpq - α

Had = Hpa - PI/2

Hbc = Hpb + PI/2

若两条切线的斜率分别用k1、k2表示, 那么

k1 = tan(Had);  k2 = tan(Hbc)

通过距离和朝向我们可以计算出距离直线某点的另一个点, 从而求出切点,比如A(x2, y2)和D(x3, y3)这两个点,

x2 = x0 + R * cos(Hpa)

y2 = y0 + R * sin(Hpa)

x3 = x1 + r * cos(Hpa + PI)

y3 = y1 + r * sin(Hpa + PI)

同理我们可以去求点B和C

最后,知道斜率以及直线上的任意一个点就可以求出直线方程了;

以上就是我求相离位置关系的两圆公切线的基本思路,因为不是很方便表示,可能有的地方不是很清楚,敬请见谅,仅供参考。

两个圆公切线求法_求两圆的公切线计算相关推荐

  1. 已知两圆圆心坐标及半径求两圆交点 (C语言|参数方程求解)

    已知两圆圆心坐标及半径求两圆交点 (C语言|参数方程求解) 在一个二维平面上给定两个圆的圆心横纵坐标.半径共6个参数, 求交点. 这个问题无非是解二元二次方程组.普通二元二次方程联立消元求解的困难在于 ...

  2. 分别已知两直线上的两点,求两直线交点

    分别已知两直线上的两点,求两直线交点 求两直线的交点是初中数学的简单问题了,在直角坐标系中直线有很多种表示方式.同时我们知道两点确定一条直线,已知两点坐标自然能求出直线坐标,已知两直线坐标自然能求出两 ...

  3. 两塑胶柱脚光纤端子_插销两个塑胶柱光纤端子_无塑胶柱光纤端子_无锁螺丝头光纤端子_塑胶双柱脚光纤端子_两塑胶柱无锁螺丝孔光纤端子

    两塑胶柱脚光纤座子_插销两个塑胶柱光纤座子_无塑胶柱光纤座子_无锁螺丝头光纤座子_塑胶双柱脚光纤座子_两塑胶柱无锁螺丝孔光纤座子 光纤耦合器TOSLINK是一种将数字电信号转换为光信号以传输数据的光传 ...

  4. 两个圆公切线求法_两圆的公切线教案

    两圆的公切线教案 第一课时 两圆的公切线(一) 教学目标: (1)理解两圆相切长等有关概念,掌握两圆外公切线长的求法: (2)培养学生的归纳.总结能力: (3)通过两圆外公切线长的求法向学生渗透&qu ...

  5. java 圆的交点_java求两个圆相交坐标

    最近由于项目需要,根据两个圆函数求出相交的坐标.实现代码如下,另感谢两圆求交点算法实现Java代码,虽然他所贡献的代码中存在问题,但仍有借鉴意义. 1.两个圆相交的数学求法 在中学数学中我们知道,一个 ...

  6. 2019牛客多校第四场 I题 后缀自动机_后缀数组_求两个串de公共子串的种类数

    目录 求若干个串的公共子串个数相关变形题 对一个串建后缀自动机,另一个串在上面跑同时计数 广义后缀自动机 后缀数组 其他:POJ 3415 求两个串长度至少为k的公共子串数量 @(牛客多校第四场 I题 ...

  7. excel取差集_求两个excel表格的差集方法

    求两个excel表格的差集方法(适用于第二个表格是第一个表格的子集),会在第一个表格中标注出第二个表格中已有的. 复制并用运时"*/ /*"之间的文字为说明文字,必须删除 使用时点 ...

  8. C语言_求两个整数中的较大者

    解题思路: 用一个函数来实现求两个整数中的较大者.在主函数中调用此函数并输出结果. 编写程序: #include<stdio.h> //stdio函数库包含scanf和printf #in ...

  9. 数据结构与算法_求两个向量的夹角

    已知两个非零向量,作在空间任取一点O,作,则称为向量的夹角,如下图当,两向量同向,否则等于180度两向量反向. 求两向量的公式为: C++代码如下: #include<iostream> ...

最新文章

  1. 怎么看懂别人写的单片机项目代码?
  2. 【敏捷开发】从需求文档出发聊敏捷
  3. 【Laravel】There is no existing directory at “…/storage/logs” and its not buildable: Permission denied
  4. 【MM模块】Subcontracting 委外加工(外包)—2
  5. python约束 与MD5加密写法
  6. JAVA环境配置 ECLIPSE配置(转)
  7. APP搜索框的样式素材模板,可临摹的好素材
  8. 面试准备——Java回顾:基础编程(基本语法、面向对象、异常处理)
  9. uefi windows10 linux,UEFI 启动GPT分区 Win10和Ubuntu16.04双系统安装
  10. 如何下载matlab安装包_MATLAB安装时应该选择哪些模块
  11. 快速部署使用tensorRT加速推理(trt,onnx)
  12. iPhone突然掉电快是什么情况,该如何解决?
  13. Android仿微信语音聊天
  14. 802.11标准及无线网运行模式
  15. 传输线的共模和差模噪声,抑制方法
  16. shell命令查阅端口信息_Linux服务器管理Shell经典命令
  17. tomcat 绑定花生壳免费域名
  18. 在Adobe Acrobat DC中设置PDF单页连续
  19. python正则表达式两个条件_python高级正则表达式
  20. 关于360浏览器及搜狗等浏览器兼容性解决方案

热门文章

  1. Windows(华硕/联想)笔记本上安装黑苹果与win双系统教程
  2. python及pygame雷霆战机游戏项目实战03 碰撞检测
  3. 微软语音合成助手 TTS-VUE 文字转语音工具
  4. 电压表:工作理念、电压方程、电压灵敏度及其应用
  5. Java 堆内存和栈内存
  6. 怎么冻结android os,一键冻结手机应用无需第三方 快的不要不要
  7. 2021 中国软件 100 强,腾讯第二、百度第三,第一竟然是他!
  8. 2018年初级通信工程师考试科目及考试内容介绍
  9. 高等统计物理考题--证明二维情况下不存在玻色爱因斯坦凝聚
  10. reflector使用教程