c++ 已知直线外一点,求对称点
下面通过两种直线方程的形式,求解点关于直线的距离、垂足、对称点公式。
问题描述1:
已知点的坐标(x0,y0),直线的方程为Ax+By+C = 0;
求点到直线上的距离d、点在直线上的垂足(x, y)、点关于直线的对称点(x’, y’)。
解决方法:
(1)距离:
d = ( Ax0 + By0 + C ) / sqrt ( A*A + B*B );
这个“距离”有符号,表示点在直线的上方或者下方,取绝对值表示欧式距离。
(2)垂足:
求解两个方程:
(a) Ax + By + C = 0;
(b) (y - y0) / (x - x0) = B / A;
解得,x = ( B*B*x0 - A*B*y0 - A*C ) / ( A*A + B*B );
y = ( -A*B*x0 + A*A*y0 - B*C ) / ( A*A + B*B );
(3)对称点:
方法一:求解两个方程:(a)、A*( x’+x0 ) / 2 + B*( y‘+y0 ) / 2 + C = 0; (b)、(y’ - y0) / (x‘ - x0) = B / A;
方法二:把问题转化为求解已知点关于垂足的对称点:
首先,求出垂足;则x’ = 2*x - x0; y‘ = 2*y - y0;
解得,x’ = ( (B*B - A*A)*x0 - 2*A*B*y0 - 2*A*C ) / ( A*A + B*B );
y‘ = ( -2*A*B*x0 + (A*A - B*B) * y0 - 2*B*C ) / ( A*A+B*B );
方法三:首先,求一系数k,k = - 2 * (A*x0 + B*y0 + C) / (A*A+B*B);
则, x' = x0 + k * A;
y' = y0 + k * B;
问题描述2:
已知点的坐标(x0,y0),直线上的两点(x1,y1)、(x2,y2);
求点到直线上的距离d、点在直线上的垂足(x, y)、点关于直线的对称点(x’, y‘)。
解决方法:
方法一:把直线化两点式为一般式,则一般式中的A = y2 -y1; B = x1 - x2; C = x2*y1 - x1*y2; 带入上面的公式,即可求出相应的距离、垂足、对称点。
方法二:
(a)距离:
首先,求出垂足的坐标;
则d = sqrt( (x - x0) * (x - x0) + (y - y0) * (y - y0));
(b)垂足:
首先,求一系数 k: 设直线的起点和终点分别为A(x1, y1)、B(x2, y2),直线外一点为C(x0, y0),垂足为D;并设k = |AD| / |AB。
则,k * AB = AD = AC + CD,又 AB * CD= 0;所以,k * AB* AB = AC *AB,故 k =AC * AB / (AB * AB)。
带入坐标,即得,
k = ( (x0- x1) * (x2 - x1) + (y0 - y1) * (y2 - y1) ) / ( (x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1) ) ;
则 x = x1 + k*(x2 - x1); y = y1 + k*(y2 - y1);
(c)对称点:
同问题描述1中的方法。
c++ 已知直线外一点,求对称点相关推荐
- C++实现求两条直线的交点,以及已知直线外一点求垂足
已知直线上的两个点或者已知直线的斜率和截距两种情况下求交点和垂足. 两种情况来自于实际求解中可以找到边界上的两个点列出直线方程,也可以用更准确的求法即获取多个点拟合一条直线. 1.求两直线的交点(两点 ...
- 已知直线上两点求其一般式
已知直线上两点P1 P2,求直线的一般式方程. 已知直线上的两点P1(X1,Y1) P2(X2,Y2), P1 P2两点不重合.求该直线的一般式方程AX+BY+C=0 解当x1=x2时,直线方程为x- ...
- js已知斜率和一点求方程
要求解一条直线的方程,我们需要知道直线的斜率和一点.对于JavaScript来说,我们可以使用以下公式来计算: y - y1 = m(x - x1) 其中,m是直线的斜率,(x1, y1)是直线上已知 ...
- 已知圆外一点坐标,以及圆心坐标、半径,求圆的切线方程
圆心在坐标原点 圆心不在坐标原点
- 已知直线过两点,和线外一点,求直线和垂足及垂距
//直线过P1,P2两点,P0为直线外一点,求P0到直线的距离和P0在直线上的垂足 void HelloWorld::initPoint(cocos2d::CCPoint point0,cocos2d ...
- 矩阵——“大材小用”之已知点关于已知直线求其对称点
矩阵 A = [ cos 2 θ sin 2 θ sin 2 θ − cos 2 θ ] \mathbf{A}= \begin{bmatrix} \cos2\theta & \ ...
- 已知3个坐标点xy画圆弧_尺规作图之过一点作已知直线的垂线
点击蓝色字免费订阅,每天收到这样的好信息最近有学生提到这个问题,也做个动态的课件存着先.先看看效果图: 具体过程 1.画一条线段(整条直线太长不好看)和一个自由点 A=(-6.99177, -1.65 ...
- matlab已知三点求夹角,已知3点如何求其中两点对第3点的夹角
公告: 为响应国家净网行动,部分内容已经删除,感谢读者理解. 话题:已知3点如何求其中两点对第3点的夹角? 问题详情:有3个问题:1)已知3点如何求其中两点对第3点的夹角?2)如何回答:1)已知3点求 ...
- matlab求球心坐标,已知四顶点坐标求四面体外接球球心坐标
最近在做一个关于机器人标定的问题,发现求空间一点相对六轴机器人的坐标问题实际是一个求已知四顶点坐标求四面体外接球球心坐标的问题.首先控制机器人(携带工具)以四个不同姿态接触被测点,要注意四个姿态要保证 ...
最新文章
- 2011年1月1日,开篇,起点。
- Oracle Golden Gate 系列十四 -- 监控 GG 状态 说明
- scala 函数中嵌套函数_Scala合成函数
- Fliptile——搜索+二进制优化
- Linux下遍历目录下的文件
- html-css练习题(天天生鲜静态网页制作)文末有完整版代码地址链接
- 浙江网信办处置44家违规网站 包含网易游戏、花瓣网等
- 怎样使用计算机上的高级共享设置,win7打印机共享怎么设置
- C++之异常捕获和处理
- 如何改变“只收藏不阅读”的习惯
- You Probably Dont Need Derived State
- Windows Mobile 6 模拟器绿色中文版 - 在PC上模拟并运行智能手机的软件游戏
- FIT2CLOUD飞致云荣膺“2021年度OSCHINA优秀开源技术团队”奖项
- html苹果笔记本文稿如何转换,苹果电脑的pages文档想要变成word格式该如何转换...
- 计算机简单构图,涨姿势了!人像二次构图技巧原来这么简单
- 人工智能与就业系列调研 | 老板电器的新蝶变
- python startswith正则表达式_Python 正则表达式
- 深度学习中的数据增强(上)
- 天宝营养冲刺深交所:年营收12.5亿 拟募资7亿
- 俞敏洪一分钟励志演讲
热门文章
- Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[store_wa
- 好久都没去过电影院了!用Python网络爬虫来看看最近电影院都有哪些上映的电影
- Android编译chromium
- 寒假集训重要内容总结
- #边学边记 必修4 高项:对事的管理 第5章 项目成本管理 之 制订成本管理计划
- 本机设置单网卡多IP,彻底离线可用也不影响互联网和局域网
- [Vue warn]: Unknown custom element did you register the component correctly? vue.js:597
- 人人都是公司分析专家 市值 股价 估值
- 助力阿米巴经营,实现数字化转型——普元阿米加系统架构与实践
- routeros 3322电信联通脚本