【发布时间】:2014-10-01 21:10:52
【问题描述】:
我要在这里指出,我并不是真正的高级程序员。我更像是一名数学家,所以在设计这个应用程序的过程中,我正在学习如何使用 C++ 的特定元素。我可以很容易地遵循算法和示例等等,只是我没有一个很好的 C++ 工具目录。
该程序的想法如下图所示。您可以放置、选择和移动节点。当前选中的节点为红色(可以选择多个)。我已经使用 gtkmm 和绘图区域小部件实现了这一点。当您单击绘图区域时,程序会计算最近的网格交点,如果那里有节点,它会选择它。
节点存储在 unordered_map 中,以 Coordinate 结构作为键。行存储在带有一对键的 unordered_map 中。使用这个我可以很容易地检查一个节点是否存在于一个点,但是检查一条线是否通过一个点就不是那么容易了。
我也希望能够选择行。我想不出一种与节点类似的有效方法来管理它:我不能只将指针的坐标捕捉到最近的行,因为这需要我遍历程序中的每一行,然后检查指针是否是离线路足够近,如果不继续下一条,随着线路数量的增加,这将变得非常低效。
以图片为例:http://i.imgur.com/yWAv9ue.png
有没有什么方法可以将一个对象添加到 GTK 绘图区域,当单击该对象时会发出一个信号?
编辑:在给定一条线和一个坐标的情况下,从数学上确定该坐标是否存在于该线上是很简单的。但是,我正在处理任意多行,所以主要问题是确定 哪条 行是最近的
【问题讨论】: