Python 3D中的2D圆形曲面

h9a6wy2h  于 2024-01-05  发布在  Python
关注(0)|答案(3)|浏览(156)

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

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

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

1szpjjfi

1szpjjfi1#

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

  1. import numpy as np
  2. import matplotlib.pyplot as plt
  3. from mpl_toolkits.mplot3d import Axes3D
  4. R = np.linspace(0, 5, 100)
  5. h = 5
  6. u = np.linspace(0, 2*np.pi, 100)
  7. x = np.outer(R, np.cos(u))
  8. y = np.outer(R, np.sin(u))
  9. fig = plt.figure()
  10. ax = fig.add_subplot(111, projection='3d')
  11. 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
  12. fig.show()

字符串


的数据

展开查看全部
ev7lccsx

ev7lccsx2#

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

  1. z = np.ones_like(x) * h
  2. ax.plot_surface(x, y, z)

字符串

gmxoilav

gmxoilav3#

enter image description here

  1. import numpy as np
  2. import matplotlib.pyplot as plt
  3. from mpl_toolkits.mplot3d import Axes3D
  4. r=5
  5. h = 5
  6. Rc = np.linspace(0, r, 3) # 0, radio, vertices desde la orilla hasta el centro
  7. uc = np.linspace(0, 2*np.pi, 28)
  8. xc = np.outer(Rc, np.cos(uc))
  9. yc= np.outer(Rc, np.sin(uc))
  10. zc = np.ones_like(xc) * h # Crear un array 2D lleno con el valor de h
  11. fig = plt.figure()
  12. ax = fig.add_axes(111, projection='3d')
  13. circulo = ax.plot_surface(xc, yc, zc , color='#0000FF')
  14. plt.show()

字符串

展开查看全部

相关问题