zgldh

Program就是魔法

2011-11-10 16:38

[JS函数]已知平面矢量,求该矢量角度值

javascript代码:

 


  //得到矢量的角度值,从x0,y0指向x1,y1。
  //迪卡尔坐标系
  //author: zgldh
  //date: 2011-11-10
  //返回值:0~360
  function getAngleDegree(x0,y0,x1,y1)
  {
   var dX = x1 - x0;
   var dY = y1 - y0;
   var r = Math.sqrt(dX*dX + dY*dY);
   var sin = dY / r;
   var cos = dX / r;
   
   var rawArcSin = Math.asin(sin);
   var rawArcCos = Math.acos(cos);
   
   //角度值
   var theta = 0;
   
   if(cos>=0)
   {
    if(sin>=0)
    {
     theta = rawArcSin;
    }
    else
    {
     theta = 2*Math.PI + rawArcSin;
    }
   }
   else
   {
    if(sin>=0)
    {
     theta = rawArcCos;
    }
    else
    {
     theta = Math.PI - rawArcSin;
    }
   }
   
   theta = 360* theta / (2*Math.PI)
   return theta;
  }  

 

实际应用中常用

嫌代码乱的复制到IDE里面自动格式化一下。

评论