TAPs 0.7.7.3
TAPsPoint_.hpp
Go to the documentation of this file.
00001 /******************************************************************************
00002 TAPsVector.hpp
00003 
00004 Vector class is a generic class for vectors -- a base class.
00005 
00006 SUKITTI PUNAK   (09/05/2004)
00007 UPDATE          (09/07/2004)
00008 ******************************************************************************/
00009 #ifndef TAPs_VECTOR_HPP
00010 #define TAPs_VECTOR_HPP
00011 
00012 #include "TAPsMath.hpp"
00013 
00014 BEGIN_NAMESPACE_TAPs
00015 //=============================================================================
00016 template <typename T, int N>
00017 class Vector {
00018 //=============================================================================
00019 protected:
00020     // Vector Coordinates
00021     T t[N];
00022 
00023 public:
00024     //-------------------------------------------------------------------------
00025     // Output Operator <<
00026     friend std::ostream & operator<< ( std::ostream &output, Vector<T,N> const &v )
00027     {
00028         //output << typeid(*this).name() << "( ";
00029         output << "Vector<" << typeid(T).name() << "," << N << ">( ";
00030         int i;
00031         for ( i = 0; i < N-1; ++i )
00032         {
00033             output << v.t[i] << ", ";
00034         }
00035         output << v.t[i] << " )'"; //<< std::endl;
00036         return output;
00037     }
00038     //-------------------------------------------------------------------------
00039     // Constructors and Destructor
00040     Vector ();
00041     Vector ( T const af[N] );
00042     Vector ( Vector<T,N> const &v );
00043     //-------------------------------------------------------------------------
00044     // Member Access
00045     inline T & operator[] ( int i );
00046     inline T const & operator[] ( int i ) const;
00047     //operator T * ();
00048     //-------------------------------------------------------------------------
00049     // Assignment Operator
00050     inline Vector<T,N> & operator= ( Vector<T,N> const &v );
00051     //-------------------------------------------------------------------------
00052     // Comparison Operators
00053     inline bool operator== ( Vector<T,N> const &v ) const;
00054     inline bool operator!= ( Vector<T,N> const &v ) const;
00055     inline bool operator<= ( Vector<T,N> const &v ) const;
00056     inline bool operator<  ( Vector<T,N> const &v ) const;
00057     inline bool operator>= ( Vector<T,N> const &v ) const;
00058     inline bool operator>  ( Vector<T,N> const &v ) const;
00059     //-------------------------------------------------------------------------
00060     // Arithmetic Operators
00061     inline Vector<T,N> operator- () const;  // negation
00062     inline Vector<T,N> operator+ ( Vector<T,N> const &v ) const;
00063     inline Vector<T,N> operator- ( Vector<T,N> const &v ) const;
00064     inline Vector<T,N> operator* ( T s ) const;
00065     inline Vector<T,N> operator/ ( T s ) const;
00066     friend inline Vector<T,N> operator* ( T s, Vector<T,N> const &v )   { return v*s; }
00067     //-------------------------------------------------------------------------
00068     // Arithmetic Update Operators
00069     inline Vector<T,N> & operator+= ( Vector<T,N> const &v );
00070     inline Vector<T,N> & operator-= ( Vector<T,N> const &v );
00071     inline Vector<T,N> & operator*= ( T s );
00072     inline Vector<T,N> & operator/= ( T s );
00073     //-------------------------------------------------------------------------
00074     // Vector Operations
00075     inline T Length () const;
00076     inline T SquaredLength () const;
00077     inline Vector<T,N> GetUnit ( T tolerance = TAPs::Math<T>::EPSILON ) const;
00078     inline Vector<T,N> & Normalized ( T tolerance = TAPs::Math<T>::EPSILON );
00079     inline T Dot ( Vector<T,N> const &v ) const;                // Dot Product
00080     inline T operator* ( Vector<T,N> const &v ) const ;     // Dot Product Operator
00081     //inline Vector<T,N> Cross ( Vector<T,N> const &v ) const;      // Cross Product
00082     //inline Vector<T,N> operator% ( Vector<T,N> const &v ) const;  // Cross Product Operator
00083 }; // END CLASS Vector
00084 //=============================================================================
00085 
00086 /*
00087 //=============================================================================
00088 // Global Functions
00089 //-----------------------------------------------------------------------------
00090 // Std Output Via << Operator
00091 template <typename T, int N>
00092 std::ostream & operator<< ( std::ostream &output, Vector<T,N> const &v );
00093 //-----------------------------------------------------------------------------
00094 */
00095 
00096 //=============================================================================
00097 END_NAMESPACE_TAPs
00098 //-----------------------------------------------------------------------------
00099 // Include definition if TAPs_USE_EXPORT is not defined
00100 //#if !defined( TAPs_USE_EXPORT )
00101     #include "TAPsVector.cpp"
00102 //#endif
00103 //-----------------------------------------------------------------------------
00104 #endif
00105 //345678901234567890123456789012345678901234567890123456789012345678901234567890
00106 //--+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines