Flow Visualization 1.0

vec3.h

00001 #ifndef VEC3_H
00002 #define VEC3_H
00003 
00004 #include <iostream>
00005 #include <cmath>
00006 
00008 class vec3
00009 {
00010 public:
00012     float v[3];
00013     //constructors
00014     vec3();
00015         vec3(float x, float y, float z = 0.0f);
00016         vec3(const float* u);
00017         vec3(const vec3&);
00019         float& operator[](unsigned);
00021     vec3& operator=(const vec3&);
00022         
00023         //arithmetic assignments
00025         vec3& operator+=(const vec3&);
00027         vec3& operator-=(const vec3&);
00029     vec3& operator*=(float);
00031         vec3& operator/=(float);
00032         
00033         //arithmetic operations
00035         const vec3 operator+(const vec3&) const;
00037         const vec3 operator-(const vec3&) const;
00039         const vec3 operator*(float) const;
00041         const vec3 operator/(float) const;
00042 
00043         //boolean operators
00045         bool operator==(const vec3&) const;
00047         bool operator!=(const vec3&) const;
00048 
00050         vec3& operator-();
00052         float norm() const;
00054         float length() const;
00056         vec3& operator!();
00058         float dist2(const vec3&);
00060         float dist(const vec3&);
00062         float operator*(const vec3&) const;
00064         const vec3 operator^(const vec3&) const;
00065 
00067         void print();
00068 };
00069 
00071 std::ostream& operator<<(std::ostream&, const vec3&);
00072 
00073 #endif