- 313 名前:名前は開発中のものです。 mailto:sage [2009/06/20(土) 11:05:19 ID:IrWZy+Ag.net]
- atan(というかatan2)の作り方は人それぞれだけど、
自分なりに色々作って、今のところは↓に落ち着いてる。 ATAN[i]=(180/PI)*Math.round(Math.atan((i-139)/139)); //atanの配列。i=0,1,2,…,139*2 function atan2(s1,s2,x1,x2){ dx=s1-x1; dy=dz=s2-x2; dz*=-1; //二分探索で。 if(dx>=dy){ if(dx>=dz){ theta=360;goto label1; }else{ theta=270;dy=dx;dx=dz;goto label1; } }else{ if(dx>=dz){ theta=90;dy=dx;dx=dz;goto label1; }else{ theta=180;goto label1; } } label1: atan=ATAN[dy*139/dx+139]+theta; atan%=360; } 消費ステップは最低で16、最高で19。「139」という数字に特に意味はなくて、 大きめの奇数なら何でもいい。
|

|