---- int sqroot(int a){ //平方根計算結果の10倍の数字が出力されます int b; //例えば、100の平方根は100です。 int i; if(a==0)return 0; a = a*10000; b = a; for(i=0;i<20;i++){ b = (b + (a/b))/2; } return b/10; }
int distance(int y, int x){ int dis; dis = y*y+x*x; dis/=9; return 3*sqroot(dis); }
int atan2_get(int y, int x) { int c; int tab=0; char f1=1,f2=1; int dist; /*x,yは800を超えない*/ if(y<0)f1=-1; if(x<0)f2=-1; dist=distance(y,x); if(dist==0)return 0; c = (100000*x)/dist; if(c>=0){ while(1){ if(ARCCOSTABLE[tab]>c){ tab++; }else{ if(y<0)tab*=-1; return tab*10; } } }else{ c*=-1; while(1){ if(ARCCOSTABLE[tab]>c){ tab++; }else{ tab=314-tab; if(y<0)tab*=-1; return tab*10; } } } } ----