点到直线的距离公式推导

article/2025/9/11 21:34:22

点到直线的距离公式推导

本文地址:blog.lucien.ink/archives/495

摘自 点到直线距离公式的几种推导 - 三横先生的文章 - 知乎 的三角形面积法,稍作修改并更正书写错误。

起因

今天在 PPT 里看到一个点到超平面的距离公式 d = 1 ∥ w ∥ ∣ w ⋅ x 0 + b ∣ d = \frac{ 1 }{ \left\| \boldsymbol w \right\| }| \boldsymbol w \cdot \boldsymbol x_0 + \boldsymbol b | d=w1wx0+b,看了半天没看懂为什么这样算,遂去问学霸,答曰“平面情况下就是点到直线的距离公式”。

万分惭愧,我连初中数学都忘了。

三角形面积法

图片来自知乎

直线 l l l 方程为 A x + B y + C = 0 Ax + By + C = 0 Ax+By+C=0 A A A B B B 均不为 0 0 0,点 P ( x 0 , y 0 ) P(x_0, y_0) P(x0,y0),设点 P P P l l l 的距离为 d d d

设点 R ( x R , y 0 ) R(x_R, y_0) R(xR,y0),点 S ( x 0 , y S ) S(x_0, y_S) S(x0,yS)

R , S R, S R,S 在直线 l l l 上,得到

A x R + B y 0 + C = 0 Ax_R + By_0 + C = 0 AxR+By0+C=0 A x 0 + B y S + C = 0 Ax_0 + By_S + C = 0 Ax0+ByS+C=0

所以

x R = − B y 0 − C A x_R = \frac{ -By_0 - C }{ A } xR=ABy0C y S = − A x 0 − C B y_S = \frac{ -Ax_0 - C }{ B } yS=BAx0C

∣ P R ∣ = ∣ x 0 − x R ∣ = ∣ x 0 − − B y 0 − C A ∣ = ∣ A x 0 + B y 0 + C A ∣ | PR | = | x_0 - x_R | = | x_0 - \frac{ -By_0 - C }{ A } | = | \frac{ Ax_0 + By_0 + C }{ A } | PR=x0xR=x0ABy0C=AAx0+By0+C ∣ P S ∣ = ∣ y 0 − y S ∣ = ∣ y 0 − − A x 0 − C B ∣ = ∣ A x 0 + B y 0 + C B ∣ | PS | = | y_0 - y_S | = | y_0 - \frac{ -Ax_0 - C }{ B } | = | \frac{ Ax_0 + By_0 + C }{ B } | PS=y0yS=y0BAx0C=BAx0+By0+C

于是

∣ R S ∣ = P R 2 + P S 2 = A 2 + B 2 A B ⋅ ∣ A x 0 + B y 0 + C ∣ | RS | = \sqrt{ { PR }^2 + { PS }^2 } = \frac{ \sqrt{ A^2 + B^2 } }{ AB } \cdot | Ax_0 + By_0 + C | RS=PR2+PS2 =ABA2+B2 Ax0+By0+C

Δ P S R \Delta_{PSR} ΔPSR

d ⋅ ∣ R S ∣ = ∣ P R ∣ ⋅ ∣ P S ∣ d \cdot | RS | = | PR | \cdot | PS | dRS=PRPS

d = ∣ P R ∣ ⋅ ∣ P S ∣ ∣ R S ∣ = ∣ A x 0 + B y 0 + C A ∣ ⋅ ∣ A x 0 + B y 0 + C B ∣ A 2 + B 2 A B ⋅ ∣ A x 0 + B y 0 + C ∣ = ∣ A x 0 + B y 0 + C ∣ A 2 + B 2 d = \frac{ | PR | \cdot | PS | }{ | RS | } = \frac{ | \frac{ Ax_0 + By_0 + C }{ A } | \cdot | \frac{ Ax_0 + By_0 + C }{ B } | }{ \frac{ \sqrt{ A^2 + B^2 } }{ AB } \cdot | Ax_0 + By_0 + C | } = \frac{ | Ax_0 + By_0 + C | }{ \sqrt{ A^2 + B^2 } } d=RSPRPS=ABA2+B2 Ax0+By0+CAAx0+By0+CBAx0+By0+C=A2+B2 Ax0+By0+C

另一种形式

设函数 f ( x , y ) = A x + B y + C f(x, y) = Ax + By + C f(x,y)=Ax+By+C,直线 l : A x + B y + C = 0 l: Ax + By + C = 0 l:Ax+By+C=0 的法向量为 v ( A , B ) \boldsymbol v(A, B) v(A,B)

