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]
так как оба разделяют две вершины. Кто-нибудь знает об обходном пути? Или что делать в такой ситуации? Это не единственное явление в моей триангуляции, на самом деле их много.