View Javadoc

1   package com.insanityengine.ghia.m3;
2   
3   /***
4    *
5    * <P>
6    * Goofy math lookup gag
7    * </P>
8    *
9    * @author BrianHammond
10   *
11   * $Header: /usr/local/cvsroot/ghia/src/java/com/insanityengine/ghia/m3/MumpMath.java,v 1.5 2005/03/19 17:50:02 brian Exp $
12   *
13   */
14  
15  public class MumpMath {
16  	static int size = 1024 * 4;
17  
18  	static float cos[] = null;
19  	static float sin[] = null;
20  
21  	final static float PI  = ( float ) ( 22.0 / 7.0 );
22  	final static float PI2 = ( float ) ( 44.0 / 7.0 );
23  
24  	static float cos( float a ) {	
25  		if ( null == cos ) init();
26  
27  		while ( a >= PI2 ) a -= PI2;
28  		while ( a < 0 ) a += PI2;
29  		
30  		if ( !false ) {
31  			int i = ( int ) ( ( size - 1 ) * ( a / PI2 ) );
32  			if ( i < 0 || i >= size ) {
33  				System.out.println( "ack " + i + " with " + a + " v. " + PI2 );
34  			}
35  		}
36  		
37  		return cos[ ( int ) ( ( size - 1 ) * ( a / PI2 ) ) ];
38  	}
39  
40  	static float sin( float a ) {	
41  		if ( null == sin ) init();
42  
43  		while ( a >= PI2 ) a -= PI2;
44  		while ( a < 0 ) a += PI2;
45  		return sin[ ( int ) ( size * ( a / PI2 ) ) ];
46  	}
47  
48  	synchronized static void init() {
49  		cos = new float[ size ];
50  		sin = new float[ size ];
51  
52  		for ( int i = 0 ; i < size ; i++ ) {
53  			cos[ i ] = ( float ) Math.cos( PI2 * i / ( float ) size );
54  			sin[ i ] = ( float ) Math.sin( PI2 * i / ( float ) size );
55  		}
56  	}
57  };
58  
59  /***
60   *
61   * $Log: MumpMath.java,v $
62   * Revision 1.5  2005/03/19 17:50:02  brian
63   * repackaging
64   *
65   * Revision 1.4  2005/02/17 03:31:13  brian
66   * good stuff???
67   *
68   * Revision 1.3  2004/09/01 01:10:42  brian
69   * fix class level javadoc placement
70   *
71   * Revision 1.2  2004/09/01 00:11:06  brian
72   * author, log and header stuff
73   *
74   *
75   */