圆筒"切割" python中的一个球体

时间:2015-05-09 07:58:38

标签: python matplotlib geometry

由于我不能手工绘制它,我使用python / matplotlib绘制一个球体和一个圆柱体而不是#34;切割"并制作一条曲线。 圆柱体有等式

  

的x ^ 2 + Y ^ 2-A * X = 0

球体用以下公式完成:

  

的x ^ 2 + Y ^ 2 + Z ^ 2 = A ^ 2

我输入a并用

绘制球体
# -*- coding: utf-8 -*-
from numpy import*
import matplotlib.pyplot as plt
from matplotlib import cm
from mpl_toolkits.mplot3d import Axes3D
fig=plt.figure()
ax=Axes3D(fig)
a=input('a? ')
u,v=mgrid[0:2*pi:20j,0:pi/2:10j]
x=a*cos(u)*sin(v)
y=a*sin(u)*sin(v)
z=a*cos(v)
ax.plot_wireframe(x,y,z,color='b')
ax.set_xlabel("x"); ax.set_ylabel("y"); ax.set_zlabel("z")
plt.show()
plt.close()

现在我想要绘制圆柱体,如果能够的话,绘制两个数字相交的曲线......但不知道......

我想我忘了说这是xyz coordenates的第一部分(全部是正面的)

1 个答案:

答案 0 :(得分:0)

您似乎希望代表不错的Viviani's curve

使用球面坐标,旋转方程式变为

a²sin²(v)-a²cos(u)sin(v),

sin(v)=cos(u),

u+v=π/2.

因此,只需改变uv中的一个就足够了,推导出另一个参数并插入球形到笛卡尔变换,以获得沿曲线所需的多个点并使用