本文主要是介绍编写一款2D CAD/CAM软件(十九)点选图形,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
点选图元原理
- 设定鼠标敏感范围,比如选中鼠标点击位置5个像素内距离最近的图元;
- 当鼠标点击时,求解点击位置在几何坐标系下坐标点与附近几何图元的距离;
- 如果到图元距离小于设定的鼠标敏感范围,则视为图形可选中;
- 进一步,如果多个图元满足被选中的条件,则只选中距离最近的图元(根据需求也可设定满足条件图元全部选中,如本文实例)。
数学方法
- 点到点的距离:笛卡尔坐标系下点到点距离求解方法。
- 点到直线最短距离:注意CAD/CAM软件中直线都是直线段,故最短距离可能有两种情况,一是垂线段距离最短,二是到断点距离最短(此时不存在垂线段情形)。
- 点到折线最短距离:折线其实是直线段的组合,所以点到折线的最短距离转换为点到直线段最短距离。
- 点到正圆最短距离:点到圆心距离,减去半径长度,求绝对值。
- 点到曲线最短距离:曲线经特定精度的离散成折线,转换为点到折线的最短距离问题等。
实现
点图元的接口
/// j-geometry-point.h bool IsEqualTo(const JGeoPoint &other, double eps = GEO_EPS) const;bool operator==(const JGeoPoint &other) const;bool operator!=(const JGeoPoint &other) const;JGeoPoint operator+(const JGeoPoin
这篇关于编写一款2D CAD/CAM软件(十九)点选图形的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!