vector.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef GCU_VECTOR_H
00026 #define GCU_VECTOR_H
00027
00028 #include "macros.h"
00029
00031 namespace gcu
00032 {
00033
00039 class Vector
00040 {
00041 public:
00045 Vector ();
00053 Vector (double x, double y, double z);
00059 Vector (double d[3]);
00065 Vector (Vector const &v);
00066
00072 Vector operator+ (Vector const &v) const;
00078 Vector operator- (Vector const &v) const;
00084 Vector operator* (double m) const;
00090 Vector operator/ (double d) const;
00097 Vector operator*= (double m);
00104 Vector operator/= (double d);
00110 double operator[] (unsigned i) const;
00111
00115 double GetLength () const;
00119 Vector CreateOrthogonal () const;
00125 Vector Cross (Vector const &v) const;
00126
00138 GCU_PROP (double, X)
00150 GCU_PROP (double, Y)
00162 GCU_PROP (double, Z)
00163 };
00164
00171 Vector operator* (double f, Vector const& v);
00172
00177 class Vector3f
00178 {
00179 public:
00183 Vector3f ();
00191 Vector3f (float x, float y, float z);
00195 ~Vector3f ();
00196
00199 void normalize ();
00206 Vector3f &operator= (Vector3f const& other);
00212 Vector3f operator- (Vector3f const& other) const;
00218 Vector3f operator+ (Vector3f const& other) const;
00224 Vector3f operator* (float f) const;
00225
00226 private:
00238 GCU_PROP (float, x);
00250 GCU_PROP (float, y);
00262 GCU_PROP (float, z);
00263 };
00264
00271 Vector3f operator* (float f, Vector3f const& v);
00272
00273 }
00274
00275 #endif //GCU_VECTOR_H