已知一条直线经过两个点,使用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。

相关推荐
TYUT_xiaoming5 分钟前
python setup.py学习
python
A懿轩A33 分钟前
2025年十六届蓝桥杯Python B组原题及代码解析
python·算法·蓝桥杯·idle·b组
程序媛徐师姐39 分钟前
Python Django基于协同过滤算法的招聘信息推荐系统【附源码、文档说明】
python·django·协同过滤算法·招聘信息推荐系统·招聘信息·python招聘信息推荐系统·python招聘信息
2401_890665861 小时前
免费送源码:Java+ssm+MySQL 基于PHP在线考试系统的设计与实现 计算机毕业设计原创定制
java·hadoop·spring boot·python·mysql·spring cloud·php
xuemenghan1 小时前
Numba 从零基础到实战:解锁 Python 性能新境界
开发语言·python
明月看潮生1 小时前
青少年编程与数学 02-016 Python数据结构与算法 22课题、并行算法
开发语言·python·青少年编程·并行计算·编程与数学
明月看潮生2 小时前
青少年编程与数学 02-016 Python数据结构与算法 20课题、几何算法
python·算法·青少年编程·编程与数学
limengshi1383922 小时前
使用Python+xml+shutil修改目标检测图片和对应xml标注文件
xml·python·目标检测
计算机徐师兄3 小时前
Python基于Django的房屋信息可视化及价格预测系统(附源码,文档说明)
python·房屋信息可视化·房屋价格预测系统·房屋价格预测·房屋分析·python房屋信息可视化系统·python房屋价格预测系统
木觞清3 小时前
使用Python爬取豆瓣电影Top250并保存到Excel完整教程
开发语言·python