美文网首页
如何计算点到polyline的距离

如何计算点到polyline的距离

作者: 英俊熊 | 来源:发表于2016-11-07 07:50 被阅读805次

      polyline的本质为由大于等于一条线段所组成的线段首位衔接的不闭合的折线。(注:首尾衔接的闭合为polygon,直线为折线的特殊情况)。所以求解点point到polyline的距离的问题就转化为求解点到每个线段的距离。由于实际中我们多数使用第三方库来调用也很轻松方便,但是在这里我们也思考一下这简单的小算法也是基础的图形学知识,很多时候复杂的算法实际由多个简单的算法嵌套完成。

实际计算过程如下:

①线段l;

②偏离距离H;

③匹配的结果坐标点P0

④point位置p及p到l的距离h;

⑤线段两个端点A1、A2;

⑥线段所在直线l1;

⑦过线段两端点做线段的法线p1、p2;

⑧P1、p2与线段所成内夹角分别为a,b;

⑨P到A1和A2的距离分别为d1,d2;

图1 点到线段示意图

      当计算时我们会发现要考虑多种情况,一般我们会求点到线段所在直线的垂线的距离。实际上只有point与线段端点组成的三角形不为锐角三角形时所求垂线长度才是正确距离。为此我画了一个表列出所有情况(表中p的结果为匹配到线段上的最近点):

图2 点到线段距离的情况

     遍历计算得出所有点到直线的距离之后就求解最小值。这是一件很简单的事了。(你们会问,这么简单的算法有什么用?我在GPS导航(很渣的)实现中消除GPS因为误差不在路线上的简单处理,还有可以做鼠标拾取polyline/polygon上的点需要。)

下面为简单的实例代码:

相关文章

  • 如何计算点到polyline的距离

    polyline的本质为由大于等于一条线段所组成的线段首位衔接的不闭合的折线。(注:首尾衔接的闭合为poly...

  • Standard Large-Margin Problem

    待解决问题 “缩短”x和w 计算点到任意超平面的距离 计算点到分隔超平面的距离 特殊的放缩 放松限制条件

  • 数学公式

    /*** 计算当前点到线的垂线距离** @param p 当前点* @param lineBegi...

  • 05-20201012 计算“点到直线距离公式”

    谈“点到直线距离公式”的向量推导方法 在人教大纲版高二数学上册中,关于点到直线距离的推导方法,教材介绍了两种推导方...

  • 点到直线的距离

    点到直线的距离即为平行四边形面积除以底的商(外积除以AB模长的积的绝对值)

  • 点到线段的距离

    点到线段分为三种情况 1 如图,向量AB与AP的点积小于0时,距离为AP的模 2 如图,向量AB与BP的点积大于0...

  • 点到线段的距离

    点到直线公式计算的是点和直线之间的关系,而不是点和线段之间的关系需要额外的判断,点在线段上的投影点是否位于线段内部...

  • 点到直线的距离

    这道题点到直线的距离,转换成点到点的距离。 思路导引:第二问,当PD与圆O相切时,∠PDB的值最大。第三问,求CP...

  • 我决定在这城里(现代诗)

    我觉得, 计算一个动点到圆心的最短距离 比计算你我之间的最短距离 要简单得多。 也许我只需要冥思苦想, 怎么都不会...

  • 利用python 计算π的近似值

    输入darts:抛点的数量。 处理:对于每个点,计算点到圆心的距离,通过距离判断点在圆内还是圆外,然后统计圆内点的...

网友评论

      本文标题:如何计算点到polyline的距离

      本文链接:https://www.haomeiwen.com/subject/uysarttx.html