Graphics 如何计算从一个矢量旋转到另一个矢量所需的角度?

Graphics 如何计算从一个矢量旋转到另一个矢量所需的角度?,graphics,vector,3d,Graphics,Vector,3d,我有两个标准化向量: A 0,0,-1 B 0.559055,0.503937,0.653543 我想知道,向量在0,0,-1到0.559055,0.503937,0.653543之间,需要绕轴旋转多少圈 我该怎么计算呢?比如,旋转X轴40度,Y轴220度,这只是一个例子,但我不知道怎么做。请查看。谷歌是件好事 这将计算两个向量之间的角度。 如果向量A是ax,ay,az和 向量B是bx,by,bz,然后 它们之间的夹角cos为: (ax*bx + ay*

我有两个标准化向量: A 0,0,-1 B 0.559055,0.503937,0.653543

我想知道,向量在0,0,-1到0.559055,0.503937,0.653543之间,需要绕轴旋转多少圈

我该怎么计算呢?比如,旋转X轴40度,Y轴220度,这只是一个例子,但我不知道怎么做。

请查看。谷歌是件好事

这将计算两个向量之间的角度。 如果向量A是ax,ay,az和 向量B是bx,by,bz,然后

它们之间的夹角cos为:

                     (ax*bx + ay*by + az*bz)
    --------------------------------------------------------
    sqrt(ax*ax + ay*ay + az*az) * sqrt(bx*bx + by*by + bz*bz)
要计算投影到x-y平面上的两个向量之间的角度,只需忽略z坐标

x-y平面上的角余弦=

                (ax*bx + ay*by)
    --------------------------------------
    sqrt(ax*ax + ay*ay) * sqrt(bx*bx + by*by 
   

类似地,要计算x-z平面上两个向量投影之间的角度,请忽略y坐标。

听起来好像您正在尝试将笛卡尔坐标x、y、z转换为球坐标rho、θ、psi

因为它们都是单位向量,半径ρ等于1。这意味着您的震级也将是1,您可以跳过整个分母,只使用点积

对于第一个示例0,0,-1,在X/Y平面中围绕Z轴旋转将非常困难,因为它在X或Y方向上没有延伸。因此没有旋转

0,0,-1与1,0,0或0,1,0成90度角。如果将x轴作为θ的0角,则通过在x、Y、z和x、Y、0上应用逆cos来计算x/Y平面的φ旋转,然后可以跳过点积并使用atan2y、x获得x/Y旋转的θ


当心可能会导致问题。

这会产生一个角度。我不知道这是什么意思?我想要x,y旋转的角度,从0,0,-1到0.559055,0.503937,0.653543。我从中得到一个角度,我用它做什么?这个计算角度,你用它做什么取决于你。。。你在算什么?你想把这个角度分成两个分量吗?这并没有告诉我如何从0,0,-1到0.559055,0.503937,0.653543在三维3个角度。它大约有130度,但不是在X、Y和Z轴上旋转,而是在由两个向量构成的平面上,直接从第一个向量旋转到另一个向量。如果你想知道这将如何在离散的步骤中完成,那是一个没有明确答案的不同问题。如果你可以分多个步骤从A移动到B,你可以用很多不同的方式。是的,这就是我试图解决的问题。是否有迭代算法或某种方法来实现这一点?