求圆外一点做圆切线的切点坐标(算法)

求圆外一点做圆切线的切点坐标(算法)

解此题的常规方法是圆的方程和切线方程联立解的两个点的坐标,这种方法过于繁琐,而且在代码中不易实现。由此想到用向量旋转来解此题,解法如下。

知识点提要

二维坐标下向量旋转后的向量坐标公式。如下图:

解题思路

解题思路就是通过以点到圆心的向量旋转得到新的点到圆心的向量,然后乘以模长得到坐标。

C程序代码

#include <stdio.h>
#include<math.h>
struct Point
{  // 声明结构体类型double x;      // 该点的x坐标double y;      // 该点的y坐标
}C,P,Q1,Q2,U;
// C是圆心的坐标 P是点的坐标 Q1,Q2是切点坐标 U是点到圆心的单位向量坐标
int main()
{double r =0; // 圆的半径double distance=0; // 圆心r 到p 点的距离double length=0; // 点p 到切点的距离double angle =0; // 切线与点心连线的夹角printf("请输入C点坐标:\n");scanf("%lf %lf",&C.x,&C.y);printf("请输入P点坐标:\n");scanf("%lf %lf",&P.x,&P.y);printf("请输入圆的半径:\n");scanf("%lf",&r);// 求出点到圆心的距离distance =sqrt((P.x-C.x)*(P.x-C.x)+ (P.y-C.y)*(P.y-C.y));// 判断是否符合要求 distance<=r 不符合则返回 否则进行运算if(distance<=r){printf("您输入的数值不在范围内!\n");return 0;}// 点p 到切点的距离length = sqrt(distance*distance-r*r);// 点到圆心的单位向量U.x=(C.x-P.x)/distance;U.y=(C.y-P.y)/distance;// 计算切线与点心连线的夹角angle = asin(r/distance);// 向正反两个方向旋转单位向量Q1.x = U.x * cos(angle)  -  U.y * sin(angle);Q1.y = U.x * sin(angle)  +  U.y * cos(angle);Q2.x = U.x * cos(-angle) -  U.y * sin(-angle);Q2.y = U.x * sin(-angle) +  U.y * cos(-angle);// 得到新座标Q1.x = ( Q1.x + P.x) * length;Q1.y = ( Q1.y + P.y) * length;Q2.x = ( Q2.x + P.x) * length;Q2.y = ( Q2.y + P.y) * length;// 输出坐标printf("Q1的坐标为:(%.1f,%.1f),Q2的坐标为:(%.1f,%.1f) \n",Q1.x,Q1.y,Q2.x,Q2.y);return 0;
}

