摘要:二次曲面中绘制三维图需要将坐标系声明为。
python中绘制三维图需要将坐标系声明为3d
。
球面方程为
x 2 + y 2 + z 2 = R 2 x^2+y^2+z^2=R^2 x2+y2+z2=R2
写为极坐标形式为
x = R sin θ cos φ y = R sin θ sin φ z = R cos θ /begin{aligned} x&=R/sin/theta/cos/varphi// y&=R/sin/theta/sin/varphi// z&=R/cos/theta/end{aligned} xyz=Rsinθcosφ=Rsinθsinφ=Rcosθ
令 R = 1 R=1 R=1,则画图为
代码如下
>>> import matplotlib.pyplot as plt>>> import numpy as np>>> theta = np.arange(0,6.4,0.1).reshape(64,1)>>> phi = np.arange(0,3.2,0.1).reshape(1,32)>>> x = np.sin(theta)*np.cos(phi)>>> y = np.sin(theta)*np.sin(phi)>>> z = np.cos(theta)>>> ax = plt.gca(projection="3d")>>> ax.plot_surface(x,y,z)<mpl_toolkits.mplot3d.art3d.Poly3DCollection object at 0x000001CECF13A730>>>> plt.show()
二次曲面共有九种,代码均与椭球曲面类似,为了加强立体感,可在画图的时候设置颜色映射,下列各图部分用到
from matplotlib import cm#...ax.plot_surface(x,y,z,cmap=cm.coolwarm)
a,b,c均为1时的曲面 | |
---|---|
椭圆锥面 x 2 a 2 + y 2 b 2 − z 2 c 2 = 0 /frac{x^2}{a^2}+/frac{y^2}{b^2}-/frac{z^2}{c^2}=0 a2x2+b2y2−c2z2=0 | |
椭球面 x 2 a 2 + y 2 b 2 + z 2 c 2 = 1 /frac{x^2}{a^2}+/frac{y^2}{b^2}+/frac{z^2}{c^2}=1 a2x2+b2y2+c2z2=1 | |
单叶双曲面 x 2 a 2 + y 2 b 2 − z 2 c 2 = 1 /frac{x^2}{a^2}+/frac{y^2}{b^2}-/frac{z^2}{c^2}=1 a2x2+b2y2−c2z2=1 | |
双叶双曲面 x 2 a 2 + y 2 b 2 − z 2 c 2 = − 1 /frac{x^2}{a^2}+/frac{y^2}{b^2}-/frac{z^2}{c^2}=-1 a2x2+b2y2−c2z2=−1 | |
椭圆抛物面 z = x 2 a 2 + y 2 b 2 z=/frac{x^2}{a^2}+/frac{y^2}{b^2} z=a2x2+b2y2 | |
双曲抛物面 z = x 2 a 2 − y 2 b 2 z=/frac{x^2}{a^2}-/frac{y^2}{b^2} z=a2x2−b2y2 | |
椭圆柱面 x 2 a 2 + y 2 b 2 = 1 /frac{x^2}{a^2}+/frac{y^2}{b^2}=1 a2x2+b2y2=1 | |
双曲柱面 x 2 a 2 − y 2 b 2 = 1 /frac{x^2}{a^2}-/frac{y^2}{b^2}=1 a2x2−b2 文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。 转载请注明本文地址:https://www.ucloud.cn/yun/122207.html 相关文章
发表评论0条评论CoderDock男|高级讲师TA的文章阅读更多
阅读需要支付1元查看
|