/*
Copyright 2006 by Sean Luke and George Mason University
Licensed under the Academic Free License version 3.0
See the file "LICENSE" for more information
*/
package sim.app.networktest;
import sim.field.continuous.*;
import sim.field.network.*;
import sim.engine.*;
import sim.util.*;
public /*strictfp*/ class NetworkTest extends SimState
{
private static final long serialVersionUID = 1;
public static final double XMIN = 0;
public static final double XMAX = 800;
public static final double YMIN = 0;
public static final double YMAX = 600;
public static final double DIAMETER = 8;
public Continuous2D environment = null;
public Network network = null;
/** Creates a NetworkTest simulation with the given random number seed. */
public NetworkTest(long seed)
{
super(seed);
}
boolean acceptablePosition( final CustomNode node, final Double2D location )
{
if( location.x < DIAMETER/2 || location.x > (XMAX-XMIN)-DIAMETER/2 ||
location.y < DIAMETER/2 || location.y > (YMAX-YMIN)-DIAMETER/2 )
return false;
return true;
}
CustomNode makeNode(String name)
{
CustomNode node = new CustomNode(name);
environment.setObjectLocation(node, new Double2D(
random.nextDouble()*(XMAX-XMIN-DIAMETER)+XMIN+DIAMETER/2,
random.nextDouble()*(YMAX-YMIN-DIAMETER)+YMIN+DIAMETER/2 ) );
network.addNode(node);
schedule.scheduleRepeating(node);
return node;
}
public void start()
{
super.start(); // clear out the schedule
environment = new Continuous2D(16.0, (XMAX-XMIN), (YMAX-YMIN) );
network = new Network();
CustomNode nodes[] = new CustomNode[6];
nodes[0] = makeNode( "node0");
nodes[1] = makeNode( "node1");
nodes[2] = makeNode( "node2");
nodes[3] = makeNode( "node3");
nodes[4] = makeNode( "node4");
nodes[5] = makeNode( "node5");
network.addEdge( nodes[0], nodes[1], "0-1" );
network.addEdge( nodes[1], nodes[2], "1-2" );
network.addEdge( nodes[2], nodes[3], "2-3" );
network.addEdge( nodes[3], nodes[4], "3-4" );
network.addEdge( nodes[4], nodes[0], "4-0" );
network.addEdge( nodes[0], nodes[5], "0-5" );
network.addEdge( nodes[1], nodes[5], "1-5" );
network.addEdge( nodes[2], nodes[5], "2-5" );
network.addEdge( nodes[3], nodes[5], "3-5" );
network.addEdge( nodes[4], nodes[5], "4-5" );
}
public static void main(String[] args)
{
doLoop(NetworkTest.class, args);
System.exit(0);
}
}