一个非常基本的程序,没什么看头,基本就是一大堆定理算出来,写的在里是发现CSS3出来后,算角度的需求越来越多,每次算还要用到笔纸,与是乎总结下来搞这样一个小工具,由于需求一般都是直角的,所以这里只算直角,根据两边长度求角度。

函数中的sins是拷贝的一份正弦表,我把它倒了方向写成了一个对象,没什么看头,可以看源码(一个很长的json),这里的思路是取这个正弦值最附近的一位在sins中有key的,就返回它的角度。

到这里来试一试
直角边长x: 直角边长y:
结果:
function toMath(x,y){
    var z=Math.sqrt(x*x+y*y);
    var skey=Math.floor(x/z*10000);
    if(!sins.hasOwnProperty(skey)){
      for(var i=1;i<=100;i++){
        var akey = skey - i;
        if(sins.hasOwnProperty(akey)){
          skey = akey;
          break;
        }
        var bkey = skey + i;
        if(sins.hasOwnProperty(bkey)){
          skey = bkey;
          break;
        }
      }
    }
    return {'x':x,'y':y,'z':z,'a':sins[skey],'b':90-sins[skey]};
}