10 return Point(0, 0, 0);
26 return Point((a.x + b.x) / 2, (a.y + b.y) / 2, (a.z + b.z) / 2);
43 return Vector(a.x - b.x, a.y - b.y, a.z - b.z);
48 return Point(k * a.x, k * a.y, k * a.z);
64 return Point(a.x + b.x, a.y + b.y, a.z + b.z);
69 return Vector(-v.x, -v.y, -v.z);
74 return Point(a.x + v.x, a.y + v.y, a.z + v.z);
94 return Vector(u.x + v.x, u.y + v.y, u.z + v.z);
99 return Vector(u.x - v.x, u.y - v.y, u.z - v.z);
104 return Vector(k * v.x, k * v.y, k * v.z);
114 return Vector(a.x * b.x, a.y * b.y, a.z * b.z);
132 (u.y * v.z) - (u.z * v.y),
133 (u.z * v.x) - (u.x * v.z),
134 (u.x * v.y) - (u.y * v.x));
139 return u.x * v.x + u.y * v.y + u.z * v.z;
149 return v.x * v.x + v.y * v.y + v.z * 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;
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 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.
representation d'un vecteur 3d.