已知一条直线经过两个点,使用Python求直线外其中一个点到直线的距离

已知一条直线经过两个点 P1(x1, y1) 和 P2(x2, y2),求直线外其中一个点 P3(x3, y3) 到直线的距离可以通过以下步骤计算:

1、计算直线的斜率 m 和截距 b。

2、使用点到直线的距离公式计算 P3 到直线的距离。

距离公式为:

python 复制代码
距离 = |(m*x3-y3+ b)| / sqrt(m^2 + 1)

其中 m 是直线的斜率,b 是直线的截距,sqrt 表示平方根。

以下是一个 Python 函数,它接受直线经过的两个点 (x1, y1) 和 (x2, y2) 以及外部点的坐标 (x3, y3),并返回该点到直线的距离:

python 复制代码
import math

def distance_from_point_to_line(x1, y1, x2, y2, x3, y3):
    # 计算直线的斜率
    if x2 != x1:  # 避免除以零
        m = (y2 - y1) / (x2 - x1)
    else:
        # 如果两点在同一条垂直线上,则斜率不存在,直接返回 x 方向的距离
        return abs(x3 - x1)
    
    # 计算直线的截距
    b = y1 - m * x1
    
    # 使用点到直线的距离公式计算距离
    distance = abs(m*x3-y3+ b) / math.sqrt(m**2 + 1)
    return distance

# 示例使用
x1, y1 = 0, 0
x2, y2 = 1, 1
x3, y3 = 2, 2

distance = distance_from_point_to_line(x1, y1, x2, y2, x3, y3)
print(f"The distance from the point ({x3}, {y3}) to the line defined by ({x1}, {y1}) and ({x2}, {y2}) is {distance}")

Tips:

斜率 m 的垂直线(即过 P1 点的垂线)的斜率 m_vertical 为 -1/m。

相关推荐
GalenZhang888几秒前
使用 Python SDK 将数据写入飞书多维表格
数据库·python·飞书·多维表格
清水白石0088 分钟前
《深度剖析 Pandas GroupBy:底层实现机制与性能瓶颈全景解析》
开发语言·python·numpy
reasonsummer10 分钟前
【办公类-125-01】20260106期末资料多个docx合并成一个PDF打印(单数页+1空白页,双数页不变)
python·pdf
hui函数12 分钟前
python全栈入门到实战【基础篇 03】入门实操:第一个Python程序 + PyCharm使用 + 输入输出全解析
开发语言·python·pycharm
极客小云21 分钟前
【Python pip换源教程:国内镜像源配置方法(清华/阿里云/中科大源)】
开发语言·python·pip
shughui41 分钟前
实现Python多版本共存
开发语言·python·pip
BoBoZz1941 分钟前
TextureCutQuadric 利用3D隐式函数(Quadrics)来生成2D纹理坐标
python·vtk·图形渲染·图形处理
dhdjjsjs43 分钟前
Day58 PythonStudy
开发语言·python·机器学习
AI Echoes1 小时前
LangChain 语义文档分割器与其他文档分割器的使用
大数据·人工智能·python·langchain·agent
lbb 小魔仙1 小时前
Linux 安全攻防 2025:从 SELinux 配置到漏洞应急响应全流程
linux·python·安全