点到线段的最短距离算法

本文介绍了在开发过程中遇到的确定鼠标点击是否在连线上的问题,重点探讨了点到线段最短距离的计算方法,包括经典算法、面积算法和矢量算法。其中,矢量算法因其简洁高效的特点被推荐用于大规模数据计算。文章提供了C#实现的矢量算法示例代码。
摘要由CSDN通过智能技术生成

 

最近做了一个类似Visio的软件,需要对节点连线进行右键删除操作,但是如何确定是否鼠标右键点击到了连线是个难题。

参考了以下内容。留存备用。选用几何矢量算法,最方便的解决了问题,首先了解了向量内积的定义:

a点儿乘b:物理意义代表了a向量在b向量的方向上的乘积,如果向量方向相反则为负值,如果方向相同,则为正值,如果垂直,则为0。

 

https://blog.csdn.net/rocky_shared_image/article/details/78113520

转自,http://blog.sina.com.cn/s/blog_5d5c80840101bnhw.html

点到线段最短距离的运算与点到直线的最短距离的运算二者之间存在一定的差别,即求点到线段最短距离时需要考虑参考点在沿线段方向的投影点是否在线段上,若在线段上才可采用点到直线距离公式,如图1所示。

                  点到线段的最短距离算法

图1 (a)最短距离为点P与其在线段AB上投影C之间的线段PC

                                        (b)最短距离为点P与端点B(或A)所构成的线段PB(或PA)

 

具体算法主要有以下三种:

1、方法——经典算法

该算法直接用高中时所学习到的解析几何知识对点到线段的距离进行求解。其基本思想是先判断点在线段端点、点在线上等等的特殊情况,逐步的由特殊到一般,当忽略点在线段上的特殊情况时,判断点到线段方向的垂线是否落在线段上的方法是通过比较横纵坐

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值