求圆外一点做圆切线的切点坐标(算法)
求圆外一点做圆切线的切点坐标(算法)
求圆外一点做圆切线的切点坐标(算法)
解此题的常规方法是圆的方程和切线方程联立解的两个点的坐标,这种方法过于繁琐,而且在代码中不易实现。由此想到用向量旋转来解此题,解法如下。
知识点提要
二维坐标下向量旋转后的向量坐标公式。如下图:
解题思路
解题思路就是通过以点到圆心的向量旋转得到新的点到圆心的向量,然后乘以模长得到坐标。
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;
}
求圆外一点做圆切线的切点坐标(算法)相关推荐
- js过圆外一点的直线与圆相切的切点坐标计算
由圆外一点P1(x1,y1)向圆(x - a)2 + (y - b)2 = R2作切线,切线与圆相切的切点是P0(x0,y0) 方法一: 公式法 先求直线P0P1直线方程 因为P0P1⊥OP0 向量O ...
- 已知圆外一点坐标,以及圆心坐标、半径,求圆的切线方程
圆心在坐标原点 圆心不在坐标原点
- 怎么用matlab赋值圆孔,求一个用MATLAB做圆孔或圆屏衍射的实验,要求程序正确,能出图像,非常感谢...
满意答案 usrdu 2013.11.22 采纳率:50% 等级:13 已帮助:9126人 %%傅里叶变换法 clear all z1=20; r=4; N=512; d=180; lambda ...
- 射影几何----过两相交直线外一点做一直线通过两直线的交点----利用帕普斯定理
- 过椭圆外一点引两条切线方程_过椭圆上任意一点的切线方程引发的思考与结论...
过椭圆上任意一点的切线方程引发的思考与结论 邓魁甲 江西省赣州市第三中学 341000 最近笔者在讲授高三第一轮复习时遇见复习资料上一个题目:过椭圆外一点 向椭圆 作切线,与椭圆切于 两点,可知经过 ...
- 圆与圆的位置关系题目含答案_中考总复习:圆的专题复习-圆的性质及与圆有关的位置关系考点分析...
大家好,欢迎进入Math实验室- 专注于数学的我是用心的! 考点:垂径定理 知识点分析: 1.垂径定理:垂直于弦的直径平分这条弦,并且平分弦所对的两条弧. 2.结论: ①平分弦(不是直径)的直径垂直于 ...
- C++继承——以应用抽象类,求圆、圆内接正方形、圆外切正方形的面积和周长为例
c++中基类的继承及其使用,以圆的内接正方形和外切正方形为例 1:C++中继承的方式 C++中的继承主要分为三类:public公有继承.protected保护继承以及private私有继承,其使用范围 ...
- 两圆的外切线与内切线的切点算法
最近想画两球水滴效果所有在网上找两圆外切点和内切点的算法,找了很久没有找到所以自己写了一个工具类来计算两圆的公切线点.具体效果如下图: 根据CircleUtils类的getCircleTangentP ...
- 过椭圆外一点引两条切线方程_椭圆外一点引椭圆的两条切线互相垂直问题巧解 -...
椭圆外一点引椭圆的两条切线互相垂直问题巧解 x2y2 问题: 已知椭圆c: 2?2?1(a?b?0),点P(x0 ,y0)是椭圆外一点,且由点P引椭 ab圆的两条切线互相垂直,则点P(x0,y0)的轨 ...
- 过椭圆外一点引两条切线方程_椭圆外一点引椭圆的两条切线互相垂直问题巧解...
椭圆外一点引椭圆的两条切线互相垂直问题巧解 1椭圆外一点引椭圆的两条切线互相垂直问题巧解 问题: 已知椭圆 c: ,点 P (x 0 , y 0 )是椭圆外一点,且由点 P 引椭 ) 0 ( 1 2 ...
最新文章
- Exchange笔记之使用OWA加密访问邮箱
- 计算机信息应用知识题库,计算机基础知识题库(含答案).doc
- Java字符编码的转化问题
- 安装gem_Python安装第三方库及常见问题处理方法汇总
- Win11系统没有声卡驱动怎么解决 Win11系统没有声卡驱动解决方法
- 马里兰大学calce电池循环测试数据集_Nature系列/Joule/Angew/EES超强盘点:水体系电池10大热点论文及发文趋势...
- 金蝶移动bos开发教程_移动BOS开发 -- 移动表单
- flash绘制荷花多个图层_《荷花》Flash动画课件
- html写一个3d地球特效,html5 canvas+three.js绘制3D地球自转动画特效
- 十二个开源UML工具
- 死链提交为什么不能提交 html文件,搜狗死链提交
- 【大数据技术干货】(还不懂数仓,数据中心?看这一篇就够了!)在实际的开发生产中,让你了解企业级数据中心整体架构(DB+ETL+ODS+DW+DM)的各个层次的过程详解,数据联系及功能区分
- QGIS进行坐标转换
- Linux C/C++程序崩溃bug调试方法
- TCP的三次握手详解
- 设置vim 显示行号
- 如何发动一次ARP欺骗攻击
- Guía de Inversión Minera en Argentina阿根廷矿业投资指引
- SLF4J的错误汇总
- 13台根域名服务器的维护费用,根域名服务器只有13台吗
热门文章
- HUAWEI Mate40Pro解除账号忘记密码ID强制刷机鸿蒙系统激活锁能解开吗
- 扫描仪显示计算机繁忙或故障,打印机无法扫描怎么回事 游戏设备问题解决分享!...
- 计算机网络网络层之虚电路网络
- BBRv2 Cruise 阶段的 inflight 补偿
- android 播放器全屏模式,ArtVideoPlayer 一个灵活的Android视频播放器,支持全屏,小屏播放...
- win10安装SVN失败问题汇总
- 汇编语言之div命令
- math.floor javascript
- win7旗舰版通知windows不是正版副本解决方法
- 最新!7月份火爆Github的热门Python项目