matplotlib.tri проблемы с соседями

Мне было интересно, сталкивался ли кто-нибудь еще с этой проблемой? Я пытаюсь сделать триангулированную поверхность, и я хотел бы знать, какие треугольники соседствуют. Скажем, например, я триангулирую тор, где я буду создавать вершины в наборах колец. Тогда я бы сделал функцию

def torus(n, m):
    tri = []
    for i in range(n):
        for j in range(m):
            a = j + i*m
            b = (j+1)%m + i*m
            c = (a+m)%(n*m)
            d = (b+m)%(n*m)
            tri += [[a,b,c], [b,c,d]]
    return  tri

это создаст набор треугольников, указывающих их определяющие вершины. Проблема в том, что я использую matplotlib для триангуляции:

triangles = torus(n , m)
triang = matplotlib.tri.Triangulation(x.ravel(), y.ravel(), triangles)

моя переменная triangатрибут neighbors не записывает всех соседей. На их сайте написано, что он вернет

-1, если такого соседнего треугольника нет.

и я получаю

>>> triangles[19]
[10, 29, 30]
>>> triangles[18]
[9, 10, 29]
>>> triangles[58]
[29, 30, 49]
>>> triangles[20]
[10, 11, 30]
>>> triang.neighbors[19]
array([18, 58, -1], dtype=int32)

и ясно, что triangles[20] сосед triangles[19] так как оба разделяют две вершины. Кто-нибудь знает об обходном пути? Или что делать в такой ситуации? Это не единственное явление в моей триангуляции, на самом деле их много.

0 ответов

Другие вопросы по тегам