关于向量积和叉积的解释

老是爱弄混淆,然后今天就整理下发在博客上

设两个向量P(Xp,Yp,Zp)  Q(Xq,Yq,Zq)

 

标量集 ( dot   product)

P*Q = XpXq + YpYq + ZpZq = |P||Q|cos⊙    ⊙为向量的夹角

 

一般来说,标量集是判断两个向量夹角是否为90度以上的一个重要的值。只有当夹角为0到90度和270度到360度的时候才为正值。

 

然后贴出标量集的D3D函数

在MSDN中我查到它的原型如下:

[cpp] view plain copy print ?
  1. FLOAT D3DXVec3Dot(  
  2.  _In_  const D3DXVECTOR3 *pV1,  
  3.  _In_  const D3DXVECTOR3 *pV2  
  4. );  

 

举一个实例吧:

[cpp] view plain copy print ?
  1. pMatrix->_42 =-D3DXVec3Dot(&m_vUpVector, &m_vCameraPosition);       // -P*U  


 

 

 

向量集(也叫叉积)(cross product)

 

P X Y = (PyQz - PzQy ,PzQx - PxQz , PxQy - PyQx)

叉积运算的最大特点是运算结果为两个向量相交的向量值,两个向量进行向量积运算可以求得两个向量P,Q所形成的面的法线向量。

 

贴出向量积的D3D函数

在MSDN中我们查到它原型如下:

[cpp] view plain copy print ?
  1. D3DXVECTOR3* D3DXVec3Cross(  
  2.  _Inout_  D3DXVECTOR3 *pOut,  
  3.  _In_     const D3DXVECTOR3 *pV1,  
  4.  _In_     const D3DXVECTOR3 *pV2  
  5. );  

第一个参数依然是计算的结果。第二和第三两个参数当然就是填参加叉乘运算的两个向量了。

另外需要注意,D3DXVec3Cross函数的返回值和第一个参数pOut 参数是一样的,为指向D3DXVECTOR3 结构的两个向量叉乘结果。

依然是一个实例:

[cpp] view plain copy print ?
  1. D3DXVec3Cross(&m_vRightVector, &m_vUpVector,&m_vLookVector);    // 右向量与上向量垂直  
 

你可能感兴趣的:(关于向量积和叉积的解释)