|
|
在游戏中经常会用到三角函数值,但由于J2me不支持浮点数,所以通常是将其值放大后再进行模拟,以下给出我的算法:
/*任意角度的正弦值(扩大10000倍)*/
public long sin(int x,int path)
{
if(path==0)//级数算法
{
int goal=0;
goal=(1000*x)/6-(10*x*x*x)/(36*36);
if(x<=60)
return goal;
else if(x<=70)
return goal+x*x*x*x/155520;
else if(x<=80)
return goal+x*x*x*x/116640;
else
return goal+x*x*x*x/103680;
}
else//三角模拟算法
{
if(x==0)
return 0;
else
{
int goal=175;
for(int i=0;i {
goal=(goal*9998+sqrt(100000000-goal*goal)*175)/10000;
}
return goal;
}
}
}
/*任意整数的平方根*/
public int sqrt(long a)
{
int goal=0;
for(long i=0;i {
if((i*i)<=a&&((i+1)*(i+1))>a)
{
goal=(int)i;
break;
}
}
return goal;
}
用此算法计算了从55度到65度的正弦值.
载自:daojianxiao
|
|