如何在Python中在3D三角形表面绘制插值标量场

3
我的问题如下:我有一个三角网面,其中包含数组X、Y、Z,这些数组包含网格顶点的坐标,以及数组Triangles,其中包含每个三角形每个角落的顶点点索引(即数组的每一行都包含定义三角形的三元组)。此外,我还有一个包含网格每个顶点上标量场值的数组Field。我希望在Python中绘制三角网格,其中每个三角形的颜色根据其顶点的场值而定。
我已经找到了一个解决方案,如果为每个三角形分配一个单一的颜色(请参见here)。如果我想在每个单独的三角形表面上插值场值,那么怎么办,使得网格有连续(甚至更好的平滑)的着色?
我考虑使用Matplotlib的tri_api,因为它也可以在三角网格上进行插值,但是我没有找到适合我需要的解决方案。这个演示接近了我的需求,但是它只能用于平面而且只能在矩形网格上插值。
当然,解决方案不一定要用Matplotlib,它可以是任何其他Python库/工具箱。我会感激任何建议!
1个回答

1

在三维绘图中,这是一个很难的问题,但是有其他一些软件工具可以使用,尤其是ParaView。不过你需要先将网格转换为ParaView可以使用的文件格式。为此,你可以使用meshio(由我编写)来完成:

import numpy
import meshio

points = numpy.array([
    [0.0, 0.0, 0.0],
    [0.0, 1.0, 0.0],
    [0.0, 0.0, 1.0],
    ])
cells = {
    "triangle": numpy.array([
        [0, 1, 2]
        ])
    }
meshio.write_points_cells(
    "foo.vtk",
    points,
    cells,
    point_data=point_data,
    )

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接