vec.hpp

Go to the documentation of this file.
00001 //=============================================================================
00002 //! double-precision 3D vector class
00003 class vec
00004 {
00005 public:
00006   //// members ////
00007   double x; //!< \f$ V_0 \f$ component
00008   double y; //!< \f$ V_1 \f$ component
00009   double z; //!< \f$ V_2 \f$ component
00010   
00011   //// constructer////
00012   inline vec();
00013   inline vec(const vec&);
00014   inline vec(const double&, const double&, const double&);
00015   
00016   //// destructer ////
00017   inline ~vec();
00018   
00019   //// io ////
00020   inline double& operator()(const int&);
00021   inline double operator()(const int&) const;
00022   inline friend std::ostream& operator<<(std::ostream&, const vec&);
00023   
00024   //// calc ////
00025   inline void normalize();
00026   inline friend double abs(const vec&);
00027   inline friend double norm(const vec&);
00028   inline friend vec normal(const vec&);
00029   inline friend vec rotate(const vec&, const quat&);
00030   inline friend vec orbit(const vec&, const quat&);
00031   
00032   //// misc ////
00033   inline friend quat vr2q(const vec&, const double&);
00034   inline friend quat vt2q(const vec&, const double&);
00035   inline friend void swap(vec&, vec&);
00036   
00037   //// unary ////
00038   inline vec operator+(void);
00039   inline vec operator-(void);
00040   
00041   //// operators with mat ////
00042   inline friend vec operator*(const vec&, const mat&);
00043   
00044   //// operators with vec ////
00045   inline vec& operator=(const vec&);
00046   inline vec& operator+=(const vec&);
00047   inline vec& operator-=(const vec&);
00048   inline vec& operator/=(const vec&);
00049   inline friend vec operator+(const vec&, const vec&);
00050   inline friend vec operator-(const vec&, const vec&);
00051   inline friend mat operator*(const vec&, const vec&);
00052   inline friend double operator%(const vec&, const vec&);
00053   inline friend vec operator/(const vec&, const vec&);
00054 
00055   //// operators with double ////
00056   inline vec& operator*=(const double&);
00057   inline vec& operator/=(const double&);
00058   inline friend vec operator*(const vec&, const double&);
00059   inline friend vec operator/(const vec&, const double&);
00060   
00061   //// * ////
00062   inline friend vec operator*(const double&, const vec&);
00063 };

Generated on Tue Mar 15 16:02:38 2005 for QVM by  doxygen 1.4.1