有两个矩阵M1 , M2。
我现在想求M1 到 M2 之间的矩阵
应该不能用线性插值,因为矩阵可能有旋转,缩放,切变等
有什么好办法呢?

解决方案 »

  1.   


    旋转可以用矩阵描述啊。cosθ  0  sinθ   0
    0        1  0       0
    −sinθ 0  cosθ 0
    0        0  0       1这样就是了
      

  2.   


    旋转可以用矩阵描述啊。cosθ  0  sinθ   0
    0        1  0       0
    −sinθ 0  cosθ 0
    0        0  0       1这样就是了
    比如……最显而易见的问题:你怎么描述要转几圈?
      

  3.   


    旋转可以用矩阵描述啊。cosθ  0  sinθ   0
    0        1  0       0
    −sinθ 0  cosθ 0
    0        0  0       1这样就是了
    比如……最显而易见的问题:你怎么描述要转几圈?这个当然是线性的啦
      

  4.   


    旋转可以用矩阵描述啊。cosθ  0  sinθ   0
    0        1  0       0
    −sinθ 0  cosθ 0
    0        0  0       1这样就是了
    比如……最显而易见的问题:你怎么描述要转几圈?这个当然是线性的啦
    别想当然……
    我说初始状态是
    1 0 0 0
    0 1 0 0
    0 0 1 0
    0 0 0 1
    结束状态是
    -1  0  0 0
     0 -1  0 0
     0  0 -1 0
     0  0  0  1
    直接线性过度是什么效果?我告诉你我想顺时针转10圈半呢?
      

  5.   

    矩阵可能有旋转,缩放,切变等  你这考虑的太复杂以简单的物体空间两个位置的移动为例 只需考虑移动和转动,这种情况下齐次变换矩阵的第四行保持  0 0 0 1不变移动在两个坐标点之间插值, 而转动将起始位置的姿态3X3矩阵转换为四元数Quaternion和移动同步插值 slerp缩放设计第四行第四列的数字变化,也是一样处理,切边就不清楚了
      

  6.   


    我在想。其实在几何中,4x4矩阵只是描述了3条轴和原点。
    第一:先将矩阵排除了缩放,从矩阵中提取出每条轴的缩放长度,另外处理
    第二:继续使用线性插值的同时保持每条轴的长度不变
    第三:再处理缩放最后一个元素数值是整体Scale的,要处理各向变形,可能要改变模型本身更简单,比如X向放大一倍,将所有显示点的X坐标值乘以2就可以了