迭代定义深度的递归拆分

Iterating a recursive split of defined depth

我有两个顶点 (a) 和 (b),我想在它们的中点递归地分割它们。

模式看起来像这样:

对于这个特定的深度,我可以这样写:

       a_b = self.abfn(   a,    b)

      ab_b = self.abfn( a_b,    b)
      a_ab = self.abfn(   a,  a_b)
    
     abb_b = self.abfn(ab_b,    b)
    ab_abb = self.abfn( a_b, ab_b)
     a_aab = self.abfn(   a, a_ab)
    aab_ab = self.abfn(a_ab,  a_b)

但是我想这样写,我可以定义一个深度并重复分割到那个深度。 一个警告是我不想使用递归函数

如何以这种方式迭代?

我正在使用 python,但语言并不重要。

您可以使用此代码:

def midpoint(a, b):
    return ((a[0] + b[0]) / 2, (a[1] + b[1]) / 2)

def abfn(a, b, depth):
    vertices = [a, b]
    for _ in range(depth):
        nextlevel = vertices[:1]
        for a, b in zip(vertices, vertices[1:]):  # all consecutive pairs
            mid = midpoint(a, b)
            nextlevel.extend((mid, b))
        vertices = nextlevel
    return vertices

调用示例:

a = (0, 100)
b = (0, 200)
vertices = abfn(a, b, 2)

print(vertices)

输出:

[(0, 100), (0.0, 125.0), (0.0, 150.0), (0.0, 175.0), (0, 200)]