24 Point(
const float _x,
const float _y,
const float _z ) : x(_x), y(_y), z(_z) {}
34 float operator() (
const unsigned int i )
const;
62 Vector(
const float _x,
const float _y,
const float _z ) : x(_x), y(_y), z(_z) {}
65 explicit Vector(
const Point& a,
const Point& b ) : x(b.x - a.x), y(b.y - a.y), z(b.z - a.z) {}
74 float operator() (
const unsigned int i )
const;
134 vec2(
const float _x,
const float _y ) : x(_x), y(_y) {}
137 float operator() (
const unsigned int i )
const {
return (&x)[i]; }
138 float&
operator() (
const unsigned int i ) {
return (&x)[i]; }
149 vec3(
const float _x,
const float _y,
const float _z ) : x(_x), y(_y), z(_z) {}
151 vec3(
const vec2& a,
const float _z ) : x(a.x), y(a.y), z(_z) {}
159 float operator() (
const unsigned int i )
const {
return (&x)[i]; }
160 float&
operator() (
const unsigned int i ) {
return (&x)[i]; }
170 vec4( ) : x(0), y(0), z(0), w(0) {}
171 vec4(
const float _x,
const float _y,
const float _z,
const float _w ) : x(_x), y(_y), z(_z), w(_w) {}
173 vec4(
const vec2& v,
const float _z= 0,
const float _w= 0 ) : x(v.x), y(v.y), z(_z), w(_w) {}
175 vec4(
const vec3& v,
const float _w= 0 ) : x(v.x), y(v.y), z(v.z), w(_w) {}
183 float operator() (
const unsigned int i )
const {
return (&x)[i]; }
184 float&
operator() (
const unsigned int i ) {
return (&x)[i]; }
207 inline float Point::operator( ) (
const unsigned int i )
const {
return (&x)[i]; }
208 inline float Vector::operator( ) (
const unsigned int i )
const {
return (&x)[i]; }
210 inline float& Point::operator( ) (
const unsigned int i ) {
return (&x)[i]; }
211 inline float& Vector::operator( ) (
const unsigned int i ) {
return (&x)[i]; }
216 inline std::ostream& operator<<(std::ostream& o,
const Point& p)
218 o<<
"p("<<p.x<<
","<<p.y<<
","<<p.z<<
")";
222 inline std::ostream& operator<<(std::ostream& o,
const Vector& v)
224 o<<
"v("<<v.x<<
","<<v.y<<
","<<v.z<<
")";
Point center(const Point &a, const Point &b)
renvoie le milieu du segment ab.
Point Origin()
renvoie le point origine (0, 0, 0)
Vector operator-(const Point &a, const Point &b)
renvoie le vecteur a - b.
Point max(const Point &a, const Point &b)
renvoie la plus grande composante de chaque point. x, y, z= max(a.x, b.x), max(a.y,...
Point operator*(const float k, const Point &a)
renvoie le "point" k*a;
float operator()(const unsigned int i) const
renvoie la ieme composante du point.
Point operator/(const Point &a, const float k)
renvoie le "point" v/k;
float distance(const Point &a, const Point &b)
renvoie la distance etre 2 points.
Point operator+(const Point &a, const Point &b)
renvoie le "point" a + b.
Point min(const Point &a, const Point &b)
renvoie la plus petite composante de chaque point. x, y, z= min(a.x, b.x), min(a.y,...
float length2(const Vector &v)
renvoie la carre de la longueur d'un vecteur.
float operator()(const unsigned int i) const
renvoie la ieme composante du vecteur.
float dot(const Vector &u, const Vector &v)
renvoie le produit scalaire de 2 vecteurs.
float distance2(const Point &a, const Point &b)
renvoie le carre de la distance etre 2 points.
Vector normalize(const Vector &v)
renvoie un vecteur unitaire / longueur == 1.
float length(const Vector &v)
renvoie la longueur d'un vecteur.
Vector cross(const Vector &u, const Vector &v)
renvoie le produit vectoriel de 2 vecteurs.
representation d'un point 3d.
Point()
constructeur par defaut.
representation d'un vecteur 3d.
Vector(const Point &a, const Point &b)
cree le vecteur ab.
Vector()
constructeur par defaut.
vecteur generique, utilitaire.
float operator()(const unsigned int i) const
renvoie la ieme composante du vecteur.
vec2()
constructeur par defaut.
vecteur generique, utilitaire.
float operator()(const unsigned int i) const
renvoie la ieme composante du vecteur.
vec3(const vec2 &a, const float _z)
constructeur par defaut.
vec3()
constructeur par defaut.
vecteur generique 4d, ou 3d homogene, utilitaire.
vec4(const vec3 &v, const float _w=0)
constructeur par defaut.
vec4()
constructeur par defaut.
float operator()(const unsigned int i) const
renvoie la ieme composante du vecteur.
vec4(const vec2 &v, const float _z=0, const float _w=0)
constructeur par defaut.