我正在使用Data.Graph图形模拟Haskell中的模拟。仿真仅限于我的图形模型的2D网格。下面网格上每个点上的一个节点将包含一个Maybe Molecule类型,因此可能存在一个分子或者没有分子。编辑/更新Haskell中的图形
1 - 2 - 3
| | |
4 - 5 - 6
| | |
7 - 8 - 9
我已经建立了这种表示,但是当涉及到更新分子的位置时,我觉得我要解决这个问题很长的路要走。到目前为止,我所做的是将所有节点都删除到节点列表中。我写了一个函数来交换这个节点列表中的两个项目。但是现在当我把所有东西都拉回来时,我遇到了问题,因为要生成一个新图,我需要一个顶点列表,我可以从顶点Graph函数轻松获得这些顶点。但我也需要用边缘触摸的顶点列表来压缩。不幸的是,Data.Graph的边缘Graph函数返回一个类型为Edge的元组列表,尽管我可以编写一个函数来派生具有边缘到顶点的列表顶点,但它并不直接有助于生成图形。这样做似乎对我来说足够的工作,我想知道我是否错过了一个有一个Graph函数,它只是采取一个图形,并返回一个更新节点的图形?
如果我使用图形,我可以看到相邻节点是否被其他分子占用以进行碰撞检测检查。 – mikeyP 2011-12-21 12:01:48
@mikeyP但是你也可以用数组来做到这一点,不是吗? – 2011-12-21 13:12:48
你是对的,在Graph下是一个数组。但是通过图形,我可以去除图形上的分子不能通过的区域。我看不出一个干净利落的方式来与阵列做到这一点。 – mikeyP 2011-12-21 13:49:33