最近做了一个类似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、方法——经典算法
该算法直接用高中时所学习到的解析几何知识对点到线段的距离进行求解。其基本思想是先判断点在线段端点、点在线上等等的特殊情况,逐步的由特殊到一般,当忽略点在线段上的特殊情况时,判断点到线段方向的垂线是否落在线段上的方法是通过比较横纵坐