A Discrete-Event Network Simulator
API
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
mobility-model.h
Go to the documentation of this file.
1 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2 /*
3  * Copyright (c) 2006,2007 INRIA
4  *
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License version 2 as
7  * published by the Free Software Foundation;
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program; if not, write to the Free Software
16  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17  *
18  * Author: Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
19  */
20 #ifndef MOBILITY_MODEL_H
21 #define MOBILITY_MODEL_H
22 
23 #include "ns3/vector.h"
24 #include "ns3/object.h"
25 #include "ns3/traced-callback.h"
26 
27 namespace ns3 {
28 
39 class MobilityModel : public Object
40 {
41 public:
42  static TypeId GetTypeId (void);
43  MobilityModel ();
44  virtual ~MobilityModel () = 0;
45 
49  Vector GetPosition (void) const;
53  void SetPosition (const Vector &position);
57  Vector GetVelocity (void) const;
62  double GetDistanceFrom (Ptr<const MobilityModel> position) const;
67  double GetRelativeSpeed (Ptr<const MobilityModel> other) const;
76  int64_t AssignStreams (int64_t stream);
77 
78 protected:
83  void NotifyCourseChange (void) const;
84 private:
91  virtual Vector DoGetPosition (void) const = 0;
98  virtual void DoSetPosition (const Vector &position) = 0;
105  virtual Vector DoGetVelocity (void) const = 0;
111  virtual int64_t DoAssignStreams (int64_t start);
112 
118 
119 };
120 
121 } // namespace ns3
122 
123 #endif /* MOBILITY_MODEL_H */
int64_t AssignStreams(int64_t stream)
Assign a fixed random variable stream number to the random variables used by this model...
TracedCallback< Ptr< const MobilityModel > > m_courseChangeTrace
Used to alert subscribers that a change in direction, velocity, or position has occurred.
smart pointer class similar to boost::intrusive_ptr
Definition: ptr.h:59
double GetDistanceFrom(Ptr< const MobilityModel > position) const
virtual Vector DoGetPosition(void) const =0
forward calls to a chain of CallbackAn ns3::TracedCallback has almost exactly the same API as a norma...
Vector GetPosition(void) const
virtual ~MobilityModel()=0
a 3d vector
Definition: vector.h:31
Vector GetVelocity(void) const
Keep track of the current position and velocity of an object.
void NotifyCourseChange(void) const
Must be invoked by subclasses when the course of the position changes to notify course change listene...
static TypeId GetTypeId(void)
void SetPosition(const Vector &position)
virtual void DoSetPosition(const Vector &position)=0
a base class which provides memory management and object aggregation
Definition: object.h:63
virtual Vector DoGetVelocity(void) const =0
virtual int64_t DoAssignStreams(int64_t start)
The default implementation does nothing but return the passed-in parameter.
a unique identifier for an interface.
Definition: type-id.h:49
double GetRelativeSpeed(Ptr< const MobilityModel > other) const