summaryrefslogtreecommitdiff
path: root/ihl/utils/IHLMathUtils.java
diff options
context:
space:
mode:
authorFoghrye4 <foghrye4@gmail.com>2016-04-11 19:44:54 +0300
committerFoghrye4 <foghrye4@gmail.com>2016-04-11 19:44:54 +0300
commit05c78126859231a68e199dc34613689bd0978e2f (patch)
tree050bea104a18c72905095d29f31bec2935a27a24 /ihl/utils/IHLMathUtils.java
Initial commit
Diffstat (limited to 'ihl/utils/IHLMathUtils.java')
-rw-r--r--ihl/utils/IHLMathUtils.java48
1 files changed, 48 insertions, 0 deletions
diff --git a/ihl/utils/IHLMathUtils.java b/ihl/utils/IHLMathUtils.java
new file mode 100644
index 0000000..cfd6931
--- /dev/null
+++ b/ihl/utils/IHLMathUtils.java
@@ -0,0 +1,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);
+ }
+ }
+}