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
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
00024 vec3& operator+=(const vec3&);
00026 vec3& operator-=(const vec3&);
00028 vec3& operator*=(float);
00030 vec3& operator/=(float);
00031
00032
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
00044 bool operator==(const vec3&) const;
00046 bool operator!=(const vec3&) const;
00047
00049 vec3& operator-();
00051 float norm() const;
00053 float length() const;
00055 void normalize();
00057 float dist2(const vec3&);
00059 float dist(const vec3&);
00061 float dot(const vec3&) const;
00063 const vec3 operator^(const vec3&) const;
00064
00066 void print() const;
00067 };
00068
00070 std::ostream& operator<<(std::ostream&, const vec3&);
00071
00072 #endif