做计算机图形学实验的时候,要捕获和拖动直线或者是图形的某一条边。
我们在寝室讨论如何判断鼠标在直线上的时候我的想法是扫描直线上的点再进行近似判断,在线上点附近就算是捕获直线了。
有个同学想到了用三角形两边之和大于第三的原理。第二天我就急忙实现了。
算法的思想是:
已知三角形两边之和大于第三边,当鼠标点在直线上时点到直线两端点的距离和等于直线的长度,
我们可以用点到两顶点的距离之和小于直线长度加上一个误差范围值(我选取的是0.5),
当符合要求的时候可以近似判定点就在直线上。
用MFC实现:
同时给出判断捕获直线两个端点的方法:
CDrawLine是自己写的类,