首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何计算3D中倾斜的向量的上升?

如何计算3D中倾斜的向量的上升?
EN

Stack Overflow用户
提问于 2018-02-23 22:17:01
回答 1查看 81关注 0票数 0

我有一个数据,它显示了3D空间中矢量的起点和终点坐标,这些矢量的方向是围绕3折螺旋轴:

代码语言:javascript
复制
            x          y           z
0   38.522003   5.600998  129.203995  # start of v1
1   23.854996  66.576996  112.487000  # end of v1
2    4.417000  40.182999  121.309998  # start of v2
3   65.761993  27.550995  104.285004  # end of v2
4   50.272003  56.473999  112.857010  #...
5   12.574997   6.202995   96.598007
6   45.192993   8.042999  105.147995
7   15.934998  63.490005   88.347992
8    3.613998  33.112991   97.102997
9   66.244003  35.949997   80.309006
10  44.052994  59.996002   89.057999
11  19.916000   2.125000   72.294998
12  51.201996  11.974998   81.044998
13   9.035995  58.367996   64.238998
14   4.529999  25.854996   72.759003
15  64.563004  44.283997   56.357998
16  37.153000  62.003998   65.026001
17  28.061996   0.000000   48.126995

它看起来像这样:

代码语言:javascript
复制
for i in range(xyz_coords.shape[0]):
    if i == 0:
        ax.plot(xyz_coords['x'].loc[0:1], xyz_coords['y'].loc[0:1], xyz_coords['z'].loc[0:1])
    elif i%2 == 0 and i!=0:
        ax.plot(xyz_coords['x'].loc[i:i+1], xyz_coords['y'].loc[i:i+1], xyz_coords['z'].loc[i:i+1])

我想计算下一个向量的起始点和结束点之间的上升和夹角,对于每个vn和vn+1,这些值应该是相似的。问题是向量的移位与z轴不平行-否则确定上升将是非常简单的任务。v1(start)和v2(start)之间的距离就是它们之间的距离。加载上面给出的数据作为pandas DataFrame,v1和v2起始点之间的距离:

代码语言:javascript
复制
d = np.sqrt((xyz_coords['x'][0] - xyz_coords['x'][2])**2 + (xyz_coords['y'][0] - xyz_coords['y'][2])**2 + (xyz_coords['z'][0] - xyz_coords['z'][2])**2)

您可能还注意到,z差为~8.95,但如前所述,z差不是正确的上升值,因为受倾斜度的影响。如果我知道如何确定倾斜角,我将能够通过使用z_prop = sin(tilt_angle) * d来计算上升。有什么简单的方法可以纠正倾斜并获得合适的z值吗?

EN

回答 1

Stack Overflow用户

发布于 2018-02-24 09:50:39

我不认为这个问题有任何简单的解决方案。在我看来,你必须建立一个由6个非线性方程组成的系统来求解3个旋转角度和3个平移量,假设你的向量经历了刚体旋转和平移来给出下一个向量的位置。我们可以用scipy.optimize.fsolve来求解这个非线性系统。一旦你得到了旋转角度,你就可以找到相对于z轴的倾斜度。但是代码并不简单,因此我不能在这里把它全部写出来。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48949864

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档