精华内容
下载资源
问答
  • 求一个点到曲线或折线的最短距离
    千次阅读
    2020-12-12 01:10:23

    只回答定点到折线的最短距离的求法。一般由目测,即可看出哪一段折线是离定点最近的折线(例如你画的那个,显然DE就是离定点最近的折线段),如看不出多算几段也可以,例如可以算每段折线离定点最近的点,则所有线段中离定点最近的距离中最小的那个距离就是所求的最近距离。 算一段直线离定点最近的点的方法是:由定点向直线段所在的直线引垂线,如果垂足在那一段直线内,则垂足即为离定点最近的点,如垂足在直线段的外边,则直线段离垂足近的那个端点就是离定点最近的点(如判断不出哪个近就计算两个端点到定点的距离,选距离小的那个就行了)。

    具体的解析几何的算法是:先建立坐标系,得到直线段的两个端点的坐标,和那个定点的坐标,然后由两个端点的坐标可以算出两端点所在直线的方程及其斜率。 从而算出垂直于这个直线的斜率(负倒数),然后用定点和这个斜率,可以得到垂线的点斜式方程,然后就可算出垂线和直线的交点(为两线方程的解),然后根据直线的参数式方程x=x1+t•(x2-x1),

    y=y1+t•(y2-y1)。

    (其中(x1,y1),(x2,y2)直线段两端点的坐标)。再算出交点对应直线中的t,

    如0≤t≤1,则交点就是离定点最近的点;

    如t<0,则t=0的点对应的点,就是离定点最近的点;

    如t>1,则t=1对应的点就是离定点最近的点。

    更多相关内容
  • 计算给定起点和终点的两条线段之间的最短距离。 改编在 Dan Sunday 网站上找到的算法 ( http://softsurfer.com/Archive/algorithm_0106/algorithm_0106.htm#dist3D_Segment_to_Segment )。 用法:输入两条线段的...
  • 该函数实现了 Vladimir J. LUMELSKY,“线段之间距离的快速... 用于计算两条线段之间的最短距离。 它也处理所有退化情况(当线平行时,一条线是一个点,两条线都是点)。 或者,该函数可以返回线段上最近的两个点。
  • import numpy as np import math import cv2 def cal_pt_distance(pt1, pt2): dist = math.sqrt(pow(pt1[0]-pt2[0],2) + pow(pt1[1]-pt2[1],2)) return dist font = cv2.FONT_HERSHEY_SIMPLEX ...
    import numpy as np
    import math
    import cv2
    
    def cal_pt_distance(pt1, pt2):
      dist = math.sqrt(pow(pt1[0]-pt2[0],2) + pow(pt1[1]-pt2[1],2))
      return dist
    
    font = cv2.FONT_HERSHEY_SIMPLEX
    img = cv2.imread('01.png')
    #cv2.imshow('src',img)
    gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
    gray = cv2.GaussianBlur(gray, (3,3), 0)
    
    ret,thresh = cv2.threshold(gray, 150, 255, cv2.THRESH_BINARY)
    image,contours,hierarchy = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)
    #thresh,contours,hierarchy = cv2.findContours(thresh, cv2.RETR_LIST, cv2.CHAIN_APPROX_NONE)
    
    flag = False
    minDist = 10000
    minPt0 = (0,0)
    minPt1 = (0,0)
    for i in range(0,len(contours[1])):#遍历所有轮廓
      pt = tuple(contours[1][i][0])
      #print(pt)
      min_dis = 10000
      min_pt = (0,0)
      #distance = cv2.pointPolygonTest(contours[1], pt, False)
      for j in range(0,len(contours[0])):
        pt2 = tuple(contours[0][j][0])
        distance = cal_pt_distance(pt, pt2)
        #print(distance)
        if distance < min_dis:
          min_dis = distance
          min_pt = pt2
          min_point = pt
      if min_dis < minDist:
        minDist = min_dis
        minPt0 = min_point
        minPt1 = min_pt
      temp = img.copy()
      cv2.drawContours(img,contours,1,(255,255,0),1)
      cv2.line(temp,pt,min_pt,(0,255,0),2,cv2.LINE_AA)
      cv2.circle(temp, pt,5,(255,0,255),-1, cv2.LINE_AA)
      cv2.circle(temp, min_pt,5,(0,255,255),-1, cv2.LINE_AA)
      cv2.imshow("img",temp)
      if cv2.waitKey(1)&0xFF ==27: #按下Esc键退出
        flag = True
        break
      if flag:
        break
    
    cv2.line(img,minPt0,minPt1,(0,255,0),2,cv2.LINE_AA)
    cv2.circle(img, minPt0,3,(255,0,255),-1, cv2.LINE_AA)
    cv2.circle(img, minPt1,3,(0,255,255),-1, cv2.LINE_AA)
    cv2.putText(img,("min_dist=%0.2f"%minDist), (minPt1[0],minPt1[1]+15), font, 0.7, (0,255,0), 2)
    
    cv2.imshow('result', img)
    cv2.imwrite('result.png',img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    

    原图
    在这里插入图片描述
    结果图;
    在这里插入图片描述

    展开全文
  • 本文主要介绍使用OpenCV计算两条曲线之间的最小距离。 实现目标 【计算两条曲线之间的最小距离】 测试图像: 动态效果演示: 实现步骤与代码 实现步骤: ① 分别找到两条曲线的轮廓; ②计算每条曲线...

    导读

    本文主要介绍使用OpenCV计算两条曲线之间的最小距离。

    实现目标

    【计算两条曲线之间的最小距离】

    测试图像:

    图片

    动态效果演示:

    OpenCV计算两条曲线间的最小距离

     

    实现步骤与代码

    实现步骤:

    ① 分别找到两条曲线的轮廓;

    ② 计算每条曲线轮廓点与另一条轮廓上点的距离;

    ③ 记录距离最小值与对应最小值时的点坐标;

    ④ 绘制结果。

    Python代码实现与演示:

    # -*- coding: cp936 -*-
    
    import numpy as np
    import math
    import cv2
    
    def cal_pt_distance(pt1, pt2):
      dist = math.sqrt(pow(pt1[0]-pt2[0],2) + pow(pt1[1]-pt2[1],2))
      return dist
    
    font = cv2.FONT_HERSHEY_SIMPLEX
    img = cv2.imread('test.j
    展开全文
  • 本文将介绍OpenCVSharp应用实例--计算两条曲线之间的最小距离! 导读 本文主要介绍使用OpenCV计算两条曲线之间的最小距离。 实现目标 【计算两条曲线之间的最小距离】 测试图像: 动态效果演示: OpenCV计算...

    本文作者Color Space,文章未经作者允许禁止转载!

    本文将介绍OpenCVSharp应用实例--计算两条曲线之间的最小距离!


    导读
    本文主要介绍使用OpenCV计算两条曲线之间的最小距离。

    实现目标
    【计算两条曲线之间的最小距离】

    测试图像:

    图片 动态效果演示:

    OpenCV计算两条曲线间的最小距离


    实现步骤与代码
    实现步骤:

    ① 分别找到两条曲线的轮廓;

    ② 计算每条曲线轮廓点与另一条轮廓上点的距离;

    ③ 记录距离最小值与对应最小值时的点坐标;

    ④ 绘制结果。

    OpenCVSharp代码实现与演示:
     

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.T
    展开全文
  • 曲线之间距离求解

    千次阅读 2018-06-09 16:12:07
    本系列历程启发于“禾路老师”的视频...寻找下面这幅图片之中两条白线之间的距离 得到每个点到对面线段的最小距离 求解平均距离 求解最中心距离 思路分析一: 指定求解的点,寻找对面一条直线的相对于当求...
  • 曲面上任意点的近似最短路径算法研究 - 道客巴巴https://www.doc88.com/p-4062105607873.html三角网格模型上任意点间的近似最短路径算法研究 - 道客巴巴https://www.doc88.com/p-8445975288671.html?s=rel&...
  • 主要思路:假设有两条曲线分别是c1和c2,把c1按照1的距离划分我这里用变量jd表示,得到一个曲线集合coll,然后遍历coll,得到coll中每一个曲线的两个端点,再用这两个端点分别求离曲线c2的最短距离,直接使用开发库...
  • 两条未知曲线,求其最短距离

    千次阅读 2016-01-04 11:25:24
    两条未知的不规则的的曲线,现在已经获取近似点,如何求得一条曲线的任意一点到另一条曲线最短距离,用C++算法编程实现。
  • 这是为有限线段而做的实现,而不是像这里的大多数其他函数那样的无限行(这就是我做这个的原因)。Python:defdist(x1,y1,x2,y2,x3,y3):#x3,y3isthepointpx=x2-x1py=y2-y1norm=px*px+py*pyu=((x3-x1)*px+(y3-y1)*py)/...
  • 一、根据点求直线方程 已知直线上点为:(x1,x2),(y1,y2); 设方程为:Ax+By+C=0; 1. 求斜率:k=(y2-y1)/(x2-x1); 2. 直线方程为: y-y1=k(x-x1); 换算得:kx-y+y1-kx1=0,即: A=k B=-1 C=y1-kx1=y1-(y2-...
  • C++实现一个点到曲线的最近距离求解(遍历法) #include<iostream> #include<cstring> #include<stdlib.h> #include<vector> #include<algorithm> #include<math.h> using ...
  • // 如果个点的纵坐标相同,则直接得到直线斜率的弧度 if (y1 === y2) { if (x1 ) { ang1 = Math.PI; } else { ang1 = 0; } } else { m = (x1 - x2) / c; if (m - 1 > 0.00001) { m ...
  • 如果曲线是已知的非线性函数,则使用符号工具箱开始。例如,考虑函数y = x^3-3 * x + 5,以及x,y平面中的点(x0,y0)=(4,3)。写下距离的平方。欧几里德距离很容易写。(x - x0)^2 + (y - y0)^2 = (x - 4)^2 + (x^3 - ...
  • Python最小距离

    2018-04-06 20:10:29
    对Iris数据进行个特征选取,共6种组合,计算类别可分性准则函数J值,得出最好的分类组合,画出各种组合的分布图; 2、使用前期作业里面的程序、对6种组合分别使用不同方法进行基于120个训练样本30个测试样本的学习...
  • 由于苹果在z方向会做加速运动,加速度是g,所以二维时空(z,t)函数图就是一条曲线,它表示单位时间内z增加量会越来越大。 从三幅图可以看出前面副图都是直线,说明时空并未向x,y方向弯曲,但是第三幅却是曲线,...
  • 如何用Python实现这张图,这张图就是随机生成几个点,然后将这些点按照距离最短原则连成一线
  • 谁教教我反比例函数距离公式?

    千次阅读 2021-02-05 19:03:07
    反比例函数图像性质:反比例函数的图像为双曲线.由于反比例函数属于奇函数,有f(-x)=-f(x),图像关于原点对称.另外,从反比例函数的解析式可以得出,在反比例函数的图像上任取一点,向个坐标轴作垂线,这点、个垂足...
  • python点到线段的最小距离

    千次阅读 2020-03-31 18:28:59
    点到线段的距离,如果点到直线的垂足位于线段中,则垂足就是所求距离;否则求点到线段端点的距离,作为所求距离 求点到线段的垂足: 根据垂足是否落在线段上,求最短距离 #计算点到线的垂足 def getFootPoint...
  • 其他长度的路径求原点到其最短路径一定是以下种情况之一: 源点到此点一直通弧。 前面已经求得的最短路径中的其他顶点中到它的直通弧。 代码实现: #include &lt;iostream&gt; #inc...
  • 点到线段的最短距离算法

    千次阅读 2018-11-09 11:23:13
    2、方法二——面积算法 该方法主要是先判断投影点是否在线段上,投影点在线段延长线上时,最短距离长度为点到端点的线段长度;当投影点在线段上时,先使用海伦公式计算三角形面积,再计算出三角形的高,即为最短...
  • 论文可以参考: ...便于计算的离散距离求解 Alt, Helmut, and Michael Godau. “Computing the Fréchet distance between two polygonal curves.” International Journal of Computational Geometry &am
  • 寻找下面这幅图片之中两条白线之间的距离 得到每个点到对面线段的最小距离 求解平均距离 求解最中心距离 思路分析一: 指定求解的点,寻找对面一条直线的相对于当求解点平行的切线,然后计算平...
  • 软件介绍: VC++求个线段(城市)最短距离的算法23479490一个VC++算法实例,求个城市间的最短距离,对算法的学习有帮助。
  • 【摘要】求曲线上的动点到直线的距离的最值问题,这样的曲线常见的有圆,椭圆,双曲线,抛物线,以及函数图像。 Ⅰ:圆上的动点到直线的距离[点线距]的最值 如给定圆\(C:x^2+y^2=4\),和直线\(y=x+4\),求圆上任意...
  • 离散Fréchet(弗雷歇) 距离评价曲线相似度

    万次阅读 多人点赞 2018-08-28 16:17:09
    对于如何评价两条曲线的相似度现已经存在许多较为直接有效的方法,诸如基于各种距离测度的距离评判、利用相关系数进行相似度分析等等,其中对于距离测度运用较为广泛便是欧式距离和Hausdorff距离等等。而在1906年...
  • 图论所谓的“图”是指某类具体事物和这些事物之间的联系。如果用点表示这些具体事物,用连接点的线段(直的或者曲的)表示这个事物的特定的联系,就得到了描述这个“图”的几何形象。
  • 提取配方定顶点,两条途径再挑选, 若要平移也不难,先画基础抛物线, 列表描点后连线,平移规律记心间, 左加右减括号内,号外上加下要减。 8.三角函数 三角函数的增减性:正增余减。 特殊三角函数值(30度、45度...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,263
精华内容 1,705
关键字:

两条曲线最短距离

友情链接: Code_example.rar