注釈
Go to the end をクリックすると完全なサンプルコードをダウンロードできます.
PolyDataを作成#
頂点と面から pyvista.PolyData
(表面メッシュ)を作成します.
import numpy as np
import pyvista as pv
PolyDataオブジェクトは,多数の配列からすばやく作成できます.頂点配列にはメッシュ内の点の位置が含まれ,面配列には各面の点の数とその面を構成する頂点のインデックスが含まれます.
# mesh points
vertices = np.array([[0, 0, 0], [1, 0, 0], [1, 1, 0], [0, 1, 0], [0.5, 0.5, -1]])
# mesh faces
faces = np.hstack(
[
[4, 0, 1, 2, 3], # square
[3, 0, 1, 4], # triangle
[3, 1, 2, 4], # triangle
]
)
surf = pv.PolyData(vertices, faces)
# plot each face with a different color
surf.plot(
scalars=np.arange(3),
cpos=[-1, 1, 0.5],
show_scalar_bar=False,
show_edges=True,
line_width=5,
)
多角形 PolyData#
点と面から直接3面ポリゴンメッシュを作成します.
注釈
一般に,大きなメッシュではリストを積み重ねるよりもnumpyの配列を使う方が効率的です.
points = np.array(
[
[0.0480, 0.0349, 0.9982],
[0.0305, 0.0411, 0.9987],
[0.0207, 0.0329, 0.9992],
[0.0218, 0.0158, 0.9996],
[0.0377, 0.0095, 0.9992],
[0.0485, 0.0163, 0.9987],
[0.0572, 0.0603, 0.9965],
[0.0390, 0.0666, 0.9970],
[0.0289, 0.0576, 0.9979],
[0.0582, 0.0423, 0.9974],
[0.0661, 0.0859, 0.9941],
[0.0476, 0.0922, 0.9946],
[0.0372, 0.0827, 0.9959],
[0.0674, 0.0683, 0.9954],
],
)
face_a = [6, 0, 1, 2, 3, 4, 5]
face_b = [6, 6, 7, 8, 1, 0, 9]
face_c = [6, 10, 11, 12, 7, 6, 13]
faces = np.concatenate((face_a, face_b, face_c))
mesh = pv.PolyData(points, faces)
mesh.plot(show_edges=True, line_width=5)
Total running time of the script: (0 minutes 0.674 seconds)