求圆外一点做圆切线的切点坐标(算法)相关推荐

  1. js过圆外一点的直线与圆相切的切点坐标计算

    由圆外一点P1(x1,y1)向圆(x - a)2 + (y - b)2 = R2作切线,切线与圆相切的切点是P0(x0,y0) 方法一: 公式法 先求直线P0P1直线方程 因为P0P1⊥OP0 向量O ...

  2. 已知圆外一点坐标,以及圆心坐标、半径,求圆的切线方程

    圆心在坐标原点 圆心不在坐标原点

  3. 怎么用matlab赋值圆孔,求一个用MATLAB做圆孔或圆屏衍射的实验,要求程序正确,能出图像,非常感谢...

    满意答案 usrdu 2013.11.22 采纳率:50%    等级:13 已帮助:9126人 %%傅里叶变换法 clear all z1=20; r=4; N=512; d=180; lambda ...

  4. 射影几何----过两相交直线外一点做一直线通过两直线的交点----利用帕普斯定理

  5. 过椭圆外一点引两条切线方程_过椭圆上任意一点的切线方程引发的思考与结论...

    过椭圆上任意一点的切线方程引发的思考与结论 邓魁甲 江西省赣州市第三中学 341000 最近笔者在讲授高三第一轮复习时遇见复习资料上一个题目:过椭圆外一点 向椭圆 作切线,与椭圆切于 两点,可知经过 ...

  6. 圆与圆的位置关系题目含答案_中考总复习:圆的专题复习-圆的性质及与圆有关的位置关系考点分析...

    大家好,欢迎进入Math实验室- 专注于数学的我是用心的! 考点:垂径定理 知识点分析: 1.垂径定理:垂直于弦的直径平分这条弦,并且平分弦所对的两条弧. 2.结论: ①平分弦(不是直径)的直径垂直于 ...

  7. C++继承——以应用抽象类,求圆、圆内接正方形、圆外切正方形的面积和周长为例

    c++中基类的继承及其使用,以圆的内接正方形和外切正方形为例 1:C++中继承的方式 C++中的继承主要分为三类:public公有继承.protected保护继承以及private私有继承,其使用范围 ...

  8. 两圆的外切线与内切线的切点算法

    最近想画两球水滴效果所有在网上找两圆外切点和内切点的算法,找了很久没有找到所以自己写了一个工具类来计算两圆的公切线点.具体效果如下图: 根据CircleUtils类的getCircleTangentP ...

  9. 过椭圆外一点引两条切线方程_椭圆外一点引椭圆的两条切线互相垂直问题巧解 -...

    椭圆外一点引椭圆的两条切线互相垂直问题巧解 x2y2 问题: 已知椭圆c: 2?2?1(a?b?0),点P(x0 ,y0)是椭圆外一点,且由点P引椭 ab圆的两条切线互相垂直,则点P(x0,y0)的轨 ...

  10. 过椭圆外一点引两条切线方程_椭圆外一点引椭圆的两条切线互相垂直问题巧解...

    椭圆外一点引椭圆的两条切线互相垂直问题巧解 1椭圆外一点引椭圆的两条切线互相垂直问题巧解 问题: 已知椭圆 c: ,点 P (x 0 , y 0 )是椭圆外一点,且由点 P 引椭 ) 0 ( 1 2 ...

最新文章

  1. Exchange笔记之使用OWA加密访问邮箱
  2. 计算机信息应用知识题库,计算机基础知识题库(含答案).doc
  3. Java字符编码的转化问题
  4. 安装gem_Python安装第三方库及常见问题处理方法汇总
  5. Win11系统没有声卡驱动怎么解决 Win11系统没有声卡驱动解决方法
  6. 马里兰大学calce电池循环测试数据集_Nature系列/Joule/Angew/EES超强盘点:水体系电池10大热点论文及发文趋势...
  7. 金蝶移动bos开发教程_移动BOS开发 -- 移动表单
  8. flash绘制荷花多个图层_《荷花》Flash动画课件
  9. html写一个3d地球特效,html5 canvas+three.js绘制3D地球自转动画特效
  10. 十二个开源UML工具
  11. 死链提交为什么不能提交 html文件,搜狗死链提交
  12. 【大数据技术干货】(还不懂数仓,数据中心?看这一篇就够了!)在实际的开发生产中,让你了解企业级数据中心整体架构(DB+ETL+ODS+DW+DM)的各个层次的过程详解,数据联系及功能区分
  13. QGIS进行坐标转换
  14. Linux C/C++程序崩溃bug调试方法
  15. TCP的三次握手详解
  16. 设置vim 显示行号
  17. 如何发动一次ARP欺骗攻击
  18. Guía de Inversión Minera en Argentina阿根廷矿业投资指引
  19. SLF4J的错误汇总
  20. 13台根域名服务器的维护费用,根域名服务器只有13台吗

热门文章

  1. HUAWEI Mate40Pro解除账号忘记密码ID强制刷机鸿蒙系统激活锁能解开吗
  2. 扫描仪显示计算机繁忙或故障,打印机无法扫描怎么回事 游戏设备问题解决分享!...
  3. 计算机网络网络层之虚电路网络
  4. BBRv2 Cruise 阶段的 inflight 补偿
  5. android 播放器全屏模式,ArtVideoPlayer 一个灵活的Android视频播放器,支持全屏,小屏播放...
  6. win10安装SVN失败问题汇总
  7. 汇编语言之div命令
  8. math.floor javascript
  9. win7旗舰版通知windows不是正版副本解决方法
  10. 最新!7月份火爆Github的热门Python项目