确定从一个平面到另一个平面的旋转角度

时间:2014-09-03 16:03:29

标签: c++ vector 3d rotation geometry

让我们在3D空间中有2个向量v1,v2。 v1和v2属于2个不同的平面P1,P2。 v1和v2在点p(xp,yp,zp)相交 v1:p-> a和v2:p-> b其中a(xa,ya,za)和b(xb,yb,zb)分别是P1和P2中的2个已知点。 角度" theta"在P1和P2之间是已知的并且可以使用三个点p,a,b

来计算

这是我的问题: 我需要知道我应该将哪个旋转应用于v1才能与v2重合? 换一种说法: v1由起点p(xp,yp,zp)和方向(alpha,beta,gamma)定义 V1:XP,YP,ZP,α,β,γ。 v2由相同的起点p(xp,yp,zp)和方向(alpha1,beta1,gamma1)定义 V2 [XP,YP,ZP,ALPHA1,β1,迦玛] 所以应该对alpha,beta和gamma进行哪些修改以获得alpha1,beta1和gamma1

提前致谢

拉​​拉

1 个答案:

答案 0 :(得分:0)

看起来你想要找出旋转矩阵[M],以便{v2} = [M] {v1},其中{v1}和{v2}都是3x1的单位向量,[M]是3x3矩阵。您可以参考旋转矩阵here的维基百科页面。向下滚动到“#&旋转矩阵”部分,从轴和角度",它显示给定轴绕给定轴的旋转矩阵。对于您的情况,轴将是叉积矢量v1 X v2,角度将是v1和v2之间的角度,可以作为acos(v1 dot v2)获得。