// Wild Magic Source Code // David Eberly // http://www.geometrictools.com // Copyright (c) 1998-2007 // // This library is free software; you can redistribute it and/or modify it // under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation; either version 2.1 of the License, or (at // your option) any later version. The license is available for reading at // either of the locations: // http://www.gnu.org/copyleft/lgpl.html // http://www.geometrictools.com/License/WildMagicLicense.pdf // The license applies to versions 0 through 4 of Wild Magic. // // Version: 4.0.0 (2006/06/28) #ifndef WM4TRVECTOR_H #define WM4TRVECTOR_H #include "Wm4FoundationLIB.h" #include "Wm4TRational.h" namespace Wm4 { template class TRVector { public: // construction TRVector (); TRVector (const TRVector& rkV); // coordinate access operator const TRational* () const; operator TRational* (); TRational operator[] (int i) const; TRational& operator[] (int i); // assignment TRVector& operator= (const TRVector& rkV); // comparison bool operator== (const TRVector& rkV) const; bool operator!= (const TRVector& rkV) const; bool operator< (const TRVector& rkV) const; bool operator<= (const TRVector& rkV) const; bool operator> (const TRVector& rkV) const; bool operator>= (const TRVector& rkV) const; // arithmetic operations TRVector operator+ (const TRVector& rkV) const; TRVector operator- (const TRVector& rkV) const; TRVector operator* (const TRational& rkR) const; TRVector operator/ (const TRational& rkR) const; TRVector operator- () const; // arithmetic updates TRVector& operator+= (const TRVector& rkV); TRVector& operator-= (const TRVector& rkV); TRVector& operator*= (const TRational& rkR); TRVector& operator/= (const TRational& rkR); // vector operations TRational SquaredLength () const; TRational Dot (const TRVector& rkV) const; protected: // support for comparisons int CompareArrays (const TRVector& rkV) const; TRational m_akTuple[VSIZE]; }; template TRVector operator* (const TRational& rkR, const TRVector& rkV); } #include "Wm4TRVector.inl" #endif