矢量化行进立方体(正方形) - 将线连接成曲线

时间:2015-07-11 13:41:45

标签: python algorithm

我正在绘制一个带有行进立方体(正方形,因为它是2d)算法的元球。 一切都很好,但我想把它作为矢量对象。

到目前为止,我在每个活动方块中都有一两行矢量线,将它们保存在列表中。换句话说,我有一个小矢量线阵列,在空间上显示几个等值线(曲线) - 我的目标是从线重建那些曲线。

现在我坚持快速加入所有这些:基本上我需要将所有行一个接一个地连接成几个序列(曲线)。我不知道会有多少曲线(序列),并且线条可能在不同的方向上,我需要将线条处理成唯一点的序列。

到目前为止,我写了一些非常丑陋和半工作的内容(此处是一个包含点列表的类,作为属性 chP 是一个函数检查点是否足够接近, t 定义这个'足够'):

WHILE

我知道这是一个很大的问题,但请告诉我正确的方向来处理这项任务

1 个答案:

答案 0 :(得分:1)

第一个选项是唯一地对所有单元格边编号,并将它所连接的边对与每个向量相关联。

双向输入字典中的所有对:(a,b)(b,a)。然后,从任意对开始,比如说(a,b),你会发现b中的下一对,比如说(b,c)。您将从字典中删除(b,c)(c,b),然后从c继续,直到链在域的一侧断开或循环。

第二个选项是扫描整个域,当您找到isocurve穿过的单元格时,计算向量,并移动到共享isocurve交叉边缘的相邻单元格,依此类推。为了避免无限扫描,您将标记已经访问过的单元格。

与第一种方法相比,不需要字典,因为链的下面纯粹基于局部几何。

请注意有两个陷阱:

  • 具有一个或多个角值等于等级的单元格会产生麻烦。可能的治愈方法是略微修改角点;这将创建一些微小的载体。

  • 细胞可以通过两个向量而不是一个向量进行交叉,并且需要访问两次。