Commit 0c80da45 authored by Björn Richerzhagen's avatar Björn Richerzhagen
Browse files

Removed deprecated `Position`-Interface

parent db566de9
...@@ -9,12 +9,12 @@ import java.io.UnsupportedEncodingException; ...@@ -9,12 +9,12 @@ import java.io.UnsupportedEncodingException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Random; import java.util.Random;
import de.tud.kom.p2psim.api.common.Position;
import de.tud.kom.p2psim.api.common.SimHost; import de.tud.kom.p2psim.api.common.SimHost;
import de.tud.kom.p2psim.impl.network.modular.db.NetMeasurementDB; import de.tud.kom.p2psim.impl.network.modular.db.NetMeasurementDB;
import de.tud.kom.p2psim.impl.network.modular.st.PositioningStrategy; import de.tud.kom.p2psim.impl.network.modular.st.PositioningStrategy;
import de.tud.kom.p2psim.impl.util.positioning.GeoSpherePosition; import de.tud.kom.p2psim.impl.util.positioning.GeoSpherePosition;
import de.tudarmstadt.maki.simonstrator.api.Randoms; import de.tudarmstadt.maki.simonstrator.api.Randoms;
import de.tudarmstadt.maki.simonstrator.api.component.sensor.location.Location;
public class AppJobberPositioning implements PositioningStrategy { public class AppJobberPositioning implements PositioningStrategy {
...@@ -25,7 +25,7 @@ public class AppJobberPositioning implements PositioningStrategy { ...@@ -25,7 +25,7 @@ public class AppJobberPositioning implements PositioningStrategy {
private Random rnd = Randoms.getRandom(AppJobberPositioning.class); private Random rnd = Randoms.getRandom(AppJobberPositioning.class);
@Override @Override
public Position getPosition( public Location getPosition(
SimHost host, SimHost host,
NetMeasurementDB db, NetMeasurementDB db,
NetMeasurementDB.Host hostMeta) { NetMeasurementDB.Host hostMeta) {
......
...@@ -24,12 +24,12 @@ package de.tud.kom.p2psim.impl.network.modular.st.positioning; ...@@ -24,12 +24,12 @@ package de.tud.kom.p2psim.impl.network.modular.st.positioning;
import java.util.List; import java.util.List;
import java.util.Vector; import java.util.Vector;
import de.tud.kom.p2psim.api.common.Position;
import de.tud.kom.p2psim.api.common.SimHost; import de.tud.kom.p2psim.api.common.SimHost;
import de.tud.kom.p2psim.impl.network.modular.common.GNPToolkit; import de.tud.kom.p2psim.impl.network.modular.common.GNPToolkit;
import de.tud.kom.p2psim.impl.network.modular.db.NetMeasurementDB; import de.tud.kom.p2psim.impl.network.modular.db.NetMeasurementDB;
import de.tud.kom.p2psim.impl.network.modular.st.PositioningStrategy; import de.tud.kom.p2psim.impl.network.modular.st.PositioningStrategy;
import de.tud.kom.p2psim.impl.topology.PositionVector; import de.tud.kom.p2psim.impl.topology.PositionVector;
import de.tudarmstadt.maki.simonstrator.api.component.sensor.location.Location;
/** /**
* Applies the (virtual) GNP position as the host's position * Applies the (virtual) GNP position as the host's position
...@@ -40,7 +40,7 @@ import de.tud.kom.p2psim.impl.topology.PositionVector; ...@@ -40,7 +40,7 @@ import de.tud.kom.p2psim.impl.topology.PositionVector;
public class GNPPositioning implements PositioningStrategy { public class GNPPositioning implements PositioningStrategy {
@Override @Override
public Position getPosition(SimHost host, NetMeasurementDB db, public Location getPosition(SimHost host, NetMeasurementDB db,
NetMeasurementDB.Host hostMeta) { NetMeasurementDB.Host hostMeta) {
if (hostMeta == null) if (hostMeta == null)
...@@ -51,7 +51,7 @@ public class GNPPositioning implements PositioningStrategy { ...@@ -51,7 +51,7 @@ public class GNPPositioning implements PositioningStrategy {
} }
public static class GNPPosition extends PositionVector implements Position { public static class GNPPosition extends PositionVector {
private List<Double> coords; private List<Double> coords;
...@@ -63,7 +63,7 @@ public class GNPPositioning implements PositioningStrategy { ...@@ -63,7 +63,7 @@ public class GNPPositioning implements PositioningStrategy {
} }
@Override @Override
public double getDistance(Position netPosition) { public double distanceTo(Location netPosition) {
if (!(netPosition instanceof PositionVector)) if (!(netPosition instanceof PositionVector))
throw new AssertionError( throw new AssertionError(
"Can not calculate distances between different position classes: " "Can not calculate distances between different position classes: "
......
...@@ -21,12 +21,12 @@ ...@@ -21,12 +21,12 @@
package de.tud.kom.p2psim.impl.network.modular.st.positioning; package de.tud.kom.p2psim.impl.network.modular.st.positioning;
import de.tud.kom.p2psim.api.common.Position;
import de.tud.kom.p2psim.api.common.SimHost; import de.tud.kom.p2psim.api.common.SimHost;
import de.tud.kom.p2psim.impl.network.modular.common.GeoToolkit; import de.tud.kom.p2psim.impl.network.modular.common.GeoToolkit;
import de.tud.kom.p2psim.impl.network.modular.db.NetMeasurementDB; import de.tud.kom.p2psim.impl.network.modular.db.NetMeasurementDB;
import de.tud.kom.p2psim.impl.network.modular.st.PositioningStrategy; import de.tud.kom.p2psim.impl.network.modular.st.PositioningStrategy;
import de.tud.kom.p2psim.impl.topology.PositionVector; import de.tud.kom.p2psim.impl.topology.PositionVector;
import de.tudarmstadt.maki.simonstrator.api.component.sensor.location.Location;
/** /**
* Applies a geographical position as defined by the GeoIP project. * Applies a geographical position as defined by the GeoIP project.
...@@ -49,8 +49,7 @@ public class GeographicalPositioning implements PositioningStrategy { ...@@ -49,8 +49,7 @@ public class GeographicalPositioning implements PositioningStrategy {
} }
public class GeographicalPosition extends PositionVector implements public class GeographicalPosition extends PositionVector {
Position {
private double latitude; private double latitude;
private double longitude; private double longitude;
...@@ -70,7 +69,7 @@ public class GeographicalPositioning implements PositioningStrategy { ...@@ -70,7 +69,7 @@ public class GeographicalPositioning implements PositioningStrategy {
* *
*/ */
@Override @Override
public double getDistance(Position netPosition) { public double distanceTo(Location netPosition) {
if (!(netPosition instanceof PositionVector)) if (!(netPosition instanceof PositionVector))
throw new AssertionError( throw new AssertionError(
"Can not calculate the distance between two different position classes: " "Can not calculate the distance between two different position classes: "
...@@ -81,12 +80,6 @@ public class GeographicalPositioning implements PositioningStrategy { ...@@ -81,12 +80,6 @@ public class GeographicalPositioning implements PositioningStrategy {
other.getEntry(1), other.getEntry(0)); other.getEntry(1), other.getEntry(0));
} }
@Override
public double getAngle(Position target) {
throw new AssertionError(
"getAngle is not defined for this Position-Type");
}
@Override @Override
public int getTransmissionSize() { public int getTransmissionSize() {
return 16; // 2 * double return 16; // 2 * double
......
...@@ -20,11 +20,11 @@ ...@@ -20,11 +20,11 @@
package de.tud.kom.p2psim.impl.network.modular.st.positioning; package de.tud.kom.p2psim.impl.network.modular.st.positioning;
import de.tud.kom.p2psim.api.common.Position;
import de.tud.kom.p2psim.api.common.SimHost; import de.tud.kom.p2psim.api.common.SimHost;
import de.tud.kom.p2psim.impl.network.modular.db.NetMeasurementDB; import de.tud.kom.p2psim.impl.network.modular.db.NetMeasurementDB;
import de.tud.kom.p2psim.impl.network.modular.st.PositioningStrategy; import de.tud.kom.p2psim.impl.network.modular.st.PositioningStrategy;
import de.tud.kom.p2psim.impl.topology.placement.PositionDistribution; import de.tud.kom.p2psim.impl.topology.placement.PositionDistribution;
import de.tudarmstadt.maki.simonstrator.api.component.sensor.location.Location;
/** /**
* Positioning on a 2D-Plane, used for all Movement-Enabled Routing-Scenarios * Positioning on a 2D-Plane, used for all Movement-Enabled Routing-Scenarios
...@@ -42,7 +42,7 @@ public class PlanePositioning implements PositioningStrategy { ...@@ -42,7 +42,7 @@ public class PlanePositioning implements PositioningStrategy {
} }
@Override @Override
public Position getPosition( public Location getPosition(
SimHost host, SimHost host,
NetMeasurementDB db, NetMeasurementDB db,
de.tud.kom.p2psim.impl.network.modular.db.NetMeasurementDB.Host hostMeta) { de.tud.kom.p2psim.impl.network.modular.db.NetMeasurementDB.Host hostMeta) {
......
...@@ -22,13 +22,13 @@ package de.tud.kom.p2psim.impl.network.modular.st.positioning; ...@@ -22,13 +22,13 @@ package de.tud.kom.p2psim.impl.network.modular.st.positioning;
import java.util.Random; import java.util.Random;
import de.tud.kom.p2psim.api.common.Position;
import de.tud.kom.p2psim.api.common.SimHost; import de.tud.kom.p2psim.api.common.SimHost;
import de.tud.kom.p2psim.impl.network.modular.db.NetMeasurementDB; import de.tud.kom.p2psim.impl.network.modular.db.NetMeasurementDB;
import de.tud.kom.p2psim.impl.network.modular.st.PositioningStrategy; import de.tud.kom.p2psim.impl.network.modular.st.PositioningStrategy;
import de.tud.kom.p2psim.impl.network.simple.SimpleSubnet; import de.tud.kom.p2psim.impl.network.simple.SimpleSubnet;
import de.tud.kom.p2psim.impl.topology.PositionVector; import de.tud.kom.p2psim.impl.topology.PositionVector;
import de.tudarmstadt.maki.simonstrator.api.Randoms; import de.tudarmstadt.maki.simonstrator.api.Randoms;
import de.tudarmstadt.maki.simonstrator.api.component.sensor.location.Location;
/** /**
* Implementation of the <code>NetPosition</code> interface representing a two * Implementation of the <code>NetPosition</code> interface representing a two
...@@ -48,7 +48,7 @@ public class SimpleEuclidianPositioning implements PositioningStrategy { ...@@ -48,7 +48,7 @@ public class SimpleEuclidianPositioning implements PositioningStrategy {
* @see de.tud.kom.p2psim.impl.network.modular.st.PositioningStrategy#getPosition(de.tud.kom.p2psim.api.common.Host, de.tud.kom.p2psim.impl.network.modular.db.NetMeasurementDB, de.tud.kom.p2psim.impl.network.modular.db.NetMeasurementDB.Host) * @see de.tud.kom.p2psim.impl.network.modular.st.PositioningStrategy#getPosition(de.tud.kom.p2psim.api.common.Host, de.tud.kom.p2psim.impl.network.modular.db.NetMeasurementDB, de.tud.kom.p2psim.impl.network.modular.db.NetMeasurementDB.Host)
*/ */
@Override @Override
public Position getPosition( public Location getPosition(
SimHost host, SimHost host,
NetMeasurementDB db, NetMeasurementDB db,
NetMeasurementDB.Host hostMeta) { NetMeasurementDB.Host hostMeta) {
...@@ -59,7 +59,7 @@ public class SimpleEuclidianPositioning implements PositioningStrategy { ...@@ -59,7 +59,7 @@ public class SimpleEuclidianPositioning implements PositioningStrategy {
} }
public class SimpleEuclidianPosition extends PositionVector implements Position { public class SimpleEuclidianPosition extends PositionVector {
private double xPos; private double xPos;
...@@ -93,7 +93,8 @@ public class SimpleEuclidianPositioning implements PositioningStrategy { ...@@ -93,7 +93,8 @@ public class SimpleEuclidianPositioning implements PositioningStrategy {
* de.tud.kom.p2psim.api.network.NetPosition#getDistance(de.tud.kom. * de.tud.kom.p2psim.api.network.NetPosition#getDistance(de.tud.kom.
* p2psim .api.network.NetPosition) * p2psim .api.network.NetPosition)
*/ */
public double getDistance(Position ep) { @Override
public double distanceTo(Location ep) {
double xDiff = 0; double xDiff = 0;
double yDiff = 0; double yDiff = 0;
SimpleEuclidianPosition point = (SimpleEuclidianPosition) ep; SimpleEuclidianPosition point = (SimpleEuclidianPosition) ep;
...@@ -118,11 +119,6 @@ public class SimpleEuclidianPositioning implements PositioningStrategy { ...@@ -118,11 +119,6 @@ public class SimpleEuclidianPositioning implements PositioningStrategy {
return Math.pow(Math.pow(xDiff, 2) + Math.pow(yDiff, 2), 0.5); return Math.pow(Math.pow(xDiff, 2) + Math.pow(yDiff, 2), 0.5);
} }
@Override
public double getAngle(Position target) {
throw new AssertionError("getAngle is not defined for this Position-Type");
}
@Override @Override
public int getTransmissionSize() { public int getTransmissionSize() {
return 16; // 2 * double return 16; // 2 * double
......
...@@ -23,12 +23,12 @@ package de.tud.kom.p2psim.impl.network.modular.st.positioning; ...@@ -23,12 +23,12 @@ package de.tud.kom.p2psim.impl.network.modular.st.positioning;
import java.util.Random; import java.util.Random;
import de.tud.kom.p2psim.api.common.Position;
import de.tud.kom.p2psim.api.common.SimHost; import de.tud.kom.p2psim.api.common.SimHost;
import de.tud.kom.p2psim.impl.network.modular.db.NetMeasurementDB; import de.tud.kom.p2psim.impl.network.modular.db.NetMeasurementDB;
import de.tud.kom.p2psim.impl.network.modular.st.PositioningStrategy; import de.tud.kom.p2psim.impl.network.modular.st.PositioningStrategy;
import de.tud.kom.p2psim.impl.topology.PositionVector; import de.tud.kom.p2psim.impl.topology.PositionVector;
import de.tudarmstadt.maki.simonstrator.api.Randoms; import de.tudarmstadt.maki.simonstrator.api.Randoms;
import de.tudarmstadt.maki.simonstrator.api.component.sensor.location.Location;
/** /**
* Applies a uniformly-distributed random position on a 2-or multi-dimensional * Applies a uniformly-distributed random position on a 2-or multi-dimensional
...@@ -48,7 +48,7 @@ public class TorusPositioning implements PositioningStrategy { ...@@ -48,7 +48,7 @@ public class TorusPositioning implements PositioningStrategy {
Random rand = Randoms.getRandom(TorusPosition.class); Random rand = Randoms.getRandom(TorusPosition.class);
@Override @Override
public Position getPosition(SimHost host, NetMeasurementDB db, public Location getPosition(SimHost host, NetMeasurementDB db,
NetMeasurementDB.Host hostMeta) { NetMeasurementDB.Host hostMeta) {
double[] rawPos = getRawTorusPositionFor(host); double[] rawPos = getRawTorusPositionFor(host);
...@@ -93,7 +93,7 @@ public class TorusPositioning implements PositioningStrategy { ...@@ -93,7 +93,7 @@ public class TorusPositioning implements PositioningStrategy {
this.halfTorusDimensionSize = torusDimensionSize * 0.5d; this.halfTorusDimensionSize = torusDimensionSize * 0.5d;
} }
public class TorusPosition extends PositionVector implements Position { public class TorusPosition extends PositionVector {
TorusPosition(double[] rawPos) { TorusPosition(double[] rawPos) {
...@@ -101,7 +101,7 @@ public class TorusPositioning implements PositioningStrategy { ...@@ -101,7 +101,7 @@ public class TorusPositioning implements PositioningStrategy {
} }
@Override @Override
public double getDistance(Position netPosition) { public double distanceTo(Location netPosition) {
if (!(netPosition instanceof PositionVector)) if (!(netPosition instanceof PositionVector))
throw new AssertionError( throw new AssertionError(
"Can not calculate distances between different position classes: " "Can not calculate distances between different position classes: "
......
...@@ -28,7 +28,6 @@ import java.util.Map; ...@@ -28,7 +28,6 @@ import java.util.Map;
import de.tud.kom.p2psim.api.analyzer.ConnectivityAnalyzer; import de.tud.kom.p2psim.api.analyzer.ConnectivityAnalyzer;
import de.tud.kom.p2psim.api.analyzer.MessageAnalyzer.Reason; import de.tud.kom.p2psim.api.analyzer.MessageAnalyzer.Reason;
import de.tud.kom.p2psim.api.analyzer.NetlayerAnalyzer; import de.tud.kom.p2psim.api.analyzer.NetlayerAnalyzer;
import de.tud.kom.p2psim.api.common.Position;
import de.tud.kom.p2psim.api.common.SimHost; import de.tud.kom.p2psim.api.common.SimHost;
import de.tud.kom.p2psim.api.common.SimHostComponent; import de.tud.kom.p2psim.api.common.SimHostComponent;
import de.tud.kom.p2psim.api.linklayer.LinkLayer; import de.tud.kom.p2psim.api.linklayer.LinkLayer;
...@@ -57,6 +56,7 @@ import de.tudarmstadt.maki.simonstrator.api.component.network.Bandwidth; ...@@ -57,6 +56,7 @@ import de.tudarmstadt.maki.simonstrator.api.component.network.Bandwidth;
import de.tudarmstadt.maki.simonstrator.api.component.network.NetID; import de.tudarmstadt.maki.simonstrator.api.component.network.NetID;
import de.tudarmstadt.maki.simonstrator.api.component.network.NetInterface; import de.tudarmstadt.maki.simonstrator.api.component.network.NetInterface;
import de.tudarmstadt.maki.simonstrator.api.component.network.NetworkComponent; import de.tudarmstadt.maki.simonstrator.api.component.network.NetworkComponent;
import de.tudarmstadt.maki.simonstrator.api.component.sensor.location.Location;
import de.tudarmstadt.maki.simonstrator.api.component.transport.ConnectivityListener; import de.tudarmstadt.maki.simonstrator.api.component.transport.ConnectivityListener;
/** /**
...@@ -548,7 +548,7 @@ public class RoutedNetLayer implements SimNetworkComponent, NetworkComponent, ...@@ -548,7 +548,7 @@ public class RoutedNetLayer implements SimNetworkComponent, NetworkComponent,
} }
@Override @Override
public Position getNetPosition() { public Location getNetPosition() {
return host.getTopologyComponent().getRealPosition(); return host.getTopologyComponent().getRealPosition();
} }
......
...@@ -23,7 +23,6 @@ ...@@ -23,7 +23,6 @@
package de.tud.kom.p2psim.impl.network.simple; package de.tud.kom.p2psim.impl.network.simple;
import de.tud.kom.p2psim.api.analyzer.MessageAnalyzer.Reason; import de.tud.kom.p2psim.api.analyzer.MessageAnalyzer.Reason;
import de.tud.kom.p2psim.api.common.Position;
import de.tud.kom.p2psim.api.common.SimHost; import de.tud.kom.p2psim.api.common.SimHost;
import de.tud.kom.p2psim.api.network.BandwidthImpl; import de.tud.kom.p2psim.api.network.BandwidthImpl;
import de.tud.kom.p2psim.api.network.NetMessage; import de.tud.kom.p2psim.api.network.NetMessage;
...@@ -34,6 +33,7 @@ import de.tud.kom.p2psim.impl.transport.AbstractTransMessage; ...@@ -34,6 +33,7 @@ import de.tud.kom.p2psim.impl.transport.AbstractTransMessage;
import de.tudarmstadt.maki.simonstrator.api.Message; import de.tudarmstadt.maki.simonstrator.api.Message;
import de.tudarmstadt.maki.simonstrator.api.Monitor; import de.tudarmstadt.maki.simonstrator.api.Monitor;
import de.tudarmstadt.maki.simonstrator.api.component.network.NetID; import de.tudarmstadt.maki.simonstrator.api.component.network.NetID;
import de.tudarmstadt.maki.simonstrator.api.component.sensor.location.Location;
public class SimpleNetLayer extends AbstractNetLayer { public class SimpleNetLayer extends AbstractNetLayer {
...@@ -44,7 +44,7 @@ public class SimpleNetLayer extends AbstractNetLayer { ...@@ -44,7 +44,7 @@ public class SimpleNetLayer extends AbstractNetLayer {
private final SimpleSubnet subNet; private final SimpleSubnet subNet;
public SimpleNetLayer(SimHost host, SimpleSubnet subNet, SimpleNetID netID, public SimpleNetLayer(SimHost host, SimpleSubnet subNet, SimpleNetID netID,
Position netPosition, BandwidthImpl bandwidth) { Location netPosition, BandwidthImpl bandwidth) {
super(host, netID, bandwidth, netPosition, null); super(host, netID, bandwidth, netPosition, null);
this.subNet = subNet; this.subNet = subNet;
subNet.registerNetLayer(this); subNet.registerNetLayer(this);
......
...@@ -28,7 +28,6 @@ import java.util.Random; ...@@ -28,7 +28,6 @@ import java.util.Random;
import java.util.Set; import java.util.Set;
import de.tud.kom.p2psim.api.common.HostProperties; import de.tud.kom.p2psim.api.common.HostProperties;
import de.tud.kom.p2psim.api.common.Position;
import de.tud.kom.p2psim.api.common.SimHost; import de.tud.kom.p2psim.api.common.SimHost;
import de.tud.kom.p2psim.api.linklayer.mac.MacAddress; import de.tud.kom.p2psim.api.linklayer.mac.MacAddress;
import de.tud.kom.p2psim.api.linklayer.mac.MacLayer; import de.tud.kom.p2psim.api.linklayer.mac.MacLayer;
...@@ -178,7 +177,7 @@ public class DefaultTopologyComponent implements TopologyComponent { ...@@ -178,7 +177,7 @@ public class DefaultTopologyComponent implements TopologyComponent {
@Override @Override
public void positionChanged() { public void positionChanged() {
for (PositionListener listener : positionListener) { for (PositionListener listener : positionListener) {
if (listener.getPosition().getDistance(position) < listener if (listener.getPosition().distanceTo(position) < listener
.getRadius()) { .getRadius()) {
listener.reachedPosition(); listener.reachedPosition();
} }
...@@ -212,14 +211,6 @@ public class DefaultTopologyComponent implements TopologyComponent { ...@@ -212,14 +211,6 @@ public class DefaultTopologyComponent implements TopologyComponent {
return position; return position;
} }
@Override
public Position getPosition(PositionAccuracy accuracy) {
/*
* TODO :)
*/
return position;
}
@Override @Override
public Topology getTopology() { public Topology getTopology() {
return topology; return topology;
......
...@@ -25,7 +25,6 @@ import java.util.Arrays; ...@@ -25,7 +25,6 @@ import java.util.Arrays;
import com.vividsolutions.jts.geom.Coordinate; import com.vividsolutions.jts.geom.Coordinate;
import de.tud.kom.p2psim.api.common.Position;
import de.tudarmstadt.maki.simonstrator.api.component.sensor.location.Location; import de.tudarmstadt.maki.simonstrator.api.component.sensor.location.Location;
/** /**
...@@ -50,7 +49,7 @@ import de.tudarmstadt.maki.simonstrator.api.component.sensor.location.Location; ...@@ -50,7 +49,7 @@ import de.tudarmstadt.maki.simonstrator.api.component.sensor.location.Location;
* @author Bjoern Richerzhagen * @author Bjoern Richerzhagen
* @version 1.0, 04/25/2011 * @version 1.0, 04/25/2011
*/ */
public class PositionVector implements Position, Location { public class PositionVector implements Location {
private int dimensions; private int dimensions;
...@@ -255,55 +254,6 @@ public class PositionVector implements Position, Location { ...@@ -255,55 +254,6 @@ public class PositionVector implements Position, Location {
return result; return result;
} }
@Override
public double getDistance(Position position) {
if (position instanceof PositionVector) {
PositionVector pv = (PositionVector) position;
if (pv.getDimensions() == getDimensions()) {
double dist = 0;
for (int i = 0; i < dimensions; i++) {
// faster as Math.pow
dist += (pv.getEntry(i) - getEntry(i))
* (pv.getEntry(i) - getEntry(i));
}
return Math.sqrt(dist);
} else {
throw new AssertionError(
"Can not compute distance between Vectors of different length!");
}
} else {
throw new AssertionError("Incompatible Types!");
}
}
@Override
public double getAngle(Position target) {
if (target instanceof PositionVector) {
PositionVector t = (PositionVector) target;
/*
* Calculates the angle using atan2 - this implies that the first
* two dimensions in your vector are the plane you are interested
* in.
*/
return Math.atan2(t.getEntry(1) - this.getEntry(1), t.getEntry(0)
- this.getEntry(0));
} else {
throw new AssertionError(
"Can only calculate an Angle on elements of type position vector");
}
}
@Override
public Position getTarget(double distance, double angle) {
/*
* The call to "clone" ensures correct typing
*/
PositionVector newPos = clone();
newPos.setEntry(0, newPos.getEntry(0) + distance * Math.cos(angle));
newPos.setEntry(1, newPos.getEntry(1) + distance * Math.sin(angle));
return newPos;
}
@Override @Override
public int getTransmissionSize() { public int getTransmissionSize() {
return getDimensions() * 8; return getDimensions() * 8;
...@@ -496,13 +446,39 @@ public class PositionVector implements Position, Location { ...@@ -496,13 +446,39 @@ public class PositionVector implements Position, Location {
@Override @Override
public double distanceTo(Location dest) { public double distanceTo(Location dest) {
assert (dest instanceof PositionVector); if (dest instanceof PositionVector) {
return this.getDistance((PositionVector) dest); PositionVector pv = (PositionVector) dest;
if (pv.getDimensions() == getDimensions()) {
double dist = 0;
for (int i = 0; i < dimensions; i++) {
// faster as Math.pow
dist += (pv.getEntry(i) - getEntry(i))
* (pv.getEntry(i) - getEntry(i));
}
return Math.sqrt(dist);
} else {
throw new AssertionError(
"Can not compute distance between Vectors of different length!");
}
} else {
throw new AssertionError("Incompatible Types!");
}
} }
@Override @Override
public float bearingTo(Location dest) { public float bearingTo(Location dest) {
assert (dest instanceof PositionVector); if (dest instanceof PositionVector) {
return (float) ((this.getAngle((PositionVector) dest) - (Math.PI / 2)) * 180 / Math.PI); PositionVector t = (PositionVector) dest;
/*
* Calculates the angle using atan2 - this implies that the first
* two dimensions in your vector are the plane you are interested
* in.
*/
return (float) Math.atan2(t.getEntry(1) - this.getEntry(1),
t.getEntry(0) - this.getEntry(0));
} else {
throw new AssertionError(
"Can only calculate an Angle on elements of type position vector");
}
} }
} }
...@@ -39,6 +39,7 @@ import de.tud.kom.p2psim.impl.network.modular.db.NetMeasurementDB; ...@@ -39,6 +39,7 @@ import de.tud.kom.p2psim.impl.network.modular.db.NetMeasurementDB;
import de.tud.kom.p2psim.impl.topology.movement.AbstractWaypointMovementModel; import de.tud.kom.p2psim.impl.topology.movement.AbstractWaypointMovementModel;
import de.tud.kom.p2psim.impl.topology.placement.GNPPlacement; import de.tud.kom.p2psim.impl.topology.placement.GNPPlacement;
import de.tud.kom.p2psim.impl.topology.views.latency.GNPLatency; import de.tud.kom.p2psim.impl.topology.views.latency.GNPLatency;
import de.tudarmstadt.maki.simonstrator.api.Binder;
import de.tudarmstadt.maki.simonstrator.api.Host; import de.tudarmstadt.maki.simonstrator.api.Host;
import de.tudarmstadt.maki.simonstrator.api.Monitor; import de.tudarmstadt.maki.simonstrator.api.Monitor;
import de.tudarmstadt.maki.simonstrator.api.Monitor.Level; import de.tudarmstadt.maki.simonstrator.api.Monitor.Level;
...@@ -88,7 +89,8 @@ public class TopologyFactory implements HostComponentFactory { ...@@ -88,7 +89,8 @@ public class TopologyFactory implements HostComponentFactory {
@XMLConfigurableConstructor({ "worldX", "worldY" }) @XMLConfigurableConstructor({ "worldX", "worldY" })
public TopologyFactory(double worldX, double worldY) { public TopologyFactory(double worldX, double worldY) {
topo = new DefaultTopology(new PositionVector(worldX, worldY)); topo = new DefaultTopology(new PositionVector(worldX, worldY));
de.tud.kom.p2psim.impl.topology.Topology.setTopology(topo); // Make the topology component available globally
Binder.registerComponent(topo);
} }
@Override @Override
......
...@@ -26,11 +26,12 @@ import java.util.List; ...@@ -26,11 +26,12 @@ import java.util.List;
import java.util.Random; import java.util.Random;
import java.util.Set; import java.util.Set;
import de.tud.kom.p2psim.api.topology.Topology;
import de.tud.kom.p2psim.api.topology.movement.MovementListener; import de.tud.kom.p2psim.api.topology.movement.MovementListener;
import de.tud.kom.p2psim.api.topology.movement.MovementModel; import de.tud.kom.p2psim.api.topology.movement.MovementModel;
import de.tud.kom.p2psim.api.topology.movement.MovementSupported; import de.tud.kom.p2psim.api.topology.movement.MovementSupported;
import de.tud.kom.p2psim.impl.topology.PositionVector; import de.tud.kom.p2psim.impl.topology.PositionVector;
import de.tud.kom.p2psim.impl.topology.Topology; import de.tudarmstadt.maki.simonstrator.api.Binder;
import de.tudarmstadt.maki.simonstrator.api.Event; import de.tudarmstadt.maki.simonstrator.api.Event;
import de.tudarmstadt.maki.simonstrator.api.EventHandler; import de.tudarmstadt.maki.simonstrator.api.EventHandler;
import de.tudarmstadt.maki.simonstrator.api.Randoms; import de.tudarmstadt.maki.simonstrator.api.Randoms;
...@@ -87,7 +88,8 @@ public abstract class AbstractMovementModel implements MovementModel { ...@@ -87,7 +88,8 @@ public abstract class AbstractMovementModel implements MovementModel {
@Override @Override
public void addComponent(MovementSupported component) { public void addComponent(MovementSupported component) {
if (worldDimensions == null) { if (worldDimensions == null) {
worldDimensions = Topology.getWorldDimension(); worldDimensions = Binder.getComponentOrNull(Topology.class)
.getWorldDimensions();
} }
components.add(component); components.add(component);
} }
......
...@@ -231,7 +231,7 @@ public abstract class AbstractWaypointMovementModel implements MovementModel { ...@@ -231,7 +231,7 @@ public abstract class AbstractWaypointMovementModel implements MovementModel {
private boolean reachedPosition(MovementSupported comp, PositionVector dst) { private boolean reachedPosition(MovementSupported comp, PositionVector dst) {
PositionVector pos = comp.getRealPosition(); PositionVector pos = comp.getRealPosition();
double distance = pos.getDistance(dst); double distance = pos.distanceTo(dst);
// FIXME: Better detection? // FIXME: Better detection?
......
...@@ -27,26 +27,19 @@ import java.util.LinkedHashMap; ...@@ -27,26 +27,19 @@ import java.util.LinkedHashMap;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Random;
import java.util.Set; import java.util.Set;
import org.jfree.data.io.CSV;
import de.tud.kom.p2psim.api.common.SimHost; import de.tud.kom.p2psim.api.common.SimHost;
import de.tud.kom.p2psim.api.common.SimHostComponent;
import de.tud.kom.p2psim.api.network.SimNetInterface; import de.tud.kom.p2psim.api.network.SimNetInterface;
import de.tud.kom.p2psim.api.topology.Topology;
import de.tud.kom.p2psim.api.topology.movement.MovementInformation; import de.tud.kom.p2psim.api.topology.movement.MovementInformation;
import de.tud.kom.p2psim.api.topology.movement.MovementModel;
import de.tud.kom.p2psim.api.topology.movement.MovementSupported; import de.tud.kom.p2psim.api.topology.movement.MovementSupported;
import de.tud.kom.p2psim.impl.network.gnp.topology.Host;
import de.tud.kom.p2psim.impl.simengine.Simulator; import de.tud.kom.p2psim.impl.simengine.Simulator;
import de.tud.kom.p2psim.impl.topology.PositionVector; import de.tud.kom.p2psim.impl.topology.PositionVector;
import de.tud.kom.p2psim.impl.topology.Topology;
import de.tud.kom.p2psim.impl.topology.movement.modular.ModularMovementModel; import de.tud.kom.p2psim.impl.topology.movement.modular.ModularMovementModel;
import de.tud.kom.p2psim.impl.topology.movement.modular.attraction.AttractionPoint; import de.tud.kom.p2psim.impl.topology.movement.modular.attraction.AttractionPoint;
import de.tud.kom.p2psim.impl.topology.movement.modular.transition.FixedAssignmentStrategy; import de.tud.kom.p2psim.impl.topology.movement.modular.transition.FixedAssignmentStrategy;
import de.tud.kom.p2psim.impl.topology.movement.modular.transition.TransitionStrategy; import de.tudarmstadt.maki.simonstrator.api.Binder;
import de.tudarmstadt.maki.simonstrator.api.Randoms;
import de.tudarmstadt.maki.simonstrator.api.Time; import de.tudarmstadt.maki.simonstrator.api.Time;
import de.tudarmstadt.maki.simonstrator.api.util.XMLConfigurableConstructor; import de.tudarmstadt.maki.simonstrator.api.util.XMLConfigurableConstructor;
...@@ -82,7 +75,8 @@ public class CsvMovement extends AbstractMovementModel { ...@@ -82,7 +75,8 @@ public class CsvMovement extends AbstractMovementModel {
@XMLConfigurableConstructor({ "movementPointsFile" , "minMovementSpeed", "maxMovementSpeed" }) @XMLConfigurableConstructor({ "movementPointsFile" , "minMovementSpeed", "maxMovementSpeed" })
public CsvMovement(String movementPointsFile, double minMovementSpeed, double maxMovementSpeed) { public CsvMovement(String movementPointsFile, double minMovementSpeed, double maxMovementSpeed) {
super(); super();
this.worldDimensions = Topology.getWorldDimension(); this.worldDimensions = Binder.getComponentOrNull(Topology.class)
.getWorldDimensions();
this.file = movementPointsFile; this.file = movementPointsFile;
this.readPathInfos = new LinkedList<LinkedList<CsvPathInfo>>(); this.readPathInfos = new LinkedList<LinkedList<CsvPathInfo>>();
this.stateInfo = new LinkedHashMap<MovementSupported, CsvMovementInfo>(); this.stateInfo = new LinkedHashMap<MovementSupported, CsvMovementInfo>();
...@@ -144,7 +138,7 @@ public class CsvMovement extends AbstractMovementModel { ...@@ -144,7 +138,7 @@ public class CsvMovement extends AbstractMovementModel {
double distancePerMoveOperation = pathInfo.getSpeed() double distancePerMoveOperation = pathInfo.getSpeed()
* getTimeBetweenMoveOperations() / Time.SECOND; * getTimeBetweenMoveOperations() / Time.SECOND;
double distance = actPos.getDistance(targetPos); double distance = actPos.distanceTo(targetPos);
steps = (int) Math.round(distance / distancePerMoveOperation); steps = (int) Math.round(distance / distancePerMoveOperation);
......
...@@ -162,7 +162,7 @@ public class SLAWMovementModel extends AbstractWaypointMovementModel { ...@@ -162,7 +162,7 @@ public class SLAWMovementModel extends AbstractWaypointMovementModel {
mi.wlist = get_waypoint_list(mi.clts); mi.wlist = get_waypoint_list(mi.clts);
for (int i = 0; i < mi.wlist.length; i++) { for (int i = 0; i < mi.wlist.length; i++) {
if (!mi.wlist[i].is_visited) { if (!mi.wlist[i].is_visited) {
if (source.getDistance(mi.wlist[i].pos) != 0.0) { if (source.distanceTo(mi.wlist[i].pos) != 0.0) {
count++; count++;
} else { } else {
mi.wlist[i].is_visited = true; mi.wlist[i].is_visited = true;
...@@ -182,7 +182,7 @@ public class SLAWMovementModel extends AbstractWaypointMovementModel { ...@@ -182,7 +182,7 @@ public class SLAWMovementModel extends AbstractWaypointMovementModel {
// get distance from source to all remaining waypoints // get distance from source to all remaining waypoints
double[] dist = new double[not_visited.length]; double[] dist = new double[not_visited.length];
for (int i = 0; i < not_visited.length; i++) { for (int i = 0; i < not_visited.length; i++) {
dist[i] = source.getDistance(not_visited[i].pos); dist[i] = source.distanceTo(not_visited[i].pos);
} }
double[] weights = new double[not_visited.length]; double[] weights = new double[not_visited.length];
...@@ -680,7 +680,7 @@ public class SLAWMovementModel extends AbstractWaypointMovementModel { ...@@ -680,7 +680,7 @@ public class SLAWMovementModel extends AbstractWaypointMovementModel {
for (int i = 0; i < all_points.size(); i++) { for (int i = 0; i < all_points.size(); i++) {
PositionVector new_pos = all_points.elementAt(i); PositionVector new_pos = all_points.elementAt(i);
if (init_pos.getDistance(new_pos) <= this.cluster_range) { if (init_pos.distanceTo(new_pos) <= this.cluster_range) {
new_points.add(new_pos); new_points.add(new_pos);
members.add(new_pos); members.add(new_pos);
all_points.remove(i--); all_points.remove(i--);
......
...@@ -59,7 +59,7 @@ public class TargetMovement extends AbstractMovementModel { ...@@ -59,7 +59,7 @@ public class TargetMovement extends AbstractMovementModel {
PositionVector rVec = new PositionVector(x, y); PositionVector rVec = new PositionVector(x, y);
rVec = rVec.minus(pos); rVec = rVec.minus(pos);
double length = rVec.getDistance(new PositionVector(0, 0)); double length = rVec.distanceTo(new PositionVector(0, 0));
PositionVector vec; PositionVector vec;
if (length > distance) { if (length > distance) {
......
...@@ -37,7 +37,8 @@ public class LinearMovement extends AbstractLocalMovementStrategy { ...@@ -37,7 +37,8 @@ public class LinearMovement extends AbstractLocalMovementStrategy {
public Either<PositionVector, Boolean> nextPosition(MovementSupported comp, public Either<PositionVector, Boolean> nextPosition(MovementSupported comp,
PositionVector destination) { PositionVector destination) {
PositionVector newPosition; PositionVector newPosition;
if (destination.getDistance(comp.getRealPosition()) < getMovementSpeed(comp)) { if (destination
.distanceTo(comp.getRealPosition()) < getMovementSpeed(comp)) {
newPosition = destination.clone(); newPosition = destination.clone();
} else { } else {
newPosition = comp.getRealPosition().moveStep(destination, getMovementSpeed(comp)); newPosition = comp.getRealPosition().moveStep(destination, getMovementSpeed(comp));
......
...@@ -25,6 +25,7 @@ import java.io.InputStream; ...@@ -25,6 +25,7 @@ import java.io.InputStream;
import java.net.MalformedURLException; import java.net.MalformedURLException;
import java.net.URL; import java.net.URL;
import java.util.HashMap; import java.util.HashMap;
import org.apache.commons.io.IOUtils; import org.apache.commons.io.IOUtils;
import org.json.JSONArray; import org.json.JSONArray;
import org.json.JSONException; import org.json.JSONException;
...@@ -34,12 +35,13 @@ import com.graphhopper.util.PointList; ...@@ -34,12 +35,13 @@ import com.graphhopper.util.PointList;
import com.graphhopper.util.shapes.GHPoint; import com.graphhopper.util.shapes.GHPoint;
import com.graphhopper.util.shapes.GHPoint3D; import com.graphhopper.util.shapes.GHPoint3D;
import de.tud.kom.p2psim.api.topology.Topology;
import de.tud.kom.p2psim.api.topology.movement.MovementSupported; import de.tud.kom.p2psim.api.topology.movement.MovementSupported;
import de.tud.kom.p2psim.impl.topology.PositionVector; import de.tud.kom.p2psim.impl.topology.PositionVector;
import de.tud.kom.p2psim.impl.topology.Topology;
import de.tud.kom.p2psim.impl.topology.movement.modularosm.GPSCalculation; import de.tud.kom.p2psim.impl.topology.movement.modularosm.GPSCalculation;
import de.tud.kom.p2psim.impl.util.Either; import de.tud.kom.p2psim.impl.util.Either;
import de.tud.kom.p2psim.impl.util.Left; import de.tud.kom.p2psim.impl.util.Left;
import de.tudarmstadt.maki.simonstrator.api.Binder;
/** /**
* This movement strategy uses the data from MapQuest * This movement strategy uses the data from MapQuest
...@@ -63,7 +65,8 @@ public class OnlineMapQuestMovement extends AbstractLocalMovementStrategy { ...@@ -63,7 +65,8 @@ public class OnlineMapQuestMovement extends AbstractLocalMovementStrategy {
//if the distance is smaller than the given one, the node will choose the next point in the list //if the distance is smaller than the given one, the node will choose the next point in the list
public OnlineMapQuestMovement() { public OnlineMapQuestMovement() {
this.worldDimensions = Topology.getWorldDimension(); this.worldDimensions = Binder.getComponentOrNull(Topology.class)
.getWorldDimensions();
latLeft = GPSCalculation.getLatLower(); latLeft = GPSCalculation.getLatLower();
latRight = GPSCalculation.getLatUpper(); latRight = GPSCalculation.getLatUpper();
lonLeft = GPSCalculation.getLonLeft(); lonLeft = GPSCalculation.getLonLeft();
...@@ -74,7 +77,8 @@ public class OnlineMapQuestMovement extends AbstractLocalMovementStrategy { ...@@ -74,7 +77,8 @@ public class OnlineMapQuestMovement extends AbstractLocalMovementStrategy {
PositionVector destination) { PositionVector destination) {
PositionVector newPosition = null; PositionVector newPosition = null;
if (destination.getDistance(comp.getRealPosition()) < getMovementSpeed(comp)) { if (destination
.distanceTo(comp.getRealPosition()) < getMovementSpeed(comp)) {
newPosition = destination.clone(); newPosition = destination.clone();
} else { } else {
//if not set already for this node or new destination is different than last one //if not set already for this node or new destination is different than last one
......
...@@ -31,12 +31,13 @@ import com.graphhopper.util.PointList; ...@@ -31,12 +31,13 @@ import com.graphhopper.util.PointList;
import com.graphhopper.util.shapes.GHPoint; import com.graphhopper.util.shapes.GHPoint;
import com.graphhopper.util.shapes.GHPoint3D; import com.graphhopper.util.shapes.GHPoint3D;
import de.tud.kom.p2psim.api.topology.Topology;
import de.tud.kom.p2psim.api.topology.movement.MovementSupported; import de.tud.kom.p2psim.api.topology.movement.MovementSupported;
import de.tud.kom.p2psim.impl.topology.PositionVector; import de.tud.kom.p2psim.impl.topology.PositionVector;
import de.tud.kom.p2psim.impl.topology.Topology;
import de.tud.kom.p2psim.impl.topology.movement.modularosm.GPSCalculation; import de.tud.kom.p2psim.impl.topology.movement.modularosm.GPSCalculation;
import de.tud.kom.p2psim.impl.util.Either; import de.tud.kom.p2psim.impl.util.Either;
import de.tud.kom.p2psim.impl.util.Left; import de.tud.kom.p2psim.impl.util.Left;
import de.tudarmstadt.maki.simonstrator.api.Binder;
/** /**
* This movement strategy uses the data from osm and navigates the nodes throught streets to the destination * This movement strategy uses the data from osm and navigates the nodes throught streets to the destination
...@@ -68,7 +69,8 @@ public class RealWorldStreetsMovement extends AbstractLocalMovementStrategy { ...@@ -68,7 +69,8 @@ public class RealWorldStreetsMovement extends AbstractLocalMovementStrategy {
private double tolerance = 1; private double tolerance = 1;
public RealWorldStreetsMovement() { public RealWorldStreetsMovement() {
this.worldDimensions = Topology.getWorldDimension(); this.worldDimensions = Binder.getComponentOrNull(Topology.class)
.getWorldDimensions();
latLeft = GPSCalculation.getLatLower(); latLeft = GPSCalculation.getLatLower();
latRight = GPSCalculation.getLatUpper(); latRight = GPSCalculation.getLatUpper();
lonLeft = GPSCalculation.getLonLeft(); lonLeft = GPSCalculation.getLonLeft();
...@@ -90,7 +92,8 @@ public class RealWorldStreetsMovement extends AbstractLocalMovementStrategy { ...@@ -90,7 +92,8 @@ public class RealWorldStreetsMovement extends AbstractLocalMovementStrategy {
if(!init) init(); if(!init) init();
PositionVector newPosition = null; PositionVector newPosition = null;
if (destination.getDistance(comp.getRealPosition()) < getMovementSpeed(comp)) { if (destination
.distanceTo(comp.getRealPosition()) < getMovementSpeed(comp)) {
newPosition = destination.clone(); newPosition = destination.clone();
} else { } else {
//if not set already for this node or new destination is different than last one //if not set already for this node or new destination is different than last one
......
...@@ -160,8 +160,7 @@ public class ShortestPathWaypointMovement extends AbstractLocalMovementStrategy ...@@ -160,8 +160,7 @@ public class ShortestPathWaypointMovement extends AbstractLocalMovementStrategy
*/ */
protected boolean destinationWaypointReached(Waypoint currentWaypoint, protected boolean destinationWaypointReached(Waypoint currentWaypoint,
PositionVector newPosition, double speed) { PositionVector newPosition, double speed) {
double distance = newPosition double distance = newPosition.distanceTo(currentWaypoint.getPosition());
.getDistance(currentWaypoint.getPosition());
return (distance < speed * 2); return (distance < speed * 2);
} }
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment