博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

向量的点乘和差乘

Posted on 2011-03-15 16:42  +石头+  阅读(1731)  评论(0)    收藏  举报
  1. X乘的应用:

    坦克等4个着地面的物体在经过斜坡时,上方向不再是垂直地面,否则的话将出现前两个轮子进入到斜坡里面的情况。

    我们这样处理,通过一开始的前进向量和斜坡的法线向量做差乘,计算出右方向的向量,再由右方向和斜坡法线做差成得出需要的平行斜面向上的向量:

D3DXVECTOR3 MapNormal(1, 1, 1);

    D3DXVec3Normalize(&MapNormal, &MapNormal);

    D3DXVECTOR3 Dir(3,0,1);

    D3DXVec3Normalize(&Dir, &Dir);

    D3DXVECTOR3 right;

    D3DXVec3Cross(&right, &MapNormal, &Dir);

    D3DXVec3Cross(&Dir, &right, &MapNormal);

  1. 点乘的应用,两个向量做点乘,得到向量夹角的余弦值:

D3DXVECTOR3 Dir1(100, 0, 400), Dir2(200, 0, 300);

    D3DXVec3Normalize(&Dir1, &Dir1);

    D3DXVec3Normalize(&Dir2, &Dir2);

    float cos = D3DXVec3Dot(&Dir1, &Dir2);

    D3DXVec3Cross(&Dir1, &Dir2);

    

    float a = acos(cos)*180/3.14;