00001
00002
00003 class vec
00004 {
00005 public:
00006
00007 double x;
00008 double y;
00009 double z;
00010
00011
00012 inline vec();
00013 inline vec(const vec&);
00014 inline vec(const double&, const double&, const double&);
00015
00016
00017 inline ~vec();
00018
00019
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
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
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
00038 inline vec operator+(void);
00039 inline vec operator-(void);
00040
00041
00042 inline friend vec operator*(const vec&, const mat&);
00043
00044
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
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 };