如何绘制一个半径不均匀的圆柱体?

3

我已经编写了一段代码来生成一个半径固定的圆柱体:

import numpy as np
from matplotlib import pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from math import sin, cos, pi

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

theta = np.linspace(-2*pi,2*pi, 600)
Z = np.linspace(0,1,700)

Z,theta = np.meshgrid(Z, theta)

R = 0.1
X = (R*np.cos(theta))
Y = (R*np.sin(theta))

ax.plot_surface(X,Y,Z,linewidth = 0,facecolor = 'r', shade = True, alpha = 0.6)
plt.show()

如何更改代码以使圆柱体半径可变。例如,半径从圆柱体一端开始为0.1,并且每个绘制的连续“圆”比之前的半径增加0.01?换句话说,我想要将具有不同半径的圆“连接”在一起,形成一个半径不均匀的圆柱体。

1个回答

3

更改了R = np.linspace(0,1,700)

import numpy as np
from matplotlib import pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from math import sin, cos, pi

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

theta = np.linspace(-2*pi,2*pi, 600)
Z = np.linspace(0,1,700)

Z,theta = np.meshgrid(Z, theta)

R = np.linspace(0,1,700)
X = (R*np.cos(theta))
Y = (R*np.sin(theta))

ax.plot_surface(X,Y,Z,linewidth = 0,facecolor = 'r', shade = True, alpha = 0.6)
plt.show()

你也可以尝试使用类似于R = np.sin(np.linspace(0,1,700) * 4) + 1这样的函数。


谢谢!我会尽快接受(一旦时间限制到期)。 - fosho
不错,然后你只需要像这样将其添加到R中 R = np.linspace(0,1,700) + 2,就可以使圆锥体打开。 - el3ien
顺便说一句,在我试图解决这个问题时,我做了 R = np.arange(0,600*700).reshape(600,700):D 得到了有趣的结果。 - el3ien

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接