com.speckled.specksim.imp.motion
Class StaticMovementModel

java.lang.Object
  extended by com.speckled.specksim.imp.motion.CacheingMovementModel
      extended by com.speckled.specksim.imp.motion.StaticMovementModel
All Implemented Interfaces:
Configurable, MovementModel

@ConfigurableType(value="Static")
public class StaticMovementModel
extends CacheingMovementModel

Models a static field of randomly placed Specks. For a given offset and Speck.id(), the same position will always be given

Author:
ryanm

Field Summary
 boolean elevAligned
          Determines whether or not specks have random roll angles
 boolean headAligned
          Determines whether or not specks have random roll angles
 boolean is2D
          Determines whether we are in 2D mode or not
 int offset
          Used to get different position sets
 boolean rollAligned
          Determines whether or not specks have random roll angles
 
Constructor Summary
StaticMovementModel()
          Builds a new StaticMovementModel
 
Method Summary
protected  SpeckPosition computeLocation(Speck speck, float time)
          Override this to compute a speck's location
 Vector3d computeVelocity(Speck speck, float time)
          Override this to compute a speck's velocity
 void deInit()
          Called when this model is replaced as the current model
 Configurator getConfigurator()
          Gets a Configurator object that describes and can manipulate the variables of this Configurable.
 double getMaxSpeed()
          Gets the maximum possible speed that any Speck can move under this movement model.
 java.lang.String getName()
          Gets the name of this model
 SerializableState getState(float time)
          Gets a state object from this model.
 void init(SpeckSim simulator)
          Called when this model is set to be the current model, or when the simulator is reset.
 void removeSpeck(Speck speck)
          Called when a speck is removed from the simulator.
 
Methods inherited from class com.speckled.specksim.imp.motion.CacheingMovementModel
clearCache, getSpeckOrientation, getSpeckVelocity
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

offset

@ConfigurableVariable(value="RNG seed offset")
@Description(value="Different offsets produce different layouts")
@Priority(value=1)
public int offset
Used to get different position sets


is2D

@ConfigurableVariable(value="2D mode")
@Description(value="2D mode constrains all specks to lie on the XY plane")
@Priority(value=2)
public boolean is2D
Determines whether we are in 2D mode or not


rollAligned

@ConfigurableVariable(value="Roll aligned")
@Description(value="Constrains all specks to have a roll angle of 0")
@Priority(value=3)
public boolean rollAligned
Determines whether or not specks have random roll angles


elevAligned

@ConfigurableVariable(value="Elevation aligned")
@Description(value="Constrains all specks to have an elevation angle of 0")
@Priority(value=4)
public boolean elevAligned
Determines whether or not specks have random roll angles


headAligned

@ConfigurableVariable(value="Heading aligned")
@Description(value="Constrains all specks to have a heading angle of 0")
@Priority(value=5)
public boolean headAligned
Determines whether or not specks have random roll angles

Constructor Detail

StaticMovementModel

public StaticMovementModel()
Builds a new StaticMovementModel

Method Detail

init

public void init(SpeckSim simulator)
Description copied from interface: MovementModel
Called when this model is set to be the current model, or when the simulator is reset. As such, this method must clear any old state as well as set up the new state

Parameters:
simulator - The simulator that this model is current in.

deInit

public void deInit()
Description copied from interface: MovementModel
Called when this model is replaced as the current model


removeSpeck

public void removeSpeck(Speck speck)
Description copied from interface: MovementModel
Called when a speck is removed from the simulator. Could be useful if the model maintain any state for each speck.


computeLocation

protected SpeckPosition computeLocation(Speck speck,
                                        float time)
Description copied from class: CacheingMovementModel
Override this to compute a speck's location

Specified by:
computeLocation in class CacheingMovementModel
Parameters:
speck - The speck to locate
time - The time to locate at
Returns:
The location of the speck at the given time

computeVelocity

public Vector3d computeVelocity(Speck speck,
                                float time)
Description copied from class: CacheingMovementModel
Override this to compute a speck's velocity

Specified by:
computeVelocity in class CacheingMovementModel
Parameters:
speck - The speck to compute for
time - The time to compute at
Returns:
The velocity of the speck at the given time

getMaxSpeed

public double getMaxSpeed()
Description copied from interface: MovementModel
Gets the maximum possible speed that any Speck can move under this movement model. Enables some performance optimisations when looking for broadcast recipients. If we cannot define a maximum speed, we should return -1. Also, if you cannot guarantee that specks will not leave the unit cube,-1 should be returned

Returns:
The maximum possible speed of any speck, in units per second, or -1 if we cannot define a max speed, or if specks may possibly leave the unit cube

getName

public java.lang.String getName()
Description copied from interface: MovementModel
Gets the name of this model

Returns:
A String name for this model

getState

public SerializableState getState(float time)
Description copied from interface: MovementModel
Gets a state object from this model. This will be placed in the SimulatorState object that is passed to the GUI, consequently, this is useful for providing some data to be visualised. For instance, SpeckledBodyModels use it to pass the vertices of their bodies for visualisation. Feel free to pass null if you want to. This implementation of this method should not assume that the init() method has been called, so return an empty instance of the state object if this is the case

Parameters:
time - The time at which the state should be captured
Returns:
The interesting state of the movement model, or null if no state is needed

getConfigurator

public Configurator getConfigurator()
Description copied from interface: Configurable
Gets a Configurator object that describes and can manipulate the variables of this Configurable. This method must only return null if the Configurable object is Annotated such that an AnnotatedConfigurator can be built from it.

Returns:
A configurator object, or null if annotated