在两年多前,曾在开发一个交互式流程图绘制工具时,遇到了屏幕二维线段鼠标拣选(用鼠标激活线段)的问题。当时要求在鼠标接近线段时,鼠标光标要变成手指形状,而且此时如果用户按下鼠标左键,则可以激活该条线段。问题的核心是,如何判断鼠标接近了线段。很直接的想法是:鼠标移动过程中,计算鼠标点到线段的垂直距离,如果距离小于设定的临界值,则判断为鼠标接近了线段。但是随后又考虑,平面上,计算一个点到直线的垂直距离,稍微有点复杂,想要采用尽量简便,又不影响操作的算法。最后经过思考,我确定了这样一种算法,实践证明,效果还是非常好的。详细内容:http://blog.csdn.net/guanzhongs/archive/2006/01/07/572908.aspx
但是从计算的效率上,未必比直接算距离高
因为a+b-c,需要3次sqrt的运算,这个代价不小
直接算距离的方法:
http://blog.csdn.net/happy__888/archive/2005/11/09/526154.aspx
只需要一次sqrt,但是有一次除法引入
不需要计算交点,就是几次乘法和加减计算就可以判断了,要快的多,
sqrt是非常慢的