Triangulación en Matplotlib: más triángulos que vértices.
Quiero crear una cuadrícula triangular no estructurada y tengo dos archivos: uno para los vértices y otro para los triángulos. El problema es que el método de triangulación de Matplotlib requiere que la longitud del arreglo de vértices y la longitud del arreglo de triángulos sean iguales, pero mis datos tienen más triángulos que vértices. Por lo tanto, en lugar de obtener una cuadrícula completa, solo puedo obtener una parte de ella (omitendo la parte final del arreglo de triángulos).
Mi salida:
Salida esperada:
Arreglo de vértices:
[[0. 0. ]
[0. 1. ]
[1. 0. ]
[1. 1. ]
[0. 0.33333333]
[0. 0.66666667]
[0.33333333 0. ]
[0.66666667 0. ]
[0.33333333 1. ]
[0.66666667 1. ]
[1. 0.33333333]
[1. 0.66666667]
[0.48987551 0.53023763]
[0.43898046 0.76879765]
[0.70260457 0.70541771]
[0.23823447 0.57580349]
[0.30488903 0.35751012]
[0.7335183 0.42800646]
[0.52102626 0.34589035]
[0.80431355 0.19597677]
[0.19985633 0.8004077 ]
[0.44618858 0.18491763]
[0.84231781 0.84302109]
[0.21688219 0.17515222]
[0.63434267 0.23095824]]
Arreglo de triángulos:
[(4, 0, 23), (0, 6, 23), (6, 21, 23), (6, 7, 21), (21, 16, 23), (18, 16, 21), (12, 16, 18), (12, 15, 16), (15, 4, 16), (16, 4, 23), (5, 4, 15), (5, 15, 20), (1, 5, 20), (8, 1, 20), (13, 8, 20), (9, 8, 13), (15, 13, 20), (12, 13, 15), (14, 12, 17), (13, 12, 14), (9, 13, 14), (9, 14, 22), (3, 9, 22), (11, 3, 22), (14, 11, 22), (11, 14, 17), (10, 11, 17), (10, 17, 19), (17, 12, 18), (18, 21, 24), (17, 18, 24), (19, 17, 24), (7, 19, 24), (21, 7, 24), (7, 2, 19), (2, 10, 19)]
Código que escribí:
nodes = np.asarray(convert(read_file(“d2.txt”), float))
x, y = np.degrees(nodes[:, 0]), np.degrees(nodes[:, 1])
v_numbers = np.asarray(convert(read_file(“d1.txt”), int))
triang = Triangulation(x, y, v_numbers[0:25])
plt.figure()
plt.gca().set_aspect(‘equal’)
plt.triplot(triang, ‘go-‘)
plt.show()
¿Existe alguna manera de solucionar esto, o existe otra biblioteca con métodos que permitan obtener lo que quiero?
davy.ai
Parece que el problema con tu código es que solo estás pasando los primeros 25 triángulos a
Triangulation
, mientras que en realidad hay 34 triángulos en los datos. Esto hace que se omitan los últimos 9 triángulos, lo que resulta en una rejilla incompleta.Para solucionar esto, simplemente puedes pasar todos los triángulos a
Triangulation
en lugar de solo los primeros 25. Aquí tienes el código actualizado:Esto debería darte la rejilla completa que estás esperando. En cuanto a otras bibliotecas que podrían proporcionar funcionalidad similar, podrías considerar el uso de
scipy.spatial.Delaunay
opyvista.PolyData
, ambas soportan rejillas triangulares no estructuradas.