Python求平面内点到直线距离的实现


Posted in Python onJanuary 19, 2020

近期遇到个问题,需要计算平面内点到直线的距离,发现数学知识都还给老师了,度娘后找到计算方法,特此记录。

点到直线的计算公式:

Python求平面内点到直线距离的实现

通过公式推导,得到信息:

A:直线斜率

B:固定值-1

C:直线截距b

转换为Python代码实现为:

def get_point_line_distance(self, point, line):
  point_x = point[0]
  point_y = point[1]
  line_s_x = line[0][0]
  line_s_y = line[0][1]
  line_e_x = line[1][0]
  line_e_y = line[1][1]
  #若直线与y轴平行,则距离为点的x坐标与直线上任意一点的x坐标差值的绝对值
  if line_e_x - line_s_x == 0:
    return math.fabs(point_x - line_s_x)
  #若直线与x轴平行,则距离为点的y坐标与直线上任意一点的y坐标差值的绝对值
  if line_e_y - line_s_y == 0:
    return math.fabs(point_y - line_s_y)
  #斜率
  k = (line_e_y - line_s_y) / (line_e_x - line_s_x)
  #截距
  b = line_s_y - k * line_s_x
  #带入公式得到距离dis
  dis = math.fabs(k * point_x - point_y + b) / math.pow(k * k + 1, 0.5)
  return dis

以上这篇Python求平面内点到直线距离的实现就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
在Python下进行UDP网络编程的教程
Apr 29 Python
Python sys.argv用法实例
May 28 Python
Python使用ftplib实现简易FTP客户端的方法
Jun 03 Python
使用python遍历指定城市的一周气温
Mar 31 Python
Django中利用filter与simple_tag为前端自定义函数的实现方法
Jun 15 Python
Python书单 不将就
Jul 11 Python
python基础知识(一)变量与简单数据类型详解
Apr 17 Python
Python Multiprocessing多进程 使用tqdm显示进度条的实现
Aug 13 Python
python多线程实现TCP服务端
Sep 03 Python
详解python内置模块urllib
Sep 09 Python
python如何爬取动态网站
Sep 09 Python
python中filter,map,reduce的作用
Jun 10 Python
Python PyPDF2模块安装使用解析
Jan 19 #Python
详解python中各种文件打开模式
Jan 19 #Python
python opencv如何实现图片绘制
Jan 19 #Python
python实现加密的方式总结
Jan 19 #Python
TensorFlow tensor的拼接实例
Jan 19 #Python
python通过opencv实现图片裁剪原理解析
Jan 19 #Python
Python 一行代码能实现丧心病狂的功能
Jan 18 #Python
You might like
在PHP中使用模板的方法
2008/05/24 PHP
PHP使用Redis替代文件存储Session的方法
2017/02/15 PHP
PHP面向对象之事务脚本模式(详解)
2017/06/07 PHP
php实现的中秋博饼游戏之掷骰子并输出结果功能详解
2017/11/06 PHP
JavaScript this 深入理解
2009/07/30 Javascript
JavaScript中:表达式和语句的区别[译]
2012/09/17 Javascript
jQuery中.live()方法的用法深入解析
2013/12/30 Javascript
JavaScript获得url所有参数键值表的方法
2015/03/21 Javascript
基于jQuery 实现bootstrapValidator下的全局验证
2015/12/07 Javascript
jquery仿QQ登录账号选择下拉框效果
2016/03/22 Javascript
原生js实现对Ajax的封装(仿jquery)
2017/01/22 Javascript
微信小程序点击控件修改样式实例详解
2017/07/07 Javascript
JS实现基于拖拽改变物体大小的方法
2018/01/23 Javascript
详解js根据百度地图提供经纬度计算两点距离
2019/05/13 Javascript
vue element upload组件 file-list的动态绑定实现
2019/10/11 Javascript
VUE 实现动态给对象增加属性,并触发视图更新操作示例
2019/11/29 Javascript
javascript数组元素删除方法delete和splice解析
2019/12/09 Javascript
js实现3D旋转相册
2020/08/02 Javascript
Python入门篇之正则表达式
2014/10/20 Python
Python发送form-data请求及拼接form-data内容的方法
2016/03/05 Python
PyTorch 随机数生成占用 CPU 过高的解决方法
2020/01/13 Python
jupyter notebook的安装与使用详解
2020/05/18 Python
python实现自动清理重复文件
2020/08/24 Python
python 下载文件的多种方法汇总
2020/11/17 Python
你不知道的葡萄干处理法、橙蜜处理法、二氧化碳酵母法
2021/03/17 冲泡冲煮
CSS3中媒体查询结合rem布局适配手机屏幕
2019/06/10 HTML / CSS
css3弹性盒子flex实现三栏布局的实现
2020/11/12 HTML / CSS
Dyson戴森波兰官网:Dyson.pl
2019/08/05 全球购物
中间件分为哪几类
2016/09/18 面试题
教师作风整改措施思想汇报
2014/10/12 职场文书
课外活动实习计划
2015/01/19 职场文书
美丽心灵观后感
2015/06/01 职场文书
生鲜超市—未来中国最具有潜力零售业态
2019/08/02 职场文书
js实现上传图片到服务器
2021/04/11 Javascript
Redis5之后版本的高可用集群搭建的实现
2021/04/27 Redis
Go 在 MongoDB 中常用查询与修改的操作
2021/05/07 Golang