[英]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之前)。
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.