blob: d5e1dc244e17e2e68ff12ecc1ab91069bfc2cb0c (
plain) (
tree)
|
|
package org.openslx.graph;
import java.awt.Color;
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;
public class Node implements java.io.Serializable
{
private static final long serialVersionUID = -6997045538537830300L;
private final String _id;
@Expose
@SerializedName( "name" )
private final String _displayName;
private double _distance = 2;
private double _x;
private double _y;
private double _fx;
private double _fy;
private int _health;
private Color _color;
protected Node( String displayName )
{
this( displayName, displayName, null );
}
protected Node( String id, String displayName, Node startPos )
{
_displayName = displayName;
_id = id;
if ( startPos == null ) {
_x = Math.random() * 2;
_y = Math.random() * 2;
} else {
_x = startPos.getX();
_y = startPos.getY();
}
_fx = 0;
_fy = 0;
_health = getMaxHealth();
setColor( Color.BLUE );
}
public void swapPos( Node other )
{
final double tx = _x, ty = _y;
_x = other._x;
_y = other._y;
other._x = tx;
other._y = ty;
}
public void setX( double x )
{
_x = x;
}
public void setY( double y )
{
_y = y;
}
public void addForceX( double fx )
{
_fx += fx;
}
public void addForceY( double fy )
{
_fy += fy;
}
public void resetForce()
{
_fx = 0;
_fy = 0;
}
public double getX()
{
return _x;
}
public double getY()
{
return _y;
}
public double getFX()
{
return _fx;
}
public double getFY()
{
return _fy;
}
public String toString()
{
return _displayName;
}
public String getId()
{
return _id;
}
public final boolean equals( Object o )
{
if ( o instanceof Node ) {
Node other = (Node)o;
return _id.equals( other._id );
}
return false;
}
public final int hashCode()
{
return _id.hashCode();
}
public final void activate()
{
_health = getMaxHealth();
}
public final boolean isAlive()
{
return _health > 0;
}
public final void age()
{
_health--;
}
public final Color getColor()
{
return _color;
}
protected final void setColor( Color color )
{
_color = color;
}
public final int getRadius()
{
return 5;
}
public int getMaxHealth()
{
return 1;
}
public final boolean wasActivated()
{
return _health == getMaxHealth();
}
public final double getDesiredDistance()
{
return _distance;
}
protected final void setDesiredDistance( double distance )
{
_distance = distance;
}
public final int getAlpha()
{
return 63 + ( _health * 192 ) / getMaxHealth();
}
}
|