blob: cfd6931c62543cbd32800f1e8448ac4eda5d38a5 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
package ihl.utils;
public class IHLMathUtils
{
private final static int accuracy_level=65536;
private static float[] sin_table=new float[accuracy_level];
private static float[] atan_table=new float[accuracy_level];
private final static float PI=(float)Math.PI;
public static float sin(float angle)
{
float angle1 = angle % (2*PI);
if(angle1<0)
{
angle1+=2*PI;
}
return sin_table[(int)(angle1*accuracy_level/2/PI)];
}
public static float atan(float tan_value)
{
if(tan_value<-32f)
{
return -1.54f;
}
else if(tan_value>32f)
{
return 1.54f;
}
else
{
return atan_table[(int)((tan_value+32f)*accuracy_level/64f)];
}
}
static
{
for(int i=0;i<accuracy_level;i++)
{
sin_table[i]=(float) Math.sin(2d*Math.PI*i/accuracy_level);
}
for(int i=0;i<accuracy_level;i++)
{
atan_table[i]=(float) Math.atan(-32d+64d*i/accuracy_level);
}
}
}
|