gpt4 book ai didi

python - 使用 Mayavi 进行错误的自动三角测量,无法为仅通过角点识别的表面着色

转载 作者:太空宇宙 更新时间:2023-11-03 18:38:57 25 4
gpt4 key购买 nike

我尝试使用 Mayavi 根据 Y 值对仅通过其角点已知的表面进行着色。原来,我成功地用 matplotlib ( here ) 做了同样的事情,但我把这个规范放回到我的真实数据上,渲染不够充分,因此我现在正在尝试使用 Mayavi。我从Surface from irregular data example找到了这个例子这很有帮助。然而,当应用于我的案例时,在这个简单的案例中重现,三角测量会出错,如下图所示,左表面有两个下三角形,而不是右表面的上三角形和下三角形。

enter image description here

我发现它来自第二个 Y 顶点的位置,但是我想找到一个更通用的解决方案来 1)避免这种错误的三角测量,2)通过在每个角之间进行插值来获得更光滑的表面,如下所示我的previous post并尽可能避免在右侧表面上看到的折叠,因为我的表面仅分成两个三角形。关于使用 Mayavi 执行此操作有什么想法吗?

这是我用来生成这个简单示例的代码:

#!/usr/bin/env python
#-*- coding: utf-8 -*-
import numpy
from mayavi import mlab

X1 = numpy.array([0, 0, 1, 1])
Y1 = numpy.array([0.5, 0.75, 1, 0.5])
Z1 = numpy.array([0, 1, 0.5,0])

X2 = numpy.array([0, 0, 1, 1])
Y2 = numpy.array([-0.5, -0.45, -1, -0.5])
Z2 = numpy.array([0, 1, 0.5,0])

fig = mlab.figure(1, bgcolor=(1, 1, 1), fgcolor=(0.5, 0.5, 0.5))
# Building the working triangulation
# Define the points in 3D space
# including color code based on Z coordinate.
pts = mlab.points3d(X1, Y1, Z1, Y1, colormap='jet')
# Triangulate based on X, Y with Delaunay 2D algorithm.
# Save resulting triangulation.
mesh = mlab.pipeline.delaunay2d(pts)
# Remove the point representation from the plot
pts.remove()
# Draw a surface based on the triangulation
surf = mlab.pipeline.surface(mesh, colormap='jet')

# Building the buggus triangulation
pts = mlab.points3d(X2, Y2, Z2, Y2, colormap='jet')
# Triangulate based on X, Y with Delaunay 2D algorithm.
# Save resulting triangulation.
mesh = mlab.pipeline.delaunay2d(pts)
# Remove the point representation from the plot
pts.remove()
# Draw a surface based on the triangulation
surf = mlab.pipeline.surface(mesh, colormap='jet')

# Simple plot.
mlab.outline(extent=(0,1,-1,1,0,1))
mlab.axes(extent=(0,1,-1,1,0,1), nb_labels=3)
mlab.show()

最佳答案

与 matplotlib 示例相比,您使用了不同的数组

matplotlib 示例:

 z = numpy.array([0, **0.5, 1,** 0])

这里:

 Z1 = numpy.array([0, **1, 0.5**,0])

使用正确的 z 数组,绘图看起来与 matplotlib 示例类似,包括插值以获得更平滑的颜色过渡。

关于python - 使用 Mayavi 进行错误的自动三角测量,无法为仅通过角点识别的表面着色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20979274/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com