python点到线段的最小距离
点到线段的距离,如果点到直线的垂足位于线段中,则垂足就是所求距离;否则求点到线段端点的距离,作为所求距离
求点到线段的垂足:
根据垂足是否落在线段上,求最短距离
#计算点到线的垂足 def getFootPoint(point, line_p1, line_p2):"""@point, line_p1, line_p2 : [x, y, z]"""x0 = point[0]y0 = point[1]z0 = 0#point[2]x1 = line_p1[0]y1 = line_p1[1]z1 = 0#line_p1[2]x2 = line_p2[0]y2 = line_p2[1]z2 = 0#line_p2[2]k = -((x1 - x0) * (x2 - x1) + (y1 - y0) * (y2 - y1) + (z1 - z0) * (z2 - z1)) / \((x2 - x1) ** 2 + (y2 - y1) ** 2 + (z2 - z1) ** 2) * 1.0xn = k * (x2 - x1) + x1yn = k * (y2 - y1) + y1zn = 0#k * (z2 - z1) + z1return (xn, yn)def getDisPointToLine(point,line_p1, line_p2):footP = getFootPoint(point, line_p1, line_p2)if ((footP[0] - line_p1[0]) > 0) ^ ((footP[0] - line_p2[0]) > 0): # 异或符号,符号不同是为1,,说明垂足落在直线中dist = np.linalg.norm((footP[0] - point[0], footP[1] - point[1]))else:dist = min(np.linalg.norm((line_p1[0] - point[0], line_p1[1] - point[1])),np.linalg.norm((line_p2[0] - point[0], line_p2[1] - point[1])))return distdis = getDisPointToLine([1,-10],[0,0],[0,5])
python点到线段的最小距离相关推荐
- python 点到线段的距离_点到线段的最短距离
博客转载自:http://blog.sina.com.cn/s/blog_5d5c80840101bnhw.html 点到线段最短距离的运算与点到直线的最短距离的运算二者之间存在一定的差别,即求点到线 ...
- 点到线段的距离计算方法
如何计算点到线段的最近距离 算法原理图 在二维/三维图形学系统当中,线段的拾取是一个经常使用的功能 如何根据鼠标点来判断线段是否被选择了,最主要的方法之一是通过点到线段的最小距离来判定的 无论二维还是 ...
- 向量法计算空间点到线段的距离(python)
中学数学告诉我们,计算点到线段的距离有两种. 我们假设点是P,线段是AB.P和AB都由三维的笛卡尔坐标表示.现计算P到AB的距离. 第一种是,过点P向线段AB上画垂线,判断垂足有没有落在线段上.如果落 ...
- 点到线段的最短距离计算方法(附python代码)
点到线段最短距离的运算与点到直线的最短距离的运算二者之间存在一定的差别,即求点到线段最短距离时需要考虑参考点在沿线段方向的投影点是否在线段上,若在线段上才可采用点到直线距离公式,如图1所示. 图1 ( ...
- 【zzulioj 2127 tmk射气球】+ 空间点到线段距离
2127: tmk射气球 Time Limit: 1 Sec Memory Limit: 128 MB Submit: 537 Solved: 97 SubmitStatusWeb Board Des ...
- c# 计算点到线段的距离
//计算点到线段的距离 public double pointToLine(Vector2 point,LineBase line) {//距离double distance =0;//线段的起点与终 ...
- python点到多边形距离,点到轮廓距离
python点到多边形距离 最简单例子: 负数表示在多边形外,正数代表多边形内. 要求:hull的数据必须是int类型,不能是float类型. import numpy as nppoint=(7,7 ...
- POJ 1584 A Round Peg in a Ground Hole 判断凸多边形,点到线段距离,点在多边形内
ACM博客_kuangbin POJ 1584 A Round Peg in a Ground Hole(判断凸多边形,点到线段距离,点在多边形内) A Round Peg in a Ground H ...
- 点到直线的距离c语言程序,点到线段的距离 题解(C++)
初步分析 这道题之前有<点到直线的距离>一题. 如图,我们不妨来下个定义(名字是乱起的,如果有雷同就以以下定义为准): 对于任意线段l,在其两个端点上分别作垂直于l的直线,若点在两直线之间 ...
最新文章
- RealSenseD435与ORB-SLAM2实现稠密建图
- 您遵循过这些Jenkins优秀实践吗?
- @EnableScheduling和@Scheduled的使用(初级)
- mysql表索引坏掉处理_一个mysql表索引被破坏的问题及解决
- C#——《C#语言程序设计》实验报告——Windows桌面编程文件与流——简易记事本
- 按钮跳转到其他ui界面_《明日方舟》UI/UX设计复盘
- 解决tensorflow.python.framework.errors_impl.UnknownError: Failed to get convolution algorithm.
- c语言开发一个翻译算法,使用有道翻译API做翻译(c语言实现)
- MongoDB复制集同步慢问题分析
- Java POI 合并单元格操作以及代码示例
- node js 生成视频链接(视频流)
- VS code上如何实现一键生成代码片段
- zip压缩包太大无法用unzip成功解压(保姆级)
- julius开源语音识别引擎
- 计算时间复杂度--(简单版)
- JS获取跨域的cookie实例
- 高等数学A(一)第一章笔记分享
- Android10获取IMEI
- 一道好玩的逻辑推理题(和真话及假话相关)
- Wannafly挑战赛26