一个非常基本的程序,没什么看头,基本就是一大堆定理算出来,写的在里是发现CSS3出来后,算角度的需求越来越多,每次算还要用到笔纸,与是乎总结下来搞这样一个小工具,由于需求一般都是直角的,所以这里只算直角,根据两边长度求角度。
函数中的sins是拷贝的一份正弦表,我把它倒了方向写成了一个对象,没什么看头,可以看源码(一个很长的json),这里的思路是取这个正弦值最附近的一位在sins中有key的,就返回它的角度。
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]};
}