gpt4 book ai didi

python - 最适合平滑 3D 表面的矩形网格

转载 作者:行者123 更新时间:2023-12-01 04:53:28 27 4
gpt4 key购买 nike

您好,我正在努力寻找一种方法来创建最适合平滑 3D 表面的矩形网格。特别是我有一个地震断层模型,如 this 所示。情节。

这些是断层的深度等值线。我想找到最适合表面的定义尺寸(例如 10x10km)的矩形网格。它不必(也不可能)完全位于表面上,只要尽可能接近,并且它必须是矩形,而不仅仅是四边形。我有定义表面的节点,我可以轻松地对它们进行插值。

欢迎使用 Python 解决方案或对我解决此问题的开源代码提出建议。我尝试过商业网格划分器(ABAQUS),但它们总是返回四边形。我一直无法弄清楚这一点,所以任何提示都会受到赞赏。

最佳答案

如果您有定义表面的节点,则意味着您有一个不规则的坐标网格和相应的值。因此,您可以由此生成三角测量(很可能您用来显示这些填充轮廓的工具在屏幕后面使用相同的工具)。

Matplotlib 有两个非常有用的类,可以将三角剖分转换为 rectilinear grid (矩形网格的更通用形式):LinearTriInterpolatorCubicTriInterpolator 。它们被用于 this matplotlib example

这些是同一示例的基本步骤,由我注释,但功劳归于 matplotlib 贡献者:

import matplotlib.pyplot as plt
import matplotlib.tri as mtri
import numpy as np

# Create triangulation.
coords, earthquake_fault = get_coordinate_data() # to be filled in by you
x = coords['x']
y = coords['y']
triang = mtri.Triangulation(x, y)

# Interpolate to regularly-spaced quad grid.
z = earthquake_fault # the "height" data
xi, yi = np.meshgrid(np.linspace(x.min(), x.max() 20), np.linspace(y.min(), y.max(), 20))

interp_lin = mtri.LinearTriInterpolator(triang, z)
zi_lin = interp_lin(xi, yi)

# Plot the triangulation.
plt.subplot(121)
plt.tricontourf(triang, z)
plt.triplot(triang, 'ko-')
plt.title('Triangular grid')

# Plot linear interpolation to quad grid.
plt.subplot(122)
plt.contourf(xi, yi, zi_lin)
plt.title('Rectangular grid')

关于python - 最适合平滑 3D 表面的矩形网格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27975879/

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