u011649689
天行健零
2021-06-21 18:26
采纳率: 0%
浏览 131

如何用一个向量去控制一组向量的旋转或朝向

在研究一个特殊效果,需要用一个向量去控制一组向量的旋转或朝向,

请注意:

1请关注问题本身,不要反问为什么需要这样的功能,也不要问这样的功能用来干什么

2我只想知道可不可以实现

3如果能实现,怎样实现,具体算法是什么

4多少钱可以解决

具体问题:

有归一化向量a(x,y,z),xyz取值在-1到1之间,初始值为(0,0,1)

有一组归一化向量,b、c、d、e等,方向随机

所有向量都只能获取到每个分量的值,并不能获得每个轴向的旋转值

求算法:

假如a向量沿x轴转若干度(向量自发旋转,并不能获得向量旋转的角度,但向量的数值会发生改变,可能需要根据向量的数值反推向量旋转了多少度),使得bcde等向量也沿向量a的x轴做同样旋转。

以下演示图片以旋转45度为例:(实际情况旋转角度未知)

再沿a向量y轴转若干度,bcde等向量也沿向量a的y轴做同样旋转。

以下演示图片以旋转45度为例:(实际情况旋转角度未知)

总是就是向量a怎么转,其他向量也跟着怎么转

 

注意要能处理多个轴向

 

  • 点赞
  • 收藏

3条回答 默认 最新

  • robot8me
    robot8me 2021-06-21 19:02

    可以解决,有点类似3D模型里面骨架的应用,父关节带动子关节

    点赞 评论
  • qq_34124780
    爱晚乏客游 2021-06-21 21:38

    这种题目如果你学过一点线性代数的话很好做的。
    假设一个向量a(Xa,Ya,Za)绕x轴旋转A度,变换矩阵记为Rx,
    假设一个向量b(Xb,Yb,Zb)绕y轴旋转B度,变换矩阵记为Ry,
    假设一个向量c(Xc,Yc,Zc)绕z轴旋转C度,变换矩阵记为Rz,

    那么有

    Rx=[[1,        0,            0   ],
        [0,        cos(A),    -sin(A)],
        [0,        sin(A),     cos(A)]]
    
    Ry=[[cos(B),    0,            sin(B)],
        [0,         1,                0],
        [-sin(B),   0,            cos(B)]]
    
    RZ=[[cos(C),    -sin(C),        0],
        [sin(C),      cos(C),        0],
        [0,            0,            1]]
    

    所以如果a旋转之后是b,b旋转之后是c,那么就有公式如下:

    
    Rx*a=b //(这里的*是矩阵运算),
    Ry*b=c //
    //上面两个式子合并起来就是a->c的变换矩阵
    Ry*Rx*a=c 
    
    
    而如果是
    Rz*Rx*Ry *a=c
    则a表示先绕y轴旋转,再绕x轴,最后绕z轴旋转,最后变成c

    所以你的题目只要把角度带进去就行了,再补充一个矩阵*运算的计算过程

     

    点赞 评论
  • sdhexu
    sdhexu 2021-06-23 16:50

    只要你的其他向量跟控制向量的关系是可以计算的,那就可以实现。比如相对角度不变、比如是父子关系等等。自己计算的话需要用到矩阵,unity引擎的话就比较简单,内置有各种坐标转换函数可以用。

    点赞 评论

相关推荐