将 matplotlib 三角网格导出到渐近线曲面

将 matplotlib 三角网格导出到渐近线曲面

这是我在 stackoverflow 上提出的问题为了清晰起见,此处部分复制。

我正在玩scikit-image 行进立方体 算法。这是文档中给出的示例的简化版本。

from matplotlib import pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d.art3d import Poly3DCollection
from skimage import measure


x = np.linspace(-1, 1, 11)

X, Y, Z = np.meshgrid(x, x, x, indexing = 'ij')

def f(x, y, z):
    return x

verts, faces = measure.marching_cubes(f(X, Y, Z), 0.6)

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

mesh = Poly3DCollection(verts[faces])
ax.add_collection3d(mesh)

ax.set_xlim(0, 10)
ax.set_ylim(0, 10)
ax.set_zlim(0, 10)

plt.show()

最终的表面效果如下:

在此处输入图片描述

现在我想用渐近线绘制曲面。所以基本上,我必须找到一种方法来导出三角形的坐标。很简单:每个三角形都是一个元素,verts[faces]由 3 个列表表示,元素是每个顶点的 3 个坐标。所以我可以解析verts[faces]并写入path3 triangle = (x1, y1, z1) -- (x2, y2, z2) -- (x3, y3, z3) -- cycle每个三角形的文件。然后,对于每个triangle,我绘制曲面:draw(surface(triangle))。但是有没有更好的方法来定义渐近线的曲面?

请注意,在现实生活中,表面比简单的平面复杂得多:)

相关内容