Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Simonstrator
PeerfactSim.KOM
Commits
0c80da45
Commit
0c80da45
authored
Nov 06, 2015
by
Björn Richerzhagen
Browse files
Removed deprecated `Position`-Interface
parent
db566de9
Changes
64
Show whitespace changes
Inline
Side-by-side
src/de/tud/kom/p2psim/impl/network/modular/st/positioning/AppJobberPositioning.java
View file @
0c80da45
...
...
@@ -9,12 +9,12 @@ import java.io.UnsupportedEncodingException;
import
java.util.ArrayList
;
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.impl.network.modular.db.NetMeasurementDB
;
import
de.tud.kom.p2psim.impl.network.modular.st.PositioningStrategy
;
import
de.tud.kom.p2psim.impl.util.positioning.GeoSpherePosition
;
import
de.tudarmstadt.maki.simonstrator.api.Randoms
;
import
de.tudarmstadt.maki.simonstrator.api.component.sensor.location.Location
;
public
class
AppJobberPositioning
implements
PositioningStrategy
{
...
...
@@ -25,7 +25,7 @@ public class AppJobberPositioning implements PositioningStrategy {
private
Random
rnd
=
Randoms
.
getRandom
(
AppJobberPositioning
.
class
);
@Override
public
Posi
tion
getPosition
(
public
Loca
tion
getPosition
(
SimHost
host
,
NetMeasurementDB
db
,
NetMeasurementDB
.
Host
hostMeta
)
{
...
...
src/de/tud/kom/p2psim/impl/network/modular/st/positioning/GNPPositioning.java
View file @
0c80da45
...
...
@@ -24,12 +24,12 @@ package de.tud.kom.p2psim.impl.network.modular.st.positioning;
import
java.util.List
;
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.impl.network.modular.common.GNPToolkit
;
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.topology.PositionVector
;
import
de.tudarmstadt.maki.simonstrator.api.component.sensor.location.Location
;
/**
* Applies the (virtual) GNP position as the host's position
...
...
@@ -40,7 +40,7 @@ import de.tud.kom.p2psim.impl.topology.PositionVector;
public
class
GNPPositioning
implements
PositioningStrategy
{
@Override
public
Posi
tion
getPosition
(
SimHost
host
,
NetMeasurementDB
db
,
public
Loca
tion
getPosition
(
SimHost
host
,
NetMeasurementDB
db
,
NetMeasurementDB
.
Host
hostMeta
)
{
if
(
hostMeta
==
null
)
...
...
@@ -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
;
...
...
@@ -63,7 +63,7 @@ public class GNPPositioning implements PositioningStrategy {
}
@Override
public
double
getD
istance
(
Posi
tion
netPosition
)
{
public
double
d
istance
To
(
Loca
tion
netPosition
)
{
if
(!(
netPosition
instanceof
PositionVector
))
throw
new
AssertionError
(
"Can not calculate distances between different position classes: "
...
...
src/de/tud/kom/p2psim/impl/network/modular/st/positioning/GeographicalPositioning.java
View file @
0c80da45
...
...
@@ -21,12 +21,12 @@
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.impl.network.modular.common.GeoToolkit
;
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.topology.PositionVector
;
import
de.tudarmstadt.maki.simonstrator.api.component.sensor.location.Location
;
/**
* Applies a geographical position as defined by the GeoIP project.
...
...
@@ -49,8 +49,7 @@ public class GeographicalPositioning implements PositioningStrategy {
}
public
class
GeographicalPosition
extends
PositionVector
implements
Position
{
public
class
GeographicalPosition
extends
PositionVector
{
private
double
latitude
;
private
double
longitude
;
...
...
@@ -70,7 +69,7 @@ public class GeographicalPositioning implements PositioningStrategy {
*
*/
@Override
public
double
getD
istance
(
Posi
tion
netPosition
)
{
public
double
d
istance
To
(
Loca
tion
netPosition
)
{
if
(!(
netPosition
instanceof
PositionVector
))
throw
new
AssertionError
(
"Can not calculate the distance between two different position classes: "
...
...
@@ -81,12 +80,6 @@ public class GeographicalPositioning implements PositioningStrategy {
other
.
getEntry
(
1
),
other
.
getEntry
(
0
));
}
@Override
public
double
getAngle
(
Position
target
)
{
throw
new
AssertionError
(
"getAngle is not defined for this Position-Type"
);
}
@Override
public
int
getTransmissionSize
()
{
return
16
;
// 2 * double
...
...
src/de/tud/kom/p2psim/impl/network/modular/st/positioning/PlanePositioning.java
View file @
0c80da45
...
...
@@ -20,11 +20,11 @@
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.impl.network.modular.db.NetMeasurementDB
;
import
de.tud.kom.p2psim.impl.network.modular.st.PositioningStrategy
;
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
...
...
@@ -42,7 +42,7 @@ public class PlanePositioning implements PositioningStrategy {
}
@Override
public
Posi
tion
getPosition
(
public
Loca
tion
getPosition
(
SimHost
host
,
NetMeasurementDB
db
,
de
.
tud
.
kom
.
p2psim
.
impl
.
network
.
modular
.
db
.
NetMeasurementDB
.
Host
hostMeta
)
{
...
...
src/de/tud/kom/p2psim/impl/network/modular/st/positioning/SimpleEuclidianPositioning.java
View file @
0c80da45
...
...
@@ -22,13 +22,13 @@ package de.tud.kom.p2psim.impl.network.modular.st.positioning;
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.impl.network.modular.db.NetMeasurementDB
;
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.topology.PositionVector
;
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
...
...
@@ -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)
*/
@Override
public
Posi
tion
getPosition
(
public
Loca
tion
getPosition
(
SimHost
host
,
NetMeasurementDB
db
,
NetMeasurementDB
.
Host
hostMeta
)
{
...
...
@@ -59,7 +59,7 @@ public class SimpleEuclidianPositioning implements PositioningStrategy {
}
public
class
SimpleEuclidianPosition
extends
PositionVector
implements
Position
{
public
class
SimpleEuclidianPosition
extends
PositionVector
{
private
double
xPos
;
...
...
@@ -93,7 +93,8 @@ public class SimpleEuclidianPositioning implements PositioningStrategy {
* de.tud.kom.p2psim.api.network.NetPosition#getDistance(de.tud.kom.
* p2psim .api.network.NetPosition)
*/
public
double
getDistance
(
Position
ep
)
{
@Override
public
double
distanceTo
(
Location
ep
)
{
double
xDiff
=
0
;
double
yDiff
=
0
;
SimpleEuclidianPosition
point
=
(
SimpleEuclidianPosition
)
ep
;
...
...
@@ -118,11 +119,6 @@ public class SimpleEuclidianPositioning implements PositioningStrategy {
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
public
int
getTransmissionSize
()
{
return
16
;
// 2 * double
...
...
src/de/tud/kom/p2psim/impl/network/modular/st/positioning/TorusPositioning.java
View file @
0c80da45
...
...
@@ -23,12 +23,12 @@ package de.tud.kom.p2psim.impl.network.modular.st.positioning;
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.impl.network.modular.db.NetMeasurementDB
;
import
de.tud.kom.p2psim.impl.network.modular.st.PositioningStrategy
;
import
de.tud.kom.p2psim.impl.topology.PositionVector
;
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
...
...
@@ -48,7 +48,7 @@ public class TorusPositioning implements PositioningStrategy {
Random
rand
=
Randoms
.
getRandom
(
TorusPosition
.
class
);
@Override
public
Posi
tion
getPosition
(
SimHost
host
,
NetMeasurementDB
db
,
public
Loca
tion
getPosition
(
SimHost
host
,
NetMeasurementDB
db
,
NetMeasurementDB
.
Host
hostMeta
)
{
double
[]
rawPos
=
getRawTorusPositionFor
(
host
);
...
...
@@ -93,7 +93,7 @@ public class TorusPositioning implements PositioningStrategy {
this
.
halfTorusDimensionSize
=
torusDimensionSize
*
0.5d
;
}
public
class
TorusPosition
extends
PositionVector
implements
Position
{
public
class
TorusPosition
extends
PositionVector
{
TorusPosition
(
double
[]
rawPos
)
{
...
...
@@ -101,7 +101,7 @@ public class TorusPositioning implements PositioningStrategy {
}
@Override
public
double
getD
istance
(
Posi
tion
netPosition
)
{
public
double
d
istance
To
(
Loca
tion
netPosition
)
{
if
(!(
netPosition
instanceof
PositionVector
))
throw
new
AssertionError
(
"Can not calculate distances between different position classes: "
...
...
src/de/tud/kom/p2psim/impl/network/routed/RoutedNetLayer.java
View file @
0c80da45
...
...
@@ -28,7 +28,6 @@ import java.util.Map;
import
de.tud.kom.p2psim.api.analyzer.ConnectivityAnalyzer
;
import
de.tud.kom.p2psim.api.analyzer.MessageAnalyzer.Reason
;
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.SimHostComponent
;
import
de.tud.kom.p2psim.api.linklayer.LinkLayer
;
...
...
@@ -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.NetInterface
;
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
;
/**
...
...
@@ -548,7 +548,7 @@ public class RoutedNetLayer implements SimNetworkComponent, NetworkComponent,
}
@Override
public
Posi
tion
getNetPosition
()
{
public
Loca
tion
getNetPosition
()
{
return
host
.
getTopologyComponent
().
getRealPosition
();
}
...
...
src/de/tud/kom/p2psim/impl/network/simple/SimpleNetLayer.java
View file @
0c80da45
...
...
@@ -23,7 +23,6 @@
package
de.tud.kom.p2psim.impl.network.simple
;
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.network.BandwidthImpl
;
import
de.tud.kom.p2psim.api.network.NetMessage
;
...
...
@@ -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.Monitor
;
import
de.tudarmstadt.maki.simonstrator.api.component.network.NetID
;
import
de.tudarmstadt.maki.simonstrator.api.component.sensor.location.Location
;
public
class
SimpleNetLayer
extends
AbstractNetLayer
{
...
...
@@ -44,7 +44,7 @@ public class SimpleNetLayer extends AbstractNetLayer {
private
final
SimpleSubnet
subNet
;
public
SimpleNetLayer
(
SimHost
host
,
SimpleSubnet
subNet
,
SimpleNetID
netID
,
Posi
tion
netPosition
,
BandwidthImpl
bandwidth
)
{
Loca
tion
netPosition
,
BandwidthImpl
bandwidth
)
{
super
(
host
,
netID
,
bandwidth
,
netPosition
,
null
);
this
.
subNet
=
subNet
;
subNet
.
registerNetLayer
(
this
);
...
...
src/de/tud/kom/p2psim/impl/topology/DefaultTopologyComponent.java
View file @
0c80da45
...
...
@@ -28,7 +28,6 @@ import java.util.Random;
import
java.util.Set
;
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.linklayer.mac.MacAddress
;
import
de.tud.kom.p2psim.api.linklayer.mac.MacLayer
;
...
...
@@ -178,7 +177,7 @@ public class DefaultTopologyComponent implements TopologyComponent {
@Override
public
void
positionChanged
()
{
for
(
PositionListener
listener
:
positionListener
)
{
if
(
listener
.
getPosition
().
getD
istance
(
position
)
<
listener
if
(
listener
.
getPosition
().
d
istance
To
(
position
)
<
listener
.
getRadius
())
{
listener
.
reachedPosition
();
}
...
...
@@ -212,14 +211,6 @@ public class DefaultTopologyComponent implements TopologyComponent {
return
position
;
}
@Override
public
Position
getPosition
(
PositionAccuracy
accuracy
)
{
/*
* TODO :)
*/
return
position
;
}
@Override
public
Topology
getTopology
()
{
return
topology
;
...
...
src/de/tud/kom/p2psim/impl/topology/PositionVector.java
View file @
0c80da45
...
...
@@ -25,7 +25,6 @@ import java.util.Arrays;
import
com.vividsolutions.jts.geom.Coordinate
;
import
de.tud.kom.p2psim.api.common.Position
;
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
* @version 1.0, 04/25/2011
*/
public
class
PositionVector
implements
Position
,
Location
{
public
class
PositionVector
implements
Location
{
private
int
dimensions
;
...
...
@@ -255,55 +254,6 @@ public class PositionVector implements Position, Location {
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
public
int
getTransmissionSize
()
{
return
getDimensions
()
*
8
;
...
...
@@ -496,13 +446,39 @@ public class PositionVector implements Position, Location {
@Override
public
double
distanceTo
(
Location
dest
)
{
assert
(
dest
instanceof
PositionVector
);
return
this
.
getDistance
((
PositionVector
)
dest
);
if
(
dest
instanceof
PositionVector
)
{
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
public
float
bearingTo
(
Location
dest
)
{
assert
(
dest
instanceof
PositionVector
);
return
(
float
)
((
this
.
getAngle
((
PositionVector
)
dest
)
-
(
Math
.
PI
/
2
))
*
180
/
Math
.
PI
);
if
(
dest
instanceof
PositionVector
)
{
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"
);
}
}
}
src/de/tud/kom/p2psim/impl/topology/TopologyFactory.java
View file @
0c80da45
...
...
@@ -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.placement.GNPPlacement
;
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.Monitor
;
import
de.tudarmstadt.maki.simonstrator.api.Monitor.Level
;
...
...
@@ -88,7 +89,8 @@ public class TopologyFactory implements HostComponentFactory {
@XMLConfigurableConstructor
({
"worldX"
,
"worldY"
})
public
TopologyFactory
(
double
worldX
,
double
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
...
...
src/de/tud/kom/p2psim/impl/topology/movement/AbstractMovementModel.java
View file @
0c80da45
...
...
@@ -26,11 +26,12 @@ import java.util.List;
import
java.util.Random
;
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.MovementModel
;
import
de.tud.kom.p2psim.api.topology.movement.MovementSupported
;
import
de.tud.kom.p2psim.impl.topology.PositionVector
;
import
de.tud
.kom.p2psim.impl.topology.Topology
;
import
de.tud
armstadt.maki.simonstrator.api.Binder
;
import
de.tudarmstadt.maki.simonstrator.api.Event
;
import
de.tudarmstadt.maki.simonstrator.api.EventHandler
;
import
de.tudarmstadt.maki.simonstrator.api.Randoms
;
...
...
@@ -87,7 +88,8 @@ public abstract class AbstractMovementModel implements MovementModel {
@Override
public
void
addComponent
(
MovementSupported
component
)
{
if
(
worldDimensions
==
null
)
{
worldDimensions
=
Topology
.
getWorldDimension
();
worldDimensions
=
Binder
.
getComponentOrNull
(
Topology
.
class
)
.
getWorldDimensions
();
}
components
.
add
(
component
);
}
...
...
src/de/tud/kom/p2psim/impl/topology/movement/AbstractWaypointMovementModel.java
View file @
0c80da45
...
...
@@ -231,7 +231,7 @@ public abstract class AbstractWaypointMovementModel implements MovementModel {
private
boolean
reachedPosition
(
MovementSupported
comp
,
PositionVector
dst
)
{
PositionVector
pos
=
comp
.
getRealPosition
();
double
distance
=
pos
.
getD
istance
(
dst
);
double
distance
=
pos
.
d
istance
To
(
dst
);
// FIXME: Better detection?
...
...
src/de/tud/kom/p2psim/impl/topology/movement/CsvMovement.java
View file @
0c80da45
...
...
@@ -27,26 +27,19 @@ import java.util.LinkedHashMap;
import
java.util.LinkedList
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Random
;
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.SimHostComponent
;
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.MovementModel
;
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.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.attraction.AttractionPoint
;
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.Randoms
;
import
de.tudarmstadt.maki.simonstrator.api.Binder
;
import
de.tudarmstadt.maki.simonstrator.api.Time
;
import
de.tudarmstadt.maki.simonstrator.api.util.XMLConfigurableConstructor
;
...
...
@@ -82,7 +75,8 @@ public class CsvMovement extends AbstractMovementModel {
@XMLConfigurableConstructor
({
"movementPointsFile"
,
"minMovementSpeed"
,
"maxMovementSpeed"
})
public
CsvMovement
(
String
movementPointsFile
,
double
minMovementSpeed
,
double
maxMovementSpeed
)
{
super
();
this
.
worldDimensions
=
Topology
.
getWorldDimension
();
this
.
worldDimensions
=
Binder
.
getComponentOrNull
(
Topology
.
class
)
.
getWorldDimensions
();
this
.
file
=
movementPointsFile
;
this
.
readPathInfos
=
new
LinkedList
<
LinkedList
<
CsvPathInfo
>>();
this
.
stateInfo
=
new
LinkedHashMap
<
MovementSupported
,
CsvMovementInfo
>();
...
...
@@ -144,7 +138,7 @@ public class CsvMovement extends AbstractMovementModel {
double
distancePerMoveOperation
=
pathInfo
.
getSpeed
()
*
getTimeBetweenMoveOperations
()
/
Time
.
SECOND
;
double
distance
=
actPos
.
getD
istance
(
targetPos
);
double
distance
=
actPos
.
d
istance
To
(
targetPos
);
steps
=
(
int
)
Math
.
round
(
distance
/
distancePerMoveOperation
);
...
...
src/de/tud/kom/p2psim/impl/topology/movement/SLAWMovementModel.java
View file @
0c80da45
...
...
@@ -162,7 +162,7 @@ public class SLAWMovementModel extends AbstractWaypointMovementModel {
mi
.
wlist
=
get_waypoint_list
(
mi
.
clts
);
for
(
int
i
=
0
;
i
<
mi
.
wlist
.
length
;
i
++)
{
if
(!
mi
.
wlist
[
i
].
is_visited
)
{
if
(
source
.
getD
istance
(
mi
.
wlist
[
i
].
pos
)
!=
0.0
)
{
if
(
source
.
d
istance
To
(
mi
.
wlist
[
i
].
pos
)
!=
0.0
)
{
count
++;
}
else
{
mi
.
wlist
[
i
].
is_visited
=
true
;
...
...
@@ -182,7 +182,7 @@ public class SLAWMovementModel extends AbstractWaypointMovementModel {
// get distance from source to all remaining waypoints
double
[]
dist
=
new
double
[
not_visited
.
length
];
for
(
int
i
=
0
;
i
<
not_visited
.
length
;
i
++)
{
dist
[
i
]
=
source
.
getD
istance
(
not_visited
[
i
].
pos
);
dist
[
i
]
=
source
.
d
istance
To
(
not_visited
[
i
].
pos
);
}
double
[]
weights
=
new
double
[
not_visited
.
length
];
...
...
@@ -680,7 +680,7 @@ public class SLAWMovementModel extends AbstractWaypointMovementModel {
for
(
int
i
=
0
;
i
<
all_points
.
size
();
i
++)
{
PositionVector
new_pos
=
all_points
.
elementAt
(
i
);
if
(
init_pos
.
getD
istance
(
new_pos
)
<=
this
.
cluster_range
)
{
if
(
init_pos
.
d
istance
To
(
new_pos
)
<=
this
.
cluster_range
)
{
new_points
.
add
(
new_pos
);
members
.
add
(
new_pos
);
all_points
.
remove
(
i
--);
...
...
src/de/tud/kom/p2psim/impl/topology/movement/TargetMovement.java
View file @
0c80da45
...
...
@@ -59,7 +59,7 @@ public class TargetMovement extends AbstractMovementModel {
PositionVector
rVec
=
new
PositionVector
(
x
,
y
);
rVec
=
rVec
.
minus
(
pos
);
double
length
=
rVec
.
getD
istance
(
new
PositionVector
(
0
,
0
));
double
length
=
rVec
.
d
istance
To
(
new
PositionVector
(
0
,
0
));
PositionVector
vec
;
if
(
length
>
distance
)
{
...
...
src/de/tud/kom/p2psim/impl/topology/movement/local/LinearMovement.java
View file @
0c80da45
...
...
@@ -37,7 +37,8 @@ public class LinearMovement extends AbstractLocalMovementStrategy {
public
Either
<
PositionVector
,
Boolean
>
nextPosition
(
MovementSupported
comp
,
PositionVector
destination
)
{
PositionVector
newPosition
;
if
(
destination
.
getDistance
(
comp
.
getRealPosition
())
<
getMovementSpeed
(
comp
))
{
if
(
destination
.
distanceTo
(
comp
.
getRealPosition
())
<
getMovementSpeed
(
comp
))
{
newPosition
=
destination
.
clone
();
}
else
{
newPosition
=
comp
.
getRealPosition
().
moveStep
(
destination
,
getMovementSpeed
(
comp
));
...
...
src/de/tud/kom/p2psim/impl/topology/movement/local/OnlineMapQuestMovement.java
View file @
0c80da45
...
...
@@ -25,6 +25,7 @@ import java.io.InputStream;
import
java.net.MalformedURLException
;
import
java.net.URL
;
import
java.util.HashMap
;
import
org.apache.commons.io.IOUtils
;
import
org.json.JSONArray
;
import
org.json.JSONException
;
...
...
@@ -34,12 +35,13 @@ import com.graphhopper.util.PointList;
import
com.graphhopper.util.shapes.GHPoint
;
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.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.util.Either
;
import
de.tud.kom.p2psim.impl.util.Left
;
import
de.tudarmstadt.maki.simonstrator.api.Binder
;
/**
* This movement strategy uses the data from MapQuest
...
...
@@ -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
public
OnlineMapQuestMovement
()
{
this
.
worldDimensions
=
Topology
.
getWorldDimension
();
this
.
worldDimensions
=
Binder
.
getComponentOrNull
(
Topology
.
class
)
.
getWorldDimensions
();
latLeft
=
GPSCalculation
.
getLatLower
();
latRight
=
GPSCalculation
.
getLatUpper
();
lonLeft
=
GPSCalculation
.
getLonLeft
();
...
...
@@ -74,7 +77,8 @@ public class OnlineMapQuestMovement extends AbstractLocalMovementStrategy {
PositionVector
destination
)
{
PositionVector
newPosition
=
null
;
if
(
destination
.
getDistance
(
comp
.
getRealPosition
())
<
getMovementSpeed
(
comp
))
{
if
(
destination
.
distanceTo
(
comp
.
getRealPosition
())
<
getMovementSpeed
(
comp
))
{
newPosition
=
destination
.
clone
();
}
else
{
//if not set already for this node or new destination is different than last one
...
...
src/de/tud/kom/p2psim/impl/topology/movement/local/RealWorldStreetsMovement.java
View file @
0c80da45
...
...
@@ -31,12 +31,13 @@ import com.graphhopper.util.PointList;
import
com.graphhopper.util.shapes.GHPoint
;
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.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.util.Either
;
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
...
...
@@ -68,7 +69,8 @@ public class RealWorldStreetsMovement extends AbstractLocalMovementStrategy {
private
double
tolerance
=
1
;
public
RealWorldStreetsMovement
()
{
this
.
worldDimensions
=
Topology
.
getWorldDimension
();
this
.
worldDimensions
=
Binder
.
getComponentOrNull
(
Topology
.
class
)
.
getWorldDimensions
();
latLeft
=
GPSCalculation
.
getLatLower
();
latRight
=
GPSCalculation
.
getLatUpper
();
lonLeft
=
GPSCalculation
.
getLonLeft
();
...
...
@@ -90,7 +92,8 @@ public class RealWorldStreetsMovement extends AbstractLocalMovementStrategy {
if
(!
init
)
init
();
PositionVector
newPosition
=
null
;
if
(
destination
.
getDistance
(
comp
.
getRealPosition
())
<
getMovementSpeed
(
comp
))
{
if
(
destination
.
distanceTo
(
comp
.
getRealPosition
())
<
getMovementSpeed
(
comp
))
{
newPosition
=
destination
.
clone
();
}
else
{
//if not set already for this node or new destination is different than last one
...
...
src/de/tud/kom/p2psim/impl/topology/movement/local/ShortestPathWaypointMovement.java
View file @
0c80da45
...
...
@@ -160,8 +160,7 @@ public class ShortestPathWaypointMovement extends AbstractLocalMovementStrategy
*/
protected
boolean
destinationWaypointReached
(
Waypoint
currentWaypoint
,
PositionVector
newPosition
,
double
speed
)
{
double
distance
=
newPosition
.
getDistance
(
currentWaypoint
.
getPosition
());
double
distance
=
newPosition
.
distanceTo
(
currentWaypoint
.
getPosition
());
return
(
distance
<
speed
*
2
);
}
...
...
Prev
1
2
3
4
Next
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment