当前位置: 首页 > news >正文

平面上点到直线的距离

文章目录

    • 平面上点到直线的距离

平面上点到直线的距离

  • 设坐标平面上有点 P ( x 1 , y 1 ) P(x_1,y_1) P(x1,y1)和直线 l : A x + B y + C = 0 l:Ax+By+C=0 l:Ax+By+C=0, A , B A,B A,B不全为0
  • P P P到直线 l l l的的距离的算法推导如下
    • 作直线 m m m通过点 P ( x 1 , y 1 ) P(x_1,y_1) P(x1,y1),并且和直线 l l l垂直,设垂足为 P 0 ( x 0 , y 0 ) P_0(x_0,y_0) P0(x0,y0)
    • 令: d 2 = ∣ P 0 P 1 ∣ 2 = ( x 1 − x 0 ) 2 + ( y 1 − y 0 ) 2 d^2=|P_0P_1|^2=(x_1-x_0)^2+(y_1-y_0)^2 d2=P0P12=(x1x0)2+(y1y0)2(0),所求的就是 d d d
    • 由直线垂直对应的方程关系可设直线 P P 0 PP_0 PP0的方程为 B x − A y + D = 0 B{x}-Ay+D=0 BxAy+D=0(1)
      • 因为 P P P P P 0 PP_0 PP0上,从而 B x 0 − A y 0 + D = 0 Bx_0-Ay_0+D=0 Bx0Ay0+D=0(1-1)
      • 两式相减,得 B ( x − x 0 ) − A ( y − y 0 ) = 0 B(x-x_0)-A(y-y_0)=0 B(xx0)A(yy0)=0(1-2)
      • P 0 P_0 P0代入到(1-2),得 B ( x 0 − x 1 ) − A ( y 0 − y 1 ) B(x_0-x_1)-A(y_0-y_1) B(x0x1)A(y0y1)=0(1-3)
    • 又因为 P 0 P_0 P0还在 l l l上,从而 A x 0 + B y 0 + C = 0 Ax_0+By_0+C=0 Ax0+By0+C=0,从而 C = − A x 0 − B y 0 C=-Ax_0-By_0 C=Ax0By0(1-4),
    • 构造 t = A x 1 + B y 1 + C t=Ax_1+By_1+C t=Ax1+By1+C,由(1-4),得 t = A x 1 + B y 1 − A x 0 − B y 0 t=Ax_1+By_1-Ax_0-By_0 t=Ax1+By1Ax0By0= A ( x 1 − x 0 ) + B ( y 1 − y 0 ) A(x_1-x_0)+B(y_1-y_0) A(x1x0)+B(y1y0)(1-5),即 A ( x 1 − x 0 ) + B ( y 1 − y 0 ) = t A(x_1-x_0)+B(y_1-y_0)=t A(x1x0)+B(y1y0)=t(1-6)
      • 将(1-3)两边平方加上(1-6)两边平方,整理得
      • ( A 2 + B 2 ) [ ( x 1 − x 0 ) 2 + ( y − y 0 ) 2 ] (A^2+B^2)[(x_1-x_0)^2+(y-y_0)^2] (A2+B2)[(x1x0)2+(yy0)2]= t 2 t^2 t2(1-7);代入(0),得 ( A 2 + B 2 ) d 2 (A^2+B^2)d^2 (A2+B2)d2= t 2 t^2 t2
      • 所以 d 2 d^2 d2= t 2 ( A 2 + B 2 ) \frac{t^2}{(A^2+B^2)} (A2+B2)t2
      • d d d= ∣ t ∣ A 2 + B 2 \frac{|t|}{\sqrt{A^2+B^2}} A2+B2 t= ∣ A x 1 + B y 1 + C ∣ A 2 + B 2 \frac{|Ax_1+By_1+C|}{\sqrt{A^2+B^2}} A2+B2 Ax1+By1+C(1-8)

相关文章:

  • Navicat 连接 GaussDB分布式的快速入门
  • 【Python】人工智能-机器学习——不调库手撕深度网络分类问题
  • 编程应用实际场景:台球厅怎么样用电脑给客人计时,台球计时收费系统操作教程
  • 接口测试-Jmeter使用
  • 模式识别II改进版Python
  • 对于初学者来说,从哪些方面开始学习 Java 编程比较好?
  • 【WPF】应用程序和已知安卓设备的局域网IP之间进行通信
  • P1009 [NOIP1998 普及组] 阶乘之和
  • SSRF攻击实例讲解
  • 大数据技术13:HBase分布式列式数据库
  • FS基础概念
  • 蓝桥杯 day01 奇怪的数列 特殊日期
  • python selenium chrome114版本之后环境配置和携带缓存打开chrome
  • ros2+gazebo建立机器人
  • leetcode 二数之和 三数之和 四数之和
  • 【译】JS基础算法脚本:字符串结尾
  • “大数据应用场景”之隔壁老王(连载四)
  • 【跃迁之路】【699天】程序员高效学习方法论探索系列(实验阶段456-2019.1.19)...
  • E-HPC支持多队列管理和自动伸缩
  • HTTP那些事
  • MySQL QA
  • Selenium实战教程系列(二)---元素定位
  • swift基础之_对象 实例方法 对象方法。
  • Traffic-Sign Detection and Classification in the Wild 论文笔记
  • windows-nginx-https-本地配置
  • 短视频宝贝=慢?阿里巴巴工程师这样秒开短视频
  • 多线程 start 和 run 方法到底有什么区别?
  • 分类模型——Logistics Regression
  • 函数式编程与面向对象编程[4]:Scala的类型关联Type Alias
  • 设计模式(12)迭代器模式(讲解+应用)
  • 深入体验bash on windows,在windows上搭建原生的linux开发环境,酷!
  • 使用SAX解析XML
  • 体验javascript之美-第五课 匿名函数自执行和闭包是一回事儿吗?
  • 远离DoS攻击 Windows Server 2016发布DNS政策
  • nb
  • 1.Ext JS 建立web开发工程
  • mysql 慢查询分析工具:pt-query-digest 在mac 上的安装使用 ...
  • # 手柄编程_北通阿修罗3动手评:一款兼具功能、操控性的电竞手柄
  • #QT(TCP网络编程-服务端)
  • #我与Java虚拟机的故事#连载10: 如何在阿里、腾讯、百度、及字节跳动等公司面试中脱颖而出...
  • (06)Hive——正则表达式
  • (poj1.3.2)1791(构造法模拟)
  • (二)Eureka服务搭建,服务注册,服务发现
  • (二)PySpark3:SparkSQL编程
  • (附源码)计算机毕业设计SSM疫情社区管理系统
  • (论文阅读23/100)Hierarchical Convolutional Features for Visual Tracking
  • (一)kafka实战——kafka源码编译启动
  • (一)Thymeleaf用法——Thymeleaf简介
  • (已更新)关于Visual Studio 2019安装时VS installer无法下载文件,进度条为0,显示网络有问题的解决办法
  • (转)程序员技术练级攻略
  • (转)创业家杂志:UCWEB天使第一步
  • (转)可以带来幸福的一本书
  • .NET CF命令行调试器MDbg入门(四) Attaching to Processes
  • .Net CoreRabbitMQ消息存储可靠机制
  • .NETCORE 开发登录接口MFA谷歌多因子身份验证