【发布时间】:2018-02-01 19:17:14
【问题描述】:
我创建了一个弹簧形式的对数螺旋图。我正在使用以下参数方程:
x=a*exp(b*th)*cos(th)
y=a*exp(b*th)*sin(th)
这是我的代码:
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['legend.fontsize'] = 10
fig = plt.figure(figsize=(10,10))
ax = fig.gca(projection='3d')
a=0.6
b=0.2
th=np.linspace(0, 25, 1000)
x=a*np.exp(b*th)*np.cos(th)
y=a*np.exp(b*th)*np.sin(th)
z = np.linspace(0, 2, len(th))
ax.plot(x, y, z)
ax.plot(x, y, zdir='z', zs=0)
ax.plot(x, z, zdir='y', zs=100)
ax.set_xlim([-100, 100])
ax.set_ylim([-100, 100])
ax.set_zlim([-0, 2.5])
plt.show()
这给了我以下输出:
我能得到整个螺旋的长度吗?是否可以在图形上标记一个点的位置,该点位于距离(例如5),从图形的开头点(x,y)=(0,0)开始,并拉出这些坐标?如有任何提示,我将不胜感激。
【问题讨论】:
-
是的,尽管以编程方式进行会很困难。相反,请尝试使用线积分的解析解。
-
我谦虚地希望我能以某种方式自动执行此操作,因为我想经常更改图表的初始条件。
-
在这种情况下,我认为您可能必须以小步长近似线积分,以小间隔找到功能点并保持距离的总和。
标签: python math matplotlib spiral