00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00024
00025
00029 template <typename T>
00030 Vector3<T>::Vector3() :
00031 x(0),
00032 y(0),
00033 z(0)
00034 {
00035
00036 }
00037
00038
00042 template <typename T>
00043 Vector3<T>::Vector3(T X, T Y, T Z) :
00044 x(X),
00045 y(Y),
00046 z(Z)
00047 {
00048
00049 }
00050
00051
00055 template <typename T>
00056 Vector3<T> operator -(const Vector3<T>& V)
00057 {
00058 return Vector3<T>(-V.x, -V.y, -V.z);
00059 }
00060
00061
00065 template <typename T>
00066 Vector3<T>& operator +=(Vector3<T>& V1, const Vector3<T>& V2)
00067 {
00068 V1.x += V2.x;
00069 V1.y += V2.y;
00070 V1.z += V2.z;
00071
00072 return V1;
00073 }
00074
00075
00079 template <typename T>
00080 Vector3<T>& operator -=(Vector3<T>& V1, const Vector3<T>& V2)
00081 {
00082 V1.x -= V2.x;
00083 V1.y -= V2.y;
00084 V1.z -= V2.z;
00085
00086 return V1;
00087 }
00088
00089
00093 template <typename T>
00094 Vector3<T> operator +(const Vector3<T>& V1, const Vector3<T>& V2)
00095 {
00096 return Vector3<T>(V1.x + V2.x, V1.y + V2.y, V1.z + V2.z);
00097 }
00098
00099
00103 template <typename T>
00104 Vector3<T> operator -(const Vector3<T>& V1, const Vector3<T>& V2)
00105 {
00106 return Vector3<T>(V1.x - V2.x, V1.y - V2.y, V1.z - V2.z);
00107 }
00108
00109
00113 template <typename T>
00114 Vector3<T> operator *(const Vector3<T>& V, T X)
00115 {
00116 return Vector3<T>(V.x * X, V.y * X, V.z * X);
00117 }
00118
00119
00123 template <typename T>
00124 Vector3<T> operator *(T X, const Vector3<T>& V)
00125 {
00126 return Vector3<T>(V.x * X, V.y * X, V.z * X);
00127 }
00128
00129
00133 template <typename T>
00134 Vector3<T>& operator *=(Vector3<T>& V, T X)
00135 {
00136 V.x *= X;
00137 V.y *= X;
00138 V.z *= X;
00139
00140 return V;
00141 }
00142
00143
00147 template <typename T>
00148 Vector3<T> operator /(const Vector3<T>& V, T X)
00149 {
00150 return Vector3<T>(V.x / X, V.y / X, V.z / X);
00151 }
00152
00153
00157 template <typename T>
00158 Vector3<T>& operator /=(Vector3<T>& V, T X)
00159 {
00160 V.x /= X;
00161 V.y /= X;
00162 V.z /= X;
00163
00164 return V;
00165 }
00166
00167
00171 template <typename T>
00172 bool operator ==(const Vector3<T>& V1, const Vector3<T>& V2)
00173 {
00174 return (V1.x == V2.x) && (V1.y == V2.y) && (V1.z == V2.z);
00175 }
00176
00177
00181 template <typename T>
00182 bool operator !=(const Vector3<T>& V1, const Vector3<T>& V2)
00183 {
00184 return (V1.x != V2.x) || (V1.y != V2.y) || (V1.z != V2.z);
00185 }