va是一个向量,vb也是一个向量,在二维空间里,两个向量表示为:
va={va1, va2} vb={vb1, vb2}, 其中va1, vb1为x分量, va2,vb2为y分量
下面这段代码开始很明白
cc   = va1 * vb2 - va2 * vb1;   //Cross product计算叉积
maga = sqrt(va1*va1 + va2*va2); //计算va的长度
na1 = va1 / maga;             //单位化x分量
na2 = va2 / maga;             //单位化y分量
bb  = vb1 * na1 + vb2 * na2;    //Dot product计算点积,也就是vb向量在va上的投影了
dthet = atan2(abs(cc),bb^2); //这句话卡住了,不知道是在算什么,atan2(a,b)函数的说明是计算arctan(a/b),如果b=0.0,程序会处理分母为0的情况,那也就是算叉积绝对值除以投影的平方了?什么意思呢?不知道有谁有相关方面的几何或者物理的背景知识啊,
不知道问题讲清楚了没有,谢谢!

解决方案 »

  1.   

    又在这里提问了,楼主应该在这里引用在别的栏目的网址
    这样可以把大家的讨论集中起来,不至于各自为政。
    同样的问题的类似讨论,还在下面的两个帖子当中:
    http://community.csdn.net/Expert/topic/3969/3969010.xml?temp=.3691522
    http://community.csdn.net/Expert/topic/3969/3969004.xml?temp=.1492273
      

  2.   

    cc = va1 * vb2 - va2 * vb1; //Cross product计算叉积应该是公式有问题。
      

  3.   

    不是计算两矢量夹角,两矢量夹角应该是
    atan2(bb,sqrt(va1*va1 + va2*va2)*sqrt(vb1*vb1 + vb2*vb2));下式应该是正确的:
    cc = va1 * vb2 - va2 * vb1; //Cross product计算叉积
      

  4.   

    cc = va1 * vb2 - va2 * vb1; //Cross product计算叉积
      

  5.   

    dthet = atan2(abs(cc), bb*bb)
     = atan2(abs(va1 * vb2 - va2 * vb1), (vb1 * na1 + vb2 * na2) * (vb1 * na1 + vb2 * na2))
      

  6.   

    atan2(abs(x1 * y2 - x2 * y1), (x2 * x1 / v + y2 * x2 / v) ^ 2);
    打了半天草稿也没看出来
    一会儿拿笔画画
      

  7.   

    楼主问题当中atan2的参数展开是
           |va||vb| sin Cita
    ---------------------------------
       |vb||vb| cos Cita * cosCitacita就是两个向量之间的夹角,看不出来物理意义何在