空间三维向量的旋转角度问题?

feigleund feigleund 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
本人遇到一个问题,关于空间三维向量旋转角度问题, a(x1,y1,z1) 旋转到b(x2,y2,z2)怎样来确定他们的角度?
angle = arccos(dot(n1,n2))
由此得到的夹角值的范围是[0,PI]之间,由于我现在处理的是向量,它们之间的夹角的实际值域应该在[0,2PI]之间,请问如何计算得到两个向量的夹角在[0,2PI]之间?
别人提供的办法不合适
******************************************************
补充说明一下,在本人的blog当中的算法公式是:

theta = atan2 ( (a×b) *N, a*b )
这里面,N是a,b所在平面的单位法向量(这个方向也许和a×b相同,也许相反的)
也就是把a旋转theta到达b方向时候的转轴

当a和b是任意的空间向量,而N是未知的时候,一般取a×b作为旋转轴
那么这个时候,不需要上面的公式,只需要计算
theta = acos(a*b/|a|/|b|)
结果是0到Pi
而事实上,按照a×b作为转轴旋转的时候,角度只会是0到Pi之间的
×××××××××××××××××××××××××××××××××××××××××××××××××××××
定义:平面上的三点P1(x1,y1),P2(x2,y2),P3(x3,y3)的面积量:
|x1 x2 x3|
S(P1,P2,P3) = |y1 y2 y3| = (x1-x3)*(y2-y3) - (y1-y3)(x2-x3)
|1 1 1|
当P1P2P3逆时针时S为正的,当P1P2P3顺时针时S为负的。

所以你只要算S(N2,0,N1)的值,
如果大于或等于0,angle = arccos(dot(n1,n2)),
小于0,则angle = 2PI - arccos(dot(n1,n2))
××××××××××××××××××××××××××××××××××××××××××××××××××××××
请问有没有啥好办法?谢谢指教


...全文

相关推荐

评论 5
收藏 已收藏
分享
返回顶部
feigleund
图形处理/算法 19,463 成员 50,678 内容