vector3D.cpp
Go to the documentation of this file.00001
00015 #include <dlrNumeric/vector3D.h>
00016
00017 namespace dlr {
00018
00019 namespace numeric {
00020
00021 Vector3D
00022 operator+(const Vector3D& vector0, const Vector3D& vector1)
00023 {
00024 return Vector3D(vector0.x() + vector1.x(),
00025 vector0.y() + vector1.y(),
00026 vector0.z() + vector1.z());
00027 }
00028
00029 Vector3D
00030 operator-(const Vector3D& vector0, const Vector3D& vector1)
00031 {
00032 return Vector3D(vector0.x() - vector1.x(),
00033 vector0.y() - vector1.y(),
00034 vector0.z() - vector1.z());
00035 }
00036
00037 Vector3D
00038 operator*(const Vector3D& vector0, const Vector3D& vector1)
00039 {
00040 return Vector3D(vector0.x() * vector1.x(),
00041 vector0.y() * vector1.y(),
00042 vector0.z() * vector1.z());
00043 }
00044
00045 Vector3D
00046 operator/(const Vector3D& vector0, const Vector3D& vector1)
00047 {
00048 return Vector3D(vector0.x() / vector1.x(),
00049 vector0.y() / vector1.y(),
00050 vector0.z() / vector1.z());
00051 }
00052
00053 Vector3D
00054 operator+(const Vector3D& vector0, double scalar)
00055 {
00056 return Vector3D(vector0.x() + scalar,
00057 vector0.y() + scalar,
00058 vector0.z() + scalar);
00059 }
00060
00061 Vector3D
00062 operator-(const Vector3D& vector0, double scalar)
00063 {
00064 return Vector3D(vector0.x() - scalar,
00065 vector0.y() - scalar,
00066 vector0.z() - scalar);
00067 }
00068
00069 Vector3D
00070 operator*(const Vector3D& vector0, double scalar)
00071 {
00072 return Vector3D(vector0.x() * scalar,
00073 vector0.y() * scalar,
00074 vector0.z() * scalar);
00075 }
00076
00077 Vector3D
00078 operator/(const Vector3D& vector0, double scalar)
00079 {
00080 return Vector3D(vector0.x() / scalar,
00081 vector0.y() / scalar,
00082 vector0.z() / scalar);
00083 }
00084
00085 bool
00086 operator==(const Vector3D& vector0, const Vector3D& vector1)
00087 {
00088 return((vector0.x() == vector1.x()) &&
00089 (vector0.y() == vector1.y()) &&
00090 (vector0.z() == vector1.z()));
00091 }
00092
00093 bool
00094 operator!=(const Vector3D& vector0, const Vector3D& vector1)
00095 {
00096 return(!operator==(vector0, vector1));
00097 }
00098
00099 std::ostream&
00100 operator<<(std::ostream& stream, const Vector3D& vector0)
00101 {
00102 stream << "Vector3D(" << vector0.x() << ", " << vector0.y() << ", "
00103 << vector0.z() << ")";
00104 return stream;
00105 }
00106
00107 std::istream&
00108 operator>>(std::istream& stream, Vector3D& vector0)
00109 {
00110 const char intro[] = "Vector3D(";
00111 const char intermission[] = ",";
00112 const char outro[] = ")";
00113 double x, y, z;
00114 char inChar;
00115 size_t index;
00116
00117 for(index = 0; index < strlen(intro); ++index) {
00118 inChar = 0;
00119 stream >> inChar;
00120 if(inChar != intro[index]) {
00121
00122
00123 stream.clear(std::ios::failbit);
00124 return stream;
00125 }
00126 }
00127 stream >> x;
00128 for(index = 0; index < strlen(intermission); ++index) {
00129 inChar = 0;
00130 stream >> inChar;
00131 if(inChar != intermission[index]) {
00132
00133 stream.clear(std::ios::failbit);
00134 return stream;
00135 }
00136 }
00137 stream >> y;
00138 for(index = 0; index < strlen(intermission); ++index) {
00139 inChar = 0;
00140 stream >> inChar;
00141 if(inChar != intermission[index]) {
00142
00143 stream.clear(std::ios::failbit);
00144 return stream;
00145 }
00146 }
00147 stream >> z;
00148 for(index = 0; index < strlen(outro); ++index) {
00149 inChar = 0;
00150 stream >> inChar;
00151 if(inChar != outro[index]) {
00152
00153 stream.clear(std::ios::failbit);
00154 return stream;
00155 }
00156 }
00157 if(stream) {
00158 vector0.setValue(x, y, z);
00159 }
00160 return stream;
00161 }
00162
00163 }
00164
00165 }