7点到线段的最短距离算法.pdf

7点到线段的最短距离算法.pdf

ID:48039226

大小:226.53 KB

页数:3页

时间:2020-02-07

7点到线段的最短距离算法.pdf_第1页
7点到线段的最短距离算法.pdf_第2页
7点到线段的最短距离算法.pdf_第3页
资源描述:

《7点到线段的最短距离算法.pdf》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、点到线段的最短距离算法点到线段最短距离的运算与点到直线的最短距离的运算二者之间存在一定的差别,即求点到线段最短距离时需要考虑参考点在沿线段方向的投影点是否在线段上,若在线段上才可采用点到直线距离公式,如图1所示。图1(a)最短距离为点P与其在线段AB上投影C之间的线段PC(b)最短距离为点P与端点B(或A)所构成的线段PB(或PA)具体算法主要有以下三种:1、方法——经典算法该算法直接用高中时所学习到的解析几何知识对点到线段的距离进行求解。其基本思想是先判断点在线段端点、点在线上等等的特殊情况,逐步

2、的由特殊到一般,当忽略点在线段上的特殊情况时,判断点到线段方向的垂线是否落在线段上的方法是通过比较横纵坐标的方式来判断,最后把不同的判断情况用不同的几何方式来进行处理计算得出结果。由上面叙述的基本思路可以知道这种算法虽然很容易理解和接受,但从算法的实用性的角度分析还是有很大的缺点的,首先是算法复杂,计算量巨大,大量的比较判断、距离计算、角度计算等等,实际应用中往往是需要求由大量线段组成的折线到某点的最短距离,如此用这样的算法计算量是不能想象的。其次经典算法中使用的一些简化运算的函数不利于语言的重新包

3、装,如果想换编程语言的话,就比较麻烦了。2、方法二——面积算法该方法主要是先判断投影点是否在线段上,投影点在线段延长线上时,最短距离长度为点到端点的线段长度;当投影点在线段上时,先使用海伦公式计算三角形面积,再计算出三角形的高,即为最短距离。运用面积算法求解点到线段最短距离思路很清晰,也很容易理解。从效率方面考虑,比如需要多次计算平方、根号,这对于大量数据进行运算是负担很重的。求面积就必须把三条边长全部求出,并且用到的海伦公式也需要进行开方运算,计算过程显得繁琐。3、方法三——矢量算法矢量算法过程清

4、晰,如果具有一定的空间几何基础,则是解决此类问题时应优先考虑的方法。当需要计算的数据量很大时,这种方式优势明显。由于矢量具有方向性,故一些方向的判断直接根据其正负号就可以得知,使得其中的一些问题得以很简单的解决。用此方法考虑,我们只需要找到向量在方向上的投影,具体如下:上面的是方向上的单位向量,其意义是给所求向量确定方向。是的两个向量的内积,且,其中θ为向量AP与AB之间的夹角。是向量长度。那么即为上图中线段AC的长度值,不带有方向性。此数值与上述表征方向的整体构成有大小、有方向的新向量,即为在方向

5、上的投影向量,C为投影点。根据得到的,由向量的方向性可知:如果情况是上图(a)所示,那么0

6、doubley1,doublex2,doubley2){doublecross=(x2-x1)*(x-x1)+(y2-y1)*(y-y1);if(cross<=0)returnMath.Sqrt((x-x1)*(x-x1)+(y-y1)*(y-y1));doubled2=(x2-x1)*(x2-x1)+(y2-y1)*(y2-y1);if(cross>=d2)returnMath.Sqrt((x-x2)*(x-x2)+(y-y2)*(y-y2));doubler=cross/d2;doublepx=

7、x1+(x2-x1)*r;doublepy=y1+(y2-y1)*r;returnMath.Sqrt((x-px)*(x-px)+(py-y)*(py-y));}除了代码简单、计算量少的优点外,上述代码不依赖其它函数和自定义的数据结构,便于直接使用或者转换为其他编程语言(诸如C++、java等)使用而无需做较大的改动。

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。