2016-12-30 5 views
1

Ich mag von matplotlib einen Tetraeders mesh plotten, und die folgende ist ein einfaches Tetraeders mesh:Wie zeichne ich ein Tetrahedron Mesh von Matplotlib?

xyz = np.array([ 
    [-1,-1,-1], 
    [ 1,-1,-1], 
    [ 1, 1,-1], 
    [-1, 1,-1], 
    [-1,-1, 1], 
    [ 1,-1, 1], 
    [ 1, 1, 1], 
    [-1, 1, 1]], dtype=np.float) 

tets = np.array([ 
    [0,1,2,6], 
    [0,5,1,6], 
    [0,4,5,6], 
    [0,7,4,6], 
    [0,3,7,6], 
    [0,2,3,6]], dtype=np.int) 

Natürlich in der Praxis kann die Anzahl von Tetraedern in einem Netz groß sein. Ich kann in Google keine nützliche Hilfe finden. Also, was ist der bessere Weg, um ein Tetraedernetz durch matplotlib zu plotten?

Darüber hinaus kann ich alle Dreiecksflächen des Netzes erhalten.

tri = np.array([ 
[0 2 1] 
[0 1 5] 
[0 6 1] 
[0 3 2] 
[0 2 6] 
[0 6 3] 
[0 7 3] 
[0 5 4] 
[0 6 4] 
[0 4 7] 
[0 6 5] 
[0 6 7] 
[1 2 6] 
[5 1 6] 
[2 3 6] 
[3 7 6] 
[4 5 6] 
[7 4 6]],dtype=np.int) 
+0

dies lesen: https://mathema.tician.de/software/meshpy/ – eyllanesc

+0

und dies: https://github.com/inducer/meshpy/blob/master/examples/test_tri_quadratic.py – eyllanesc

Antwort

1

matplotlib ist vielleicht das falsche Werkzeug für die Aufgabe. 3D-Plotten ist schwierig, und es gibt z. B. ParaView zum Ausprobieren. Sie können meshio (ein Projekt von mir) verwenden Ihre Masche auf einen geeigneten Datentyp zu schreiben:

import meshio 
meshio.write('out.vtu', xyz, {'tetra': tets}) 

enter image description here

+0

Es ist eine gute Arbeit. Kann 'meshio' eine obj-Mesh-Datei lesen und schreiben? –

+0

Nie von diesem Format gehört. –

+0

Hier ist das Wiki https://en.wikipedia.org/wiki/Wavefront_.obj_file. –

1

Man kann mpl_toolkits.mplot3d.art3d.Poly3DCollection verwenden:

import mpl_toolkits.mplot3d as a3 
axes = a3.Axes3D(pl.figure()) 
vts = xyz[tri, :] 
tri = a3.art3d.Poly3DCollection(vts) 
tri.set_alpha(0.2) 
tri.set_color('grey') 
axes.add_collection3d(tri) 
axes.plot(point[:,0], point[:,1], point[:,2], 'ko') 
axes.set_axis_off() 
axes.set_aspect('equal') 
pl.show() 
Verwandte Themen