Python 2D 3D 圆形表面

问题描述 投票:0回答:2

我正在尝试生成圆柱面的顶部/底部。我能够在这里获得侧面:使用 np.outer 生成圆柱面。我想再次使用 np.outer 以保持一致性。我以为我理解了链接中的答案,但是如果我理解正确,那么以下内容应该有效:

R = 5
h = 5
u = np.linspace(0,  2*np.pi, 100)
x = R * np.outer(np.ones(np.size(u)), np.cos(u))          
y = R * np.outer(np.ones(np.size(u)), np.sin(u))          
z = h * np.outer(np.ones(np.size(u)), np.ones(np.size(u)))

但是在我的图中,没有生成任何表面。我仍然没有正确使用 np.outer 吗?为什么没有生成曲面?

python numpy 3d geometry surface
2个回答
4
投票

没有可见的圆盘,因为您创建的所有点到中心的距离完全相同,并且跨越“内圆”和“外圆”之间的表面无限薄。为了看到圆盘,半径需要在 0 和所需值(示例中为 5)之间变化。

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

R = np.linspace(0, 5, 100)
h = 5
u = np.linspace(0,  2*np.pi, 100)

x = np.outer(R, np.cos(u))
y = np.outer(R, np.sin(u))

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot_surface(x,y,h) # z in case of disk which is parallel to XY plane is constant and you can directly use h
fig.show()


0
投票

如果高度有任何错误,请不要在plot_surface中使用H,使用

z = np.ones_like(x) * h 

ax.plot_surface(x, y, z) 
© www.soinside.com 2019 - 2024. All rights reserved.