则点 P ( x 0 , y 0 ) P(x_0, y_0) P(x0,y0) 到直线 l l l 的距离 d d d

d = ∣ A x 0 + B y 0 + C ∣ A 2 + B 2 = f ( x 0 , y 0 ) ∥ v ∥ d = \frac{ | Ax_0 + By_0 + C | }{ \sqrt{ A^2 + B^2 } } = \frac{ f(x_0, y_0) }{ \left\| \boldsymbol v \right\| } d=A2+B2 Ax0+By0+C=vf(x0,y0)

注: ∥ v ∥ \left\| \boldsymbol v \right\| v 为向量 v \boldsymbol v v 的 2-范数


http://chatgpt.dhexx.cn/article/bLPNRebV.shtml

相关文章

点到平面的距离公式的推导

点到平面的距离公式 准备知识 平面的一般式方程 Ax By Cz D 0 其中n (A, B, C)是平面的法向量,D是将平面平移到坐标原点所需距离(所以D0时,平面过原点) 向量的模(长度) 给定一个向量V(…

点到平面的基本距离推导公式

这是高中时候的基础数学,然而也是比较重要的一个知识点,在很多地方都会用到,在基于超平面分类算法中,向量空间中任意一点到超平面的距离也是一个基础知识点 平面的一般式方程 Ax By Cz D 0 其中n (A, B, C)是平面的法向量&am…

点与平面的距离特征_艾孜尔江撰

点到平面距离公式 distance Ax By Cz D; //点P(x,y,z)&#xff0c;平面的法向量n(A,B,C)&#xff0c;D是距原点的距离.其中n (A, B, C)是平面的法向量&#xff0c;D是将平面平移到坐标原点所需距离&#xff08;所以D0时&#xff0c;平面过原点&#xff09; 当 d < 0 …

MQTT协议总结

一、概念 MQTT 是基于 Publish/Subscribe 模式的物联网通信协议&#xff0c;凭借简单易实现、支持 QoS、报文小等特点&#xff0c;占据了物联网协议的半壁江山。 MQTT&#xff08;Message Queuing Telemetry Transport&#xff0c;消息队列遥测传输协议&#xff09;&#xff…

MQTT再学习 -- 搭建MQTT服务器及测试

如需转载请注明出处&#xff1a;https://blog.csdn.net/qq_29350001/article/details/76680646 最近在搞 PM2.5 采集&#xff0c;需要用到 MQTT 传输协议。协议部分看了几天的&#xff0c;讲的七七八八。本身在 intel 上有 写好的MQTT 的源码&#xff0c;现在的工作其实也就是…

c#使用MQTT通信

mqtt的功能请看百度百科&#xff0c;MQTT_百度百科。 这里简单说一下&#xff0c;mqtt的功能就是一个发布/订阅的功能 例如&#xff0c;接下来&#xff0c;我们做一个例子。现在有A服务器作为发布方&#xff0c;B客户端作为订阅方。如果A发布了消息&#xff0c;那么会向B发送…

MQTT-java使用说明

MQTT-java使用说明 本文的资料下载&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1OCfsQ_NqcehKy86kYkA-wg?pwd1234 提取码&#xff1a;1234 MQTT基本介绍 MQTT是一个客户端服务端架构的发布/订阅模式的消息传输协议。 特点 易于实现数据传输的服务质量可控占用…

MQTT服务器的搭建与MQTT客户端的使用

目录 一、MQTT服务器&#xff08;emqx&#xff09;搭建1、下载 MQTT Broker2、下载完成后&#xff0c;解压的目录内容如下&#xff1a;3、进入 bin目录下4、直接在当前目录下输入cmd5、启动 emqx6、重置Dashboard 密码7、输入账号密码进入MQTT服务器控制台8、正常登录的界面如下…

Android+MQTT(Android APP 连接至MQTT服务器)

这段时间因为毕设的需求&#xff0c;接触学习了一下用Android app连接MQTT服务器&#xff0c;然后对下位机&#xff08;STM32/ESP8266&#xff09;进行数据通讯的一个小设计&#xff0c;本篇文章介绍appMQTT服务器这一段。 实现原理&#xff1a; 这里设计的是一个监测控制智能…

MQTT:windows最简单搭建mqtt服务端及本地客户端测试

一、mqtt服务端搭建 推荐使用emq的开源服务端emqx&#xff0c;目前是使用最广泛的mqtt服务端。 github上下载地址为https://github.com/emqx/emqx/releases&#xff0c;当前最新windows版本是 emqx-windows-4.3.6.zip。 1.运行服务端 下载完解压缩出来&#xff0c;在bin目…

springboot 整合 mqtt

springboot 整合 mqtt 最近由于iot越来越火, 物联网的需求越来越多, 那么理所当然的使用mqtt的场景也就越来越多, 接下来是我使用springboot整合mqtt的过程, 以及踩过的一些坑. mqtt服务器使用的是 EMQX, 官网 : 这里 搭建的时候如果你使用的是集群 记得开放以下端口: 好了, …

Springboot实现MQTT通信

目录 一、MQTT简介1、MQTT协议2、MQTT协议特点 二、MQTT服务器搭建三、使用Springboot整合MQTT协议1、在父工程下创建一个Springboot项目作为消息的提供者1.1 导入依赖包1.2 修改配置文件1.3 消息发布者客户端配置1.4 消息发布客户端回调1.5 创建控制器测试发布信息 2、在父工程…

一步一步来:MQTT服务器搭建、MQTT客户端使用

物联网应用如火如荼&#xff0c;本文就物联网应用中最受青睐的协议 MQTT相关测试工具的使用进行简单说明。 希望此文能给需要用到的朋友一些微薄的帮助…… 一、MQTT服务器&#xff08; emqx &#xff09;搭建 1. 下载服务器MQTT Broker 从 https://www.emqx.io/cn/mqtt/public…

【MQTT基础篇(三)】连接MQTT服务端

文章目录 连接MQTT服务端1 CONNECT – 连接服务端1.1 clientId – 客户端ID1.2 cleanSession – 清除会话1.3 keepAlive – 心跳时间间隔 2 CONNACK – 确认连接请求2.1 returnCode – 连接返回码2.2 sessionPresent – 当前会话 连接MQTT服务端 MQTT客户端之间要想实现通讯&am…

MQTT介绍与使用

目录 一、MQTT简介 二、特性 三、实现方式   四、MQTT的搭建&#xff08;ubuntu&#xff09; 五、MQTT权限配置 六、MQTT实现&#xff08;Java语言&#xff09; 正文 物联网是新一代信息技术的重要组成部分&#xff0c;也是“信息化”时代的重要发展阶段。其英文名称是&am…

什么是MQTT

1、MQTT来龙去脉 1.1 什么是MQTT MQTT(英文全称Message Queuing Telemetry Transport&#xff0c;消息队列遥测传输协议)是一种基于发布/订阅&#xff08;PUBLISH/SUBSCRIBE&#xff09;模式的轻量级的物联网通信协议。从这个定义中我们可以总结出四个关键词&#xff1a;消息队…

设备分配与spooling技术详解

5.4 设备分配&#xff08;重点&#xff01;&#xff01;&#xff01;&#xff09; 一、设备分配中的数据结构二、设备分配时应考虑的因素三、设备独立性四、设备独占的分配程序五、Spooling技术 一、设备分配中的数据结构 在进行设备分配时&#xff0c;通常都要借助一些表格…

SPOOLing和虚拟化

什么是虚拟化 虚拟化就是无中生有&#xff0c;就是暗度陈仓&#xff08;狗头保命&#xff09;。仔细观察整个计算机系统的设计&#xff0c;到处都体现着虚拟化的技术。当然虚拟化就是操作系统设计的要求之一。我们很好理解 CPU 的虚拟化技术&#xff0c;也就是通过进程调度实现…

操作系统 假脱机(Spooling)系统

介绍 通过多道程序技术可将一台物理CPU虚拟为多台逻辑CPU&#xff0c;从而允许多个用户共享一台主机。那么&#xff0c;假脱机技术&#xff0c;则可将一台物理I/O设备虚拟为多台逻辑I/O设备&#xff0c;这样也就允许多个用户共享一台物理I/O设备。 1. 假脱机技术 早期&#…

题目SPOOLing系统的设计与实现

最近刚刚做的一个课程设计&#xff0c;关于SPOOLing的。 一、算法或原理的实现思想 技术原理 SPOOLing技术可将一台物理I/O设备虚拟为多台逻辑I/O设备&#xff0c;同样允许多个用户共享一台物理I/O设备。SPOOLing技术把所有用户进程的输出都送入输出井&#xff0c;然后再由输出…