10 return Point(0, 0, 0);
26 return Point((a.x + b.x) / 2, (a.y + b.y) / 2, (a.z + b.z) / 2);
32 return { std::min(a.x, b.x), std::min(a.y, b.y), std::min(a.z, b.z) };
37 return { std::max(a.x, b.x), std::max(a.y, b.y), std::max(a.z, b.z) };
42 return { std::min(a.x, b.x), std::min(a.y, b.y), std::min(a.z, b.z) };
47 return { std::max(a.x, b.x), std::max(a.y, b.y), std::max(a.z, b.z) };
52 if(a.x < b.x) { vmin.x= a.x; vmax.x= b.x; }
else { vmin.x= b.x; vmax.x= a.x; }
53 if(a.y < b.y) { vmin.y= a.y; vmax.y= b.y; }
else { vmin.y= b.y; vmax.y= a.y; }
54 if(a.z < b.z) { vmin.z= a.z; vmax.z= b.z; }
else { vmin.z= b.z; vmax.z= a.z; }
60 return Vector(a.x - b.x, a.y - b.y, a.z - b.z);
65 return Point(k * a.x, k * a.y, k * a.z);
75 return Point(a.x / k, a.y / k, a.z / k);
79 return Point(k/ a.x, k / a.y, k / a.z);
83 return Point(a.x / b.x, a.y / b.y, a.z / b.z);
88 return Point(a.x + b.x, a.y + b.y, a.z + b.z);
93 return Vector(-v.x, -v.y, -v.z);
98 return Point(a.x + v.x, a.y + v.y, a.z + v.z);
118 return Vector(u.x + v.x, u.y + v.y, u.z + v.z);
123 return Vector(u.x - v.x, u.y - v.y, u.z - v.z);
129 return Vector(k + v.x, k + v.y, k + v.z);
138 return Vector(k * v.x, k * v.y, k * v.z);
148 return Vector(a.x * b.x, a.y * b.y, a.z * b.z);
153 return Vector(v.x / k, v.y / k, v.z / k);
158 return Vector(k / v.x, k / v.y, k / v.z);
164 return Vector(u.x / v.x, u.y / v.y, u.z / v.z);
176 u.y * v.z - u.z * v.y,
177 u.z * v.x - u.x * v.z,
178 u.x * v.y - u.y * v.x);
183 return u.x * v.x + u.y * v.y + u.z * v.z;
193 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)
void minmax(const Vector &a, const Vector &b, Vector &vmin, Vector &vmax)
renvoie min(a, b) dans vmin, et max(a, b) dans vmax. mais en plus rapide.
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 { max(a.x, b.x), max(a.y, b.y), max(a....
Point operator*(const float k, const Point &a)
renvoie le "point" k*a;
Point operator/(const Point &a, const float k)
renvoie le "point" a/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 { min(a.x, b.x), min(a.y, b.y), min(a....
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.