程序环境为dx8.1和c++。现有一个3d模型的球体(正圆),模拟真实情况从A点(x1,y1,z1)滚动到B点(x2,y2,z2)。可以想象成现实中足球在地上的滚动。我想使用D3DXMatrixRotationAxis()这个函数来指定旋转轴的向量和旋转弧度。我现在不需要模型在空间中的位移矩阵,我只需要球体自身在B点时候相对于A点时候的旋转矩阵,请问我应该如何实现?注:已知变量只有A和B两点坐标,请各位用这6个变量代入函数。如果用其他方法实现也可以。

解决方案 »

  1.   

    滚动分离成自身旋转与平移两部分,现在主要是旋转部分。球体自身在B点时候相对于A点时候的旋转矩阵?
      ----- 应该就是在A点自身旋转为0,在B点自身旋转为d,之间的旋转量为关于时间t的线性插值。所以现在只需求出旋转轴即可 ------- A、B点坐标相减,得到垂直向量,归一化得(x,y,z),然后(-z,y,x)即为轴向量。--------------- 当然旋转变换完全是在物体自身的坐标系下进行的。------------- 我的理解就这样了。