Public Member Functions | Protected Member Functions | Protected Attributes

LinearMobility Class Reference
[mobility - modules handling the mobility of the hosts]

Linear movement model. See NED file for more info. More...

#include <LinearMobility.h>

Inherits BaseMobility.

Collaboration diagram for LinearMobility:
Collaboration graph
[legend]

List of all members.

Public Member Functions

virtual void initialize (int)
 Initializes mobility model parameters.

Protected Member Functions

virtual void makeMove ()
 Move the host.
virtual void fixIfHostGetsOutside ()
 Should be redefined in subclasses.

Protected Attributes

double angle
 angle of linear motion
double acceleration
 acceleration of linear motion
Coord stepTarget
 always stores the last step for position display update

Detailed Description

Linear movement model. See NED file for more info.

This mobility module expects a torus as playground ("useTorus" Parameter of BaseWorldUtility module).

NOTE: Does not yet support 3-dimensional movement.

Author:
Emin Ilker Cetinbas

Definition at line 36 of file LinearMobility.h.


Member Function Documentation

void LinearMobility::fixIfHostGetsOutside (  )  [protected, virtual]

Should be redefined in subclasses.

Should invoke handleIfOutside() and pass the references to the parameters to be modified.

Additional action after border handling (such as choosing a new target position if the BorderPolicy is PLACERANDOMLY) should be implemented here.

See also:
HandleIfOutside

Reimplemented from BaseMobility.

Definition at line 56 of file LinearMobility.cc.

References angle, BaseMobility::handleIfOutside(), stepTarget, BaseWorldUtility::use2D(), BaseMobility::world, and BaseMobility::WRAP.

Referenced by makeMove().

{
    Coord dummy(world->use2D());
    handleIfOutside(WRAP, stepTarget, dummy, dummy, angle);
}

void LinearMobility::makeMove (  )  [protected, virtual]

Move the host.

Move the host if the destination is not reached yet. Otherwise calculate a new random position

Reimplemented from BaseMobility.

Definition at line 67 of file LinearMobility.cc.

References acceleration, angle, fixIfHostGetsOutside(), Move::getSpeed(), Move::getStartPos(), Coord::getX(), Coord::getY(), Coord::info(), Move::info(), BaseMobility::move, Move::setDirectionByTarget(), Move::setSpeed(), Move::setStart(), Coord::setX(), Coord::setY(), stepTarget, and BaseMobility::updateInterval.

{
  debugEV << "start makeMove " << move.info() << endl;

    move.setStart(stepTarget, simTime());

    stepTarget.setX(move.getStartPos().getX() + move.getSpeed() * cos(PI * angle / 180) * updateInterval.dbl());
    stepTarget.setY(move.getStartPos().getY() + move.getSpeed() * sin(PI * angle / 180) * updateInterval.dbl());

    move.setDirectionByTarget(stepTarget);

    debugEV << "new stepTarget: " << stepTarget.info() << endl;

    // accelerate
    move.setSpeed(move.getSpeed() + acceleration * updateInterval.dbl());

    fixIfHostGetsOutside();
}


The documentation for this class was generated from the following files: