如何在Python中得到整个3d线性函数的长度?

2024-05-11 13:15:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我创建了一个弹簧形式的对数螺线图。我使用以下参数方程:

x=a*exp(b*th)*cos(th)
y=a*exp(b*th)*sin(th)

这是我的代码:

^{pr2}$

这样可以得到以下输出:

graph of a logarithmic spiral in the form of a spring

我能得到整个螺旋的长度吗?有没有可能在图上标记一个点的位置,它在距离(例如,5)内,从图的开始点(x,y)=(0,0)开始,并拉出这些坐标吗?如有任何提示,我将不胜感激。在


Tags: 代码标记距离参数对数sincos形式
1条回答
网友
1楼 · 发布于 2024-05-11 13:15:28

毕达哥拉斯在三维空间中也同样有效。任何线段si的长度为

si = sqrt(xi**2+yi**2+zi**2)

因此

^{pr2}$

这条线的长度是451。
注意,直线在z方向的延伸比在x和y方向上要小得多,所以我们不妨完全省略z,这样做的错误是0.025或{}。在

另一个目标是在直线上找到一个长度为l=5的点。当然,由于我们使用数字数据,我们找不到长度正好为5个单位的点,而是长度小于5个单位但最接近它的点。我们可以计算出发生的指数

l = 5 # length to find coordinate of
cumlenth = np.cumsum(diffs)
s = np.abs(np.diff(np.sign(cumlenth-l))).astype(bool)
c = np.argwhere(s)[0][0]

然后在原始数组中找到该索引。在

print c   # index of coordinate, here 192
print x[c], y[c], z[c] # 0.144750230412 -1.56183108038 0.384384384384

我们可以用散点来标记这个点

ax.scatter([x[c]], [y[c]], [z[c]], color="crimson")

enter image description here

相关问题 更多 >