gpt4 book ai didi

python - 在 Python 3(也许是 matplotlib)中绘制革命实体

转载 作者:太空狗 更新时间:2023-10-30 02:42:26 30 4
gpt4 key购买 nike

问候问题:

R 是 xy 平面中由抛物线 y=x^2+1 和线 y=x+3 界定的区域。通过绕 x 轴旋转 R 形成旋转体。我需要在 2D 和 solid revolution 3D 中绘制抛物线和直线,怎么做?我已经安装了 anaconda。

最佳答案

你可以使用 plot_surface :

import numpy as np
import matplotlib.pyplot as plt
import mpl_toolkits.mplot3d.axes3d as axes3d

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

u = np.linspace(-1, 2, 60)
v = np.linspace(0, 2*np.pi, 60)
U, V = np.meshgrid(u, v)

X = U
Y1 = (U**2 + 1)*np.cos(V)
Z1 = (U**2 + 1)*np.sin(V)

Y2 = (U + 3)*np.cos(V)
Z2 = (U + 3)*np.sin(V)

ax.plot_surface(X, Y1, Z1, alpha=0.3, color='red', rstride=6, cstride=12)
ax.plot_surface(X, Y2, Z2, alpha=0.3, color='blue', rstride=6, cstride=12)
plt.show()

enter image description here

使用 plot_surface 绘制曲面您首先确定两个一维参数,uv :

u = np.linspace(-1, 2, 60)
v = np.linspace(0, 2*np.pi, 60)

这样x , y , z是参数 u 的函数和 v :

x = x(u, v)
y = y(u, v)
z = z(u, v)

关于ax.plot_surface的注意事项是它的前三个参数必须是二维数组。所以我们使用 np.meshgrid从坐标向量(UV)创建坐标矩阵(uv),并定义二维数组 X , Y , Z成为U的功能和 V :

X = U
Y1 = (U**2 + 1)*np.cos(V)
Z1 = (U**2 + 1)*np.sin(V)

对于坐标矩阵上的每个位置 UV , X 有对应的值和 YZ .这从二维 uv 创建了一个 map -空间到 3 维 xyz -空间。对于 uv 中的每个矩形-空间xyz我们的表面上有一张脸-空间。 plot_surface绘制的曲面由这些平面组成。

关于python - 在 Python 3(也许是 matplotlib)中绘制革命实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36464982/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com