KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > prefuse > util > force > GravitationalForce


1 package prefuse.util.force;
2
3 /**
4  * Represents a constant gravitational force, like the pull of gravity
5  * for an object on the Earth (F = mg). The force experienced by a
6  * given item is calculated as the product of a GravitationalConstant
7  * parameter and the mass of the item.
8  *
9  * @author <a HREF="http://jheer.org">jeffrey heer</a>
10  */

11 public class GravitationalForce extends AbstractForce {
12
13     private static final String JavaDoc[] pnames
14         = { "GravitationalConstant", "Direction" };
15     
16     public static final int GRAVITATIONAL_CONST = 0;
17     public static final int DIRECTION = 1;
18     
19     public static final float DEFAULT_FORCE_CONSTANT = 1E-4f;
20     public static final float DEFAULT_MIN_FORCE_CONSTANT = 1E-5f;
21     public static final float DEFAULT_MAX_FORCE_CONSTANT = 1E-3f;
22     
23     public static final float DEFAULT_DIRECTION = (float)-Math.PI/2;
24     public static final float DEFAULT_MIN_DIRECTION = (float)-Math.PI;
25     public static final float DEFAULT_MAX_DIRECTION = (float)Math.PI;
26     
27     /**
28      * Create a new GravitationForce.
29      * @param forceConstant the gravitational constant to use
30      * @param direction the direction in which gravity should act,
31      * in radians.
32      */

33     public GravitationalForce(float forceConstant, float direction) {
34         params = new float[] { forceConstant, direction };
35         minValues = new float[]
36             { DEFAULT_MIN_FORCE_CONSTANT, DEFAULT_MIN_DIRECTION };
37         maxValues = new float[]
38             { DEFAULT_MAX_FORCE_CONSTANT, DEFAULT_MAX_DIRECTION };
39     }
40     
41     /**
42      * Create a new GravitationalForce with default gravitational
43      * constant and direction.
44      */

45     public GravitationalForce() {
46         this(DEFAULT_FORCE_CONSTANT, DEFAULT_DIRECTION);
47     }
48     
49     /**
50      * Returns true.
51      * @see prefuse.util.force.Force#isItemForce()
52      */

53     public boolean isItemForce() {
54         return true;
55     }
56
57     /**
58      * @see prefuse.util.force.AbstractForce#getParameterNames()
59      */

60     protected String JavaDoc[] getParameterNames() {
61         return pnames;
62     }
63     
64     /**
65      * @see prefuse.util.force.Force#getForce(prefuse.util.force.ForceItem)
66      */

67     public void getForce(ForceItem item) {
68         float theta = params[DIRECTION];
69         float coeff = params[GRAVITATIONAL_CONST]*item.mass;
70         
71         item.force[0] += Math.cos(theta)*coeff;
72         item.force[1] += Math.sin(theta)*coeff;
73     }
74
75 } // end of class GravitationalForce
76
Popular Tags