VisLU Flow 0.1

src/vec3.h

00001 #ifndef VEC3_H
00002 #define VEC3_H
00003 
00004 #include <iostream>
00005 #include <math.h>
00006 
00007 class vec3
00008 {
00009 public:
00011     float v[3];
00012     //constructors
00013     vec3();
00014         vec3(float x, float y, float z = 0.0f);
00015         vec3(const float* u);
00016         vec3(const vec3&);
00018         float& operator[](unsigned);
00020     vec3& operator=(const vec3&);
00021         
00022         //arithmetic assignments
00024         vec3& operator+=(const vec3&);
00026         vec3& operator-=(const vec3&);
00028     vec3& operator*=(float);
00030         vec3& operator/=(float);
00031         
00032         //arithmetic operations
00034         const vec3 operator+(const vec3&) const;
00036         const vec3 operator-(const vec3&) const;
00038         const vec3 operator*(float) const;
00040         const vec3 operator/(float) const;
00041 
00042         //boolean operators
00044         bool operator==(const vec3&) const;
00046         bool operator!=(const vec3&) const;
00047 
00049         vec3& operator-();
00051         float norm() const {
00052             return v[0]*v[0] + v[1]*v[1] + v[2]*v[2];
00053     }
00055         float length() const {
00056             return sqrt(norm());
00057         }
00059         vec3& operator!();
00061         float dist2(const vec3&);
00063         float dist(const vec3&);
00065         float operator*(const vec3&) const;
00067         const vec3 operator^(const vec3&) const;
00068 
00069         float dot(const vec3&) const;
00070         void normalize(void);
00071 
00073         void print();
00074 };
00075 
00077 std::ostream& operator<<(std::ostream&, const vec3&);
00078 
00079 #endif
 All Classes Functions Variables