Staging
v0.5.0
v0.5.0
https://repo1.maven.org/maven2/org/prefuse/prefuse
GravitationalForce.java
package prefuse.util.force;
/**
* Represents a constant gravitational force, like the pull of gravity
* for an object on the Earth (F = mg). The force experienced by a
* given item is calculated as the product of a GravitationalConstant
* parameter and the mass of the item.
*
* @author <a href="http://jheer.org">jeffrey heer</a>
*/
public class GravitationalForce extends AbstractForce {
private static final String[] pnames
= { "GravitationalConstant", "Direction" };
public static final int GRAVITATIONAL_CONST = 0;
public static final int DIRECTION = 1;
public static final float DEFAULT_FORCE_CONSTANT = 1E-4f;
public static final float DEFAULT_MIN_FORCE_CONSTANT = 1E-5f;
public static final float DEFAULT_MAX_FORCE_CONSTANT = 1E-3f;
public static final float DEFAULT_DIRECTION = (float)-Math.PI/2;
public static final float DEFAULT_MIN_DIRECTION = (float)-Math.PI;
public static final float DEFAULT_MAX_DIRECTION = (float)Math.PI;
/**
* Create a new GravitationForce.
* @param forceConstant the gravitational constant to use
* @param direction the direction in which gravity should act,
* in radians.
*/
public GravitationalForce(float forceConstant, float direction) {
params = new float[] { forceConstant, direction };
minValues = new float[]
{ DEFAULT_MIN_FORCE_CONSTANT, DEFAULT_MIN_DIRECTION };
maxValues = new float[]
{ DEFAULT_MAX_FORCE_CONSTANT, DEFAULT_MAX_DIRECTION };
}
/**
* Create a new GravitationalForce with default gravitational
* constant and direction.
*/
public GravitationalForce() {
this(DEFAULT_FORCE_CONSTANT, DEFAULT_DIRECTION);
}
/**
* Returns true.
* @see prefuse.util.force.Force#isItemForce()
*/
public boolean isItemForce() {
return true;
}
/**
* @see prefuse.util.force.AbstractForce#getParameterNames()
*/
protected String[] getParameterNames() {
return pnames;
}
/**
* @see prefuse.util.force.Force#getForce(prefuse.util.force.ForceItem)
*/
public void getForce(ForceItem item) {
float theta = params[DIRECTION];
float coeff = params[GRAVITATIONAL_CONST]*item.mass;
item.force[0] += Math.cos(theta)*coeff;
item.force[1] += Math.sin(theta)*coeff;
}
} // end of class GravitationalForce