问题描述
函数 y = x**2
绕 y 轴旋转的实体可以使用以下代码绘制:
A solid of revolution of a function y = x**2
around the y-axis can be plotted using the code below:
import numpy as np
import matplotlib.pyplot as plt
import mpl_toolkits.mplot3d.axes3d as axes3d
from matplotlib import cm
np.seterr(divide='ignore', invalid='ignore')
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ll, ul = 0, 1
u = np.linspace(ll, ul, 60)
v = np.linspace(0, 2*np.pi, 60)
U, V = np.meshgrid(u, v)
Z = U
X = np.sqrt(Z)*np.cos(V)
Y = np.sqrt(Z)*np.sin(V)
ax.set_xlabel('Y axis')
ax.set_ylabel('X axis')
ax.set_zlabel('Z axis')
ax.plot_surface(X, Y, Z, cmap=plt.cm.YlGnBu_r)
plt.show()
这段代码只是绘制了函数 x = sqrt(y)
的旋转实体,它是 y = x**2
的倒数.但是如何绘制函数的旋转体为:
This code just plots the solid of revolution of the function x = sqrt(y)
which is the inverse of y = x**2
. But how to draw the solid of revolution for a function as:
y = x**5 + x**4 + x**3 + x**2 + x
?
推荐答案
(U,V)
参数空间到(X,Y,Z)
坐标的映射可以非常灵活.通常 U
被选择为类似于 np.linspace(ll, ul, 100)
并且被认为等于 Y
(如果 y
是旋转轴).但是您不必那样使用 U
.相反,U
可以表示半径:
The mapping from (U,V)
parameter space to (X,Y,Z)
coordinates can be very flexible.Often U
is chosen to be something like np.linspace(ll, ul, 100)
and is taken to be equal to Y
(if y
is the axis of rotation). But you don't have to use U
that way.Instead U
could represent the radius:
ll, ul = 0, 1
u = np.linspace(ll, ul, 100)
v = np.linspace(0, 2*np.pi, 60)
U, V = np.meshgrid(u, v)
然后X
、Y
、Z
可以根据半径来定义,U
:
and then X
, Y
, Z
can be defined in terms of the radius, U
:
Y = U**5 + U**4 + U**3 + U**2 + U
X = U*np.cos(V)
Z = U*np.sin(V)
import numpy as np
import matplotlib.pyplot as plt
import mpl_toolkits.mplot3d.axes3d as axes3d
from matplotlib import cm
np.seterr(divide='ignore', invalid='ignore')
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ll, ul = 0, 1
u = np.linspace(ll, ul, 100)
v = np.linspace(0, 2*np.pi, 60)
U, V = np.meshgrid(u, v)
Y = U**5 + U**4 + U**3 + U**2 + U
X = U*np.cos(V)
Z = U*np.sin(V)
ax.set_xlabel('Y axis')
ax.set_ylabel('X axis')
ax.set_zlabel('Z axis')
ax.plot_surface(X, Y, Z, cmap=plt.cm.YlGnBu_r)
plt.show()
这篇关于如何绘制多项式函数绕y轴旋转的立体?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!