由于我不能手工绘制它,我使用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的第一部分(全部是正面的)
答案 0 :(得分:0)
您似乎希望代表不错的Viviani's curve。
使用球面坐标,旋转方程式变为
a²sin²(v)-a²cos(u)sin(v),
或
sin(v)=cos(u),
或
u+v=π/2.
因此,只需改变u
或v
中的一个就足够了,推导出另一个参数并插入球形到笛卡尔变换,以获得沿曲线所需的多个点并使用积