00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #include "vector.h"
00021 #include "ns3/fatal-error.h"
00022 #include <cmath>
00023 #include <sstream>
00024
00025 namespace ns3 {
00026
00027 ATTRIBUTE_HELPER_CPP (Vector);
00028
00029
00030 Vector::Vector (double _x, double _y, double _z)
00031 : x (_x),
00032 y (_y),
00033 z (_z)
00034 {}
00035
00036 Vector::Vector ()
00037 : x (0.0),
00038 y (0.0),
00039 z (0.0)
00040 {}
00041
00042 double
00043 CalculateDistance (const Vector &a, const Vector &b)
00044 {
00045 double dx = b.x - a.x;
00046 double dy = b.y - a.y;
00047 double dz = b.z - a.z;
00048 double distance = std::sqrt (dx * dx + dy * dy + dz * dz);
00049 return distance;
00050 }
00051
00052 std::ostream &operator << (std::ostream &os, const Vector &vector)
00053 {
00054 os << vector.x << ":" << vector.y << ":" << vector.z;
00055 return os;
00056 }
00057 std::istream &operator >> (std::istream &is, Vector &vector)
00058 {
00059 char c1, c2;
00060 is >> vector.x >> c1 >> vector.y >> c2 >> vector.z;
00061 if (c1 != ':' ||
00062 c2 != ':')
00063 {
00064 is.setstate (std::ios_base::failbit);
00065 }
00066 return is;
00067 }
00068
00069 }