繁体   English   中英

在python中生成椭球网格

[英]Generating an Ellipsoid Grid in python

我需要对椭球做一些工作,但是我不确定如何为这部分编写代码。 我需要在椭球区域周围生成一个网格。 然后,我需要在网格上获取点并将其放入字符串或数组中。 最后一部分很好,不确定第一部分。 我只是不确定如何创建网格和点。 任何提示都会很棒。

这里有一些NumPy用于制作网格。 我认为您想要点[i,j]的2D网格,这些网格以3D分布。 在这种情况下,如果您的网格和空间都是2D或都是3D,则np.meshgrid()np.mgrid()可能不那么方便。

在此示例中,您的坐标是x[i,j]y[i,j]z[i]因为在此示例中它们是作为切片生成的。 左边的是初始球体,右边的是一个椭圆体。 python有点冗长,可以使发生的事情更清楚。

您需要其他东西吗?

您可以通过在绘图区域中按住并拖动来用光标旋转每个绘图(当然,这是在您的matplotlib窗口中,而不是在这里-至少在Stackexchange获得WebGL之前)。

3d图的屏幕截图

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

twopi = 2.0 * np.pi

z = np.linspace(-1, 1, 22)[1:-1]
r = np.sqrt(1.0 - z**2)[:,None]
theta = np.linspace(0, twopi, 21)[:-1][None,:]
x = r*np.cos(theta)
y = r*np.sin(theta)

print x.shape, y.shape, z.shape

fig = plt.figure(figsize=[12,6])
ax = fig.add_subplot(1,2,1,projection='3d')

for i in range(20):
    ax.plot(x[:,i], y[:,i], z)
    ax.plot(x[:,i], y[:,i], z, 'ok')
for i in range(20):
    ax.plot(x[i,:], y[i,:], z[i])

ax.set_xlim(-1, 1)
ax.set_ylim(-1, 1)
ax.set_zlim(-1, 1)

ax = fig.add_subplot(1,2,2,projection='3d')

a, b, c = 0.6, 0.3, 1.0

for i in range(20):
    ax.plot(a*x[:,i], b*y[:,i], c*z)
for i in range(20):
    ax.plot(a*x[i,:], b*y[i,:], c*z[i])

ax.set_xlim(-1, 1)
ax.set_ylim(-1, 1)
ax.set_zlim(-1, 1)
plt.show()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM