如何绘制三角形 3d 网格
How to plot a triangular 3d mesh
在 2d 中绘制由顶点和三角剖分给出的三角形网格非常简单
import matplotlib.pyplot as plt
import numpy as np
T = np.array([[0,1,2], [1,2,3]])
vertices = np.array([[0,0],[1,0],[0,1],[1,2]])
plt.triplot(vertices[:,0], vertices[:,1], T)
plt.show()
现在我想做完全相同的事情,但在三维空间中,例如
vertices = np.array([[0,0,0],[1,0,0],[0,1,0],[1,2,1]])
有没有简单的方法可以在 matplotlib 中实现? (至少比遍历三角形并手动绘制边更简单?)
您可以使用非常相似的方式实现它 mplot3d:
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import numpy as np
vertices = np.array([[0,0,0],[1,0,0],[0,1,0],[1,2,1]])
T = np.array([[0,1,2], [1,2,3]])
fig = plt.figure()
ax = fig.gca(projection='3d')
ax.plot_trisurf(vertices[:,0], vertices[:,1], vertices[:,2], triangles = T, edgecolor=[[0,0,0]], linewidth=1.0, alpha=0.0, shade=False)
plt.show()
在 2d 中绘制由顶点和三角剖分给出的三角形网格非常简单
import matplotlib.pyplot as plt
import numpy as np
T = np.array([[0,1,2], [1,2,3]])
vertices = np.array([[0,0],[1,0],[0,1],[1,2]])
plt.triplot(vertices[:,0], vertices[:,1], T)
plt.show()
现在我想做完全相同的事情,但在三维空间中,例如
vertices = np.array([[0,0,0],[1,0,0],[0,1,0],[1,2,1]])
有没有简单的方法可以在 matplotlib 中实现? (至少比遍历三角形并手动绘制边更简单?)
您可以使用非常相似的方式实现它 mplot3d:
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import numpy as np
vertices = np.array([[0,0,0],[1,0,0],[0,1,0],[1,2,1]])
T = np.array([[0,1,2], [1,2,3]])
fig = plt.figure()
ax = fig.gca(projection='3d')
ax.plot_trisurf(vertices[:,0], vertices[:,1], vertices[:,2], triangles = T, edgecolor=[[0,0,0]], linewidth=1.0, alpha=0.0, shade=False)
plt.show()