Staging
v0.5.0
v0.5.0
https://repo1.maven.org/maven2/org/prefuse/prefuse
ForceItem.java
package prefuse.util.force;
/**
* Represents a point particle in a force simulation, maintaining values for
* mass, forces, velocity, and position.
*
* @author <a href="http://jheer.org">jeffrey heer</a>
*/
public class ForceItem implements Cloneable {
/**
* Create a new ForceItem.
*/
public ForceItem() {
mass = 1.0f;
force = new float[] { 0.f, 0.f };
velocity = new float[] { 0.f, 0.f };
location = new float[] { 0.f, 0.f };
plocation = new float[] { 0.f, 0.f };
k = new float[4][2];
l = new float[4][2];
}
/**
* Clone a ForceItem.
* @see java.lang.Object#clone()
*/
public Object clone() {
ForceItem item = new ForceItem();
item.mass = this.mass;
System.arraycopy(force,0,item.force,0,2);
System.arraycopy(velocity,0,item.velocity,0,2);
System.arraycopy(location,0,item.location,0,2);
System.arraycopy(plocation,0,item.plocation,0,2);
for ( int i=0; i<k.length; ++i ) {
System.arraycopy(k[i],0,item.k[i],0,2);
System.arraycopy(l[i],0,item.l[i],0,2);
}
return item;
}
/** The mass value of this ForceItem. */
public float mass;
/** The values of the forces acting on this ForceItem. */
public float[] force;
/** The velocity values of this ForceItem. */
public float[] velocity;
/** The location values of this ForceItem. */
public float[] location;
/** The previous location values of this ForceItem. */
public float[] plocation;
/** Temporary variables for Runge-Kutta integration */
public float[][] k;
/** Temporary variables for Runge-Kutta integration */
public float[][] l;
/**
* Checks a ForceItem to make sure its values are all valid numbers
* (i.e., not NaNs).
* @param item the item to check
* @return true if all the values are valid, false otherwise
*/
public static final boolean isValid(ForceItem item) {
return
!( Float.isNaN(item.location[0]) || Float.isNaN(item.location[1]) ||
Float.isNaN(item.plocation[0]) || Float.isNaN(item.plocation[1]) ||
Float.isNaN(item.velocity[0]) || Float.isNaN(item.velocity[1]) ||
Float.isNaN(item.force[0]) || Float.isNaN(item.force[1]) );
}
} // end of class ForceItem