1

我有 6 个 3d 曲面的角点坐标,如图 1 所示。我想生成并绘制 3d 曲面,如图 2 所示。我需要找到每个网格区域的中点到原点的距离。
图1

图 2

请建议我,哪个模块更适合网格划分和绘图?

4

3 回答 3

0

您可以使用vedo

from vedo import *

pts = [(-5.795555, -4, 1.55291), (-4.829629, -2, 1.294095),
       (-5.795555, 1, 1.552914), (-5.536736, -4, 2.51884),
       (-4.57081, -2, 2.260021), (-5.536736,  1, 2.51884)]

faces = [(0,3,4,1), (1,4,5,2)]

mesh = Mesh([pts, faces]).color('red').alpha(0.3).lineWidth(2)
labels = [Text(i, pos=pts[i], s=.2, c='k') for i in range(len(pts))]

show(mesh, labels)

脚本结果

于 2019-12-20T02:32:26.417 回答
0

我不知道您的数据是什么样的,但 matplotlib 能够基于具有 x、y 和 z 坐标的点绘制 3D 表面。

见:https ://matplotlib.org/mpl_toolkits/mplot3d/tutorial.html

于 2019-12-18T12:49:07.233 回答
0

PyVistavtkplotter非常相似,都建立在 VTK 之上,但有非常不同的 API/设计选择。供您使用,两者都很棒!为了完整起见,这里是 PyVista 的等价物。

通常使用像这样的简单几何图形,Matplotlib、PyVista,或者vtkplotter都可以做得很好。如果您开始创建更复杂的网格和 3D 场景,那么这就是 PyVista 的优势所在,vtkplotter因为它们是为 3D 而构建的,而 MPL 在 2D 方面确实很棒。

如果您开始制作复杂的网格,PyVista 将特别擅长数据管理......不要脸的插件;)

import pyvista as pv
import numpy as np

# Define the nodes
pts = np.array([(-5.795555, -4, 1.55291), (-4.829629, -2, 1.294095),
       (-5.795555, 1, 1.552914), (-5.536736, -4, 2.51884),
       (-4.57081, -2, 2.260021), (-5.536736,  1, 2.51884)])
# Define the quads
faces = np.array([(4,0,3,4,1), (4,1,4,5,2)])

# Instantiate a mesh
mesh = pv.PolyData(pts, faces)

# Create a plotting window and display!
p = pv.Plotter()

# Add the mesh and some labels
p.add_mesh(mesh, show_edges=True)
p.add_point_labels(mesh.points, ["%d"%i for i in range(mesh.n_points)])

# A pretty view position
p.camera_position = [(-11.352247399703748, -3.421477319390501, 9.827830270231935),
 (-5.1831825, -1.5, 1.9064675),
 (-0.48313206526616853, 0.8593146723923926, -0.16781448484204659)]

# Render it!
p.show()

在此处输入图像描述

于 2020-01-22T06:36:24.903 回答