Back to index

libsfml  1.6+dfsg2
Vector3.inl
Go to the documentation of this file.
00001 
00002 //
00003 // SFML - Simple and Fast Multimedia Library
00004 // Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
00005 //
00006 // This software is provided 'as-is', without any express or implied warranty.
00007 // In no event will the authors be held liable for any damages arising from the use of this software.
00008 //
00009 // Permission is granted to anyone to use this software for any purpose,
00010 // including commercial applications, and to alter it and redistribute it freely,
00011 // subject to the following restrictions:
00012 //
00013 // 1. The origin of this software must not be misrepresented;
00014 //    you must not claim that you wrote the original software.
00015 //    If you use this software in a product, an acknowledgment
00016 //    in the product documentation would be appreciated but is not required.
00017 //
00018 // 2. Altered source versions must be plainly marked as such,
00019 //    and must not be misrepresented as being the original software.
00020 //
00021 // 3. This notice may not be removed or altered from any source distribution.
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 }