首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >三维笛卡儿网格到球面截面网格转换

三维笛卡儿网格到球面截面网格转换
EN

Stack Overflow用户
提问于 2018-06-17 04:52:45
回答 1查看 262关注 0票数 0

我是用有限元法模拟球面截面上的对流。我试图将三维笛卡儿网格变形成球面截面,半径为3480 <=,半径为<= 6371公里,θ和phi的角度范围为80度。请检查这个图像,左边的图形是三维笛卡儿网格,而右边是网格所需的变形几何图形。我使用了一些转换函数来变形网格,但无法达到最终目标。我正在寻找一些关于算法或变换函数的建议,将网格变形成一个球形截面。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-17 05:54:37

不确定这是否真的一样,但从眼睛上看,它看起来足够接近了:

代码语言:javascript
运行
复制
import numpy as np

phi, theta, R = np.ogrid[-40:40:21j, -40:40:21j, 3480:6371:21j]

y, x = np.tan(phi*np.pi/180), np.tan(theta*np.pi/180)
z = R / np.sqrt(x*x + y*y + 1)
y, x = y*z, x*z

from mpl_toolkits.mplot3d import Axes3D
import pylab
fig = pylab.figure(1)
ax = fig.add_subplot(111, projection='3d')
ax.plot_wireframe(x[..., 20], y[..., 20], z[..., 20])
ax.plot_wireframe(0.01*x[..., 20], 0.01*y[..., 20], 0.01*z[..., 20]) # hack to scale z axis
ax.plot_wireframe(x[:, 20, :], y[:, 20, :], z[:, 20, :])
ax.plot_wireframe(x[0, ...], y[0, ...], z[0, ...])
fig.show()

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50893819

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档