00001
00026
00027
00028
00029
00030
00034 INLINE VECTOR3 operator+( const VECTOR3& v1, const VECTOR3& v2 )
00035 {
00036 return VECTOR3( v1.x + v2.x,
00037 v1.y + v2.y,
00038 v1.z + v2.z );
00039 }
00040
00041 INLINE VECTOR3 operator-( const VECTOR3& v1, const VECTOR3& v2 )
00042 {
00043 return VECTOR3( v1.x - v2.x,
00044 v1.y - v2.y,
00045 v1.z - v2.z );
00046 }
00047
00048 INLINE VECTOR3 operator*( const VECTOR3& v1, const VECTOR3& v2 )
00049 {
00050 return VECTOR3( v1.x * v2.x,
00051 v1.y * v2.y,
00052 v1.z * v2.z );
00053 }
00054
00055 INLINE VECTOR3 operator/( const VECTOR3& v1, const VECTOR3& v2 )
00056 {
00057 return VECTOR3( v1.x / v2.x,
00058 v1.y / v2.y,
00059 v1.z / v2.z );
00060 }
00061
00065 INLINE VECTOR3 operator+( const VECTOR3& v, fp f )
00066 {
00067 return VECTOR3( v.x + f,
00068 v.y + f,
00069 v.z + f );
00070 }
00071
00072 INLINE VECTOR3 operator-( const VECTOR3& v, fp f )
00073 {
00074 return VECTOR3( v.x - f,
00075 v.y - f,
00076 v.z - f );
00077 }
00078
00079 INLINE VECTOR3 operator*( const VECTOR3& v, fp f )
00080 {
00081 return VECTOR3( v.x * f,
00082 v.y * f,
00083 v.z * f );
00084 }
00085
00086 INLINE VECTOR3 operator/( const VECTOR3& v, fp f )
00087 {
00088 return VECTOR3( v.x / f,
00089 v.y / f,
00090 v.z / f );
00091 }
00092
00096 INLINE ostream&
00097 operator<<( ostream& strm, const VECTOR3& v )
00098 {
00099 ios::fmtflags savedFlags = strm.flags();
00100 strm << '('
00101 << OMANIP_FIELD(8) << v.x << ','
00102 << OMANIP_FIELD(8) << v.y << ','
00103 << OMANIP_FIELD(8) << v.z << ')';
00104 strm.flags(savedFlags);
00105 return strm;
00106 }