src/mobility/box.cc
author Dan Broyles <muxman@sbcglobal.net>
Wed, 03 Mar 2010 10:58:27 -0500
changeset 6100 38066d5d262b
permissions -rw-r--r--
Merge Gauss Markov Mobility Model
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
6100
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
     1
/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
     2
/*
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
     3
 * Copyright (c) 2009 Dan Broyles
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
     4
 *
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
     5
 * This program is free software; you can redistribute it and/or modify
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
     6
 * it under the terms of the GNU General Public License version 2 as
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
     7
 * published by the Free Software Foundation;
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
     8
 *
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
     9
 * This program is distributed in the hope that it will be useful,
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
    10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
    11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
    12
 * GNU General Public License for more details.
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
    13
 *
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
    14
 * You should have received a copy of the GNU General Public License
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
    15
 * along with this program; if not, write to the Free Software
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
    16
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
    17
 *
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
    18
 * Author: Dan Broyles <dbroyl01@ku.edu>
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
    19
 */
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
    20
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
    21
#include "box.h"
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
    22
#include "ns3/vector.h"
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
    23
#include "ns3/assert.h"
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
    24
#include "ns3/fatal-error.h"
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
    25
#include <cmath>
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
    26
#include <algorithm>
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
    27
#include <sstream> 
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
    28
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
    29
namespace ns3 {
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
    30
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
    31
Box::Box (double _xMin, double _xMax,
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
    32
          double _yMin, double _yMax,
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
    33
          double _zMin, double _zMax)
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
    34
  : xMin (_xMin),
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
    35
    xMax (_xMax),
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
    36
    yMin (_yMin),
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
    37
    yMax (_yMax),
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
    38
    zMin (_zMin),
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
    39
    zMax (_zMax)
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
    40
{}
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
    41
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
    42
Box::Box ()
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
    43
  : xMin (0.0),
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
    44
    xMax (0.0),
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
    45
    yMin (0.0),
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
    46
    yMax (0.0),
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
    47
    zMin (0.0),
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
    48
    zMax (0.0)
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
    49
{}
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
    50
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
    51
bool 
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
    52
Box::IsInside (const Vector &position) const
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
    53
{
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
    54
  return 
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
    55
    position.x <= this->xMax && position.x >= this->xMin &&
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
    56
    position.y <= this->yMax && position.y >= this->yMin &&
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
    57
    position.z <= this->zMax && position.z >= this->zMin;
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
    58
}
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
    59
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
    60
Box::Side 
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
    61
Box::GetClosestSide (const Vector &position) const
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
    62
{
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
    63
  double xMinDist = std::abs (position.x - this->xMin);
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
    64
  double xMaxDist = std::abs (this->xMax - position.x);
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
    65
  double yMinDist = std::abs (position.y - this->yMin);
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
    66
  double yMaxDist = std::abs (this->yMax - position.y);
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
    67
  double zMinDist = std::abs (position.z - this->zMin);
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
    68
  double zMaxDist = std::abs (this->zMax - position.z);
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
    69
  double minX = std::min (xMinDist, xMaxDist);
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
    70
  double minY = std::min (yMinDist, yMaxDist);
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
    71
  double minZ = std::min (zMinDist, zMaxDist);
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
    72
  if (minX < minY && minX < minZ)
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
    73
    {
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
    74
      if (xMinDist < xMaxDist)
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
    75
        {
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
    76
          return LEFT;
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
    77
        }
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
    78
      else
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
    79
        {
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
    80
          return RIGHT;
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
    81
        }
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
    82
    }
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
    83
  else if (minY < minZ)
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
    84
    {
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
    85
      if (yMinDist < yMaxDist)
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
    86
        {
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
    87
          return BOTTOM;
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
    88
        }
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
    89
      else
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
    90
        {
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
    91
          return TOP;
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
    92
        }
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
    93
    }
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
    94
  else
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
    95
    {
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
    96
      if (zMinDist < zMaxDist)
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
    97
        {
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
    98
          return DOWN;
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
    99
        }
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
   100
      else
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
   101
        {
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
   102
          return UP;
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
   103
        }
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
   104
    }
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
   105
}
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
   106
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
   107
Vector
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
   108
Box::CalculateIntersection (const Vector &current, const Vector &speed) const
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
   109
{
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
   110
  NS_ASSERT (IsInside (current));
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
   111
  double xMaxY = current.y + (this->xMax - current.x) / speed.x * speed.y;
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
   112
  double xMinY = current.y + (this->xMin - current.x) / speed.x * speed.y;
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
   113
  double yMaxX = current.x + (this->yMax - current.y) / speed.y * speed.x;
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
   114
  double yMinX = current.x + (this->yMin - current.y) / speed.y * speed.x;
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
   115
  bool xMaxYOk = (xMaxY <= this->yMax && xMaxY >= this->yMin);
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
   116
  bool xMinYOk = (xMinY <= this->yMax && xMinY >= this->yMin);
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
   117
  bool yMaxXOk = (yMaxX <= this->xMax && yMaxX >= this->xMin);
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
   118
  bool yMinXOk = (yMinX <= this->xMax && yMinX >= this->xMin);
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
   119
  if (xMaxYOk && speed.x >= 0)
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
   120
    {
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
   121
      return Vector (this->xMax, xMaxY, 0.0);
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
   122
    }
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
   123
  else if (xMinYOk && speed.x <= 0)
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
   124
    {
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
   125
      return Vector (this->xMin, xMinY, 0.0);
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
   126
    }
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
   127
  else if (yMaxXOk && speed.y >= 0)
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
   128
    {
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
   129
      return Vector (yMaxX, this->yMax, 0.0);
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
   130
    }
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
   131
  else if (yMinXOk && speed.y <= 0)
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
   132
    {
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
   133
      return Vector (yMinX, this->yMin, 0.0);
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
   134
    }
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
   135
  else
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
   136
    {
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
   137
      NS_ASSERT (false);
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
   138
      // quiet compiler
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
   139
      return Vector (0.0, 0.0, 0.0);
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
   140
    }
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
   141
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
   142
}
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
   143
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
   144
ATTRIBUTE_HELPER_CPP (Box);
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
   145
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
   146
std::ostream &
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
   147
operator << (std::ostream &os, const Box &box)
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
   148
{
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
   149
  os << box.xMin << "|" << box.xMax << "|" << box.yMin << "|" << box.yMax << "|" << box.zMin << "|" << box.zMax;
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
   150
  return os;
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
   151
}
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
   152
std::istream &
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
   153
operator >> (std::istream &is, Box &box)
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
   154
 {
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
   155
  char c1, c2, c3, c4, c5;
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
   156
  is >> box.xMin >> c1 >> box.xMax >> c2 >> box.yMin >> c3 >> box.yMax >> c4 >> box.zMin >> c5 >> box.zMax;
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
   157
  if (c1 != '|' ||
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
   158
      c2 != '|' ||
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
   159
      c3 != '|' ||
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
   160
      c4 != '|' ||
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
   161
      c5 != '|')
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
   162
    {
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
   163
      is.setstate (std::ios_base::failbit);
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
   164
    }
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
   165
  return is;
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
   166
}
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
   167
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
   168
38066d5d262b Merge Gauss Markov Mobility Model
Dan Broyles <muxman@sbcglobal.net>
parents:
diff changeset
   169
} // namespace ns3