关于加快边缘选择的建议

Dav*_*ave 6 algorithm graph computational-geometry

我正在C#中构建一个图形编辑器,用户可以在其中放置节点,然后将它们与定向或无向边连接.完成后,A*寻路算法确定两个节点之间的最佳路径.

我拥有:具有x,y,连接节点列表以及F,G和H分数的Node类.具有"开始","完成"以及是否指向的Edge类.Graph类,包含节点和边的列表以及A*算法

现在,当用户想要选择节点或边缘时,记录鼠标位置,并迭代每个节点和边缘以确定是否应该选择它.这显然很慢.我以为我可以为我的节点实现QuadTree来加速它,但是我该怎样做才能加速边缘选择?

Yuv*_*l F 1

我想你已经准备好了所有的原料。这是一个建议:

  1. 索引空间数据结构中的所有边(可以是QuadTreeR-Tree等)。每条边都应使用其边界框进行索引。
  2. 记录鼠标位置。
  3. 搜索包含鼠标位置的最具体的矩形。
  4. 这个矩形应该有一个或多个边/节点;根据所需的模式迭代它们。
  5. (棘手的部分):如果用户没有指示最具体矩形的任何边缘,您应该上升一级并迭代该级别中包含的边缘。也许你可以不用这个。

这应该会更快。