gKit2 light
Files | Classes | Functions
manipulations de points, vecteur, matrices, transformations

Files

file  mat.h
 
file  vec.h
 

Classes

struct  Transform
 representation d'une transformation, une matrice 4x4, organisee par ligne / row major. More...
 
struct  Point
 representation d'un point 3d. More...
 
struct  Vector
 representation d'un vecteur 3d. More...
 
struct  vec2
 vecteur generique, utilitaire. More...
 
struct  vec3
 vecteur generique, utilitaire. More...
 
struct  vec4
 vecteur generique 4d, ou 3d homogene, utilitaire. More...
 

Functions

float radians (const float deg)
 conversion en radians. More...
 
float degrees (const float rad)
 conversion en degres. More...
 
Transform Identity ()
 construit la transformation identite. More...
 
Transform Transpose (const Transform &m)
 renvoie la transposee de la matrice. More...
 
Transform Inverse (const Transform &m)
 renvoie l'inverse de la matrice. More...
 
Transform Normal (const Transform &m)
 renvoie la transformation a appliquer aux normales d'un objet transforme par la matrice m. More...
 
Transform Scale (const float x, const float y, const float z)
 renvoie la matrice representant une mise a l'echelle / etirement. More...
 
Transform Scale (const float s)
 
Transform Translation (const Vector &v)
 renvoie la matrice representant une translation par un vecteur. More...
 
Transform Translation (const float x, const float y, const float z)
 renvoie la matrice representant une translation par un vecteur x y z. More...
 
Transform RotationX (const float angle)
 renvoie la matrice representation une rotation de angle degree autour de l'axe X. More...
 
Transform RotationY (const float angle)
 renvoie la matrice representation une rotation de a degree autour de l'axe Y. More...
 
Transform RotationZ (const float angle)
 renvoie la matrice representation une rotation de angle degree autour de l'axe Z. More...
 
Transform Rotation (const Vector &axis, const float angle)
 renvoie la matrice representation une rotation de angle degree autour de l'axe axis. More...
 
Transform Rotation (const Vector &u, const Vector &v)
 renvoie la matrice de rotation entre u et v. More...
 
Transform Viewport (const float width, const float height)
 renvoie la matrice representant une transformation viewport. More...
 
Transform Perspective (const float fov, const float aspect, const float znear, const float zfar)
 renvoie la matrice representant une transformation projection perspective. More...
 
Transform Ortho (const float left, const float right, const float bottom, const float top, const float znear, const float zfar)
 renvoie la matrice representant une transformation orthographique, passage d'un cube []x[]x[] vers [-1 1]x[-1 1]x[-1 1]. More...
 
Transform Lookat (const Point &from, const Point &to, const Vector &up)
 renvoie la matrice representant le placement et l'orientation d'une camera pour observer le point to. More...
 
Transform compose_transform (const Transform &a, const Transform &b)
 renvoie la composition des transformations a et b, t= a * b. More...
 
Transform operator* (const Transform &a, const Transform &b)
 renvoie la composition des transformations a et b, t = a * b. More...
 
std::ostream & operator<< (std::ostream &o, const Transform &t)
 
Point Origin ()
 renvoie le point origine (0, 0, 0) More...
 
float distance (const Point &a, const Point &b)
 renvoie la distance etre 2 points. More...
 
float distance2 (const Point &a, const Point &b)
 renvoie le carre de la distance etre 2 points. More...
 
Point center (const Point &a, const Point &b)
 renvoie le milieu du segment ab. More...
 
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, b.y), min(a.z, b.z). More...
 
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, b.y), max(a.z, b.z). More...
 
Vector normalize (const Vector &v)
 renvoie un vecteur unitaire / longueur == 1. More...
 
Vector cross (const Vector &u, const Vector &v)
 renvoie le produit vectoriel de 2 vecteurs. More...
 
float dot (const Vector &u, const Vector &v)
 renvoie le produit scalaire de 2 vecteurs. More...
 
float length (const Vector &v)
 renvoie la longueur d'un vecteur. More...
 
float length2 (const Vector &v)
 renvoie la carre de la longueur d'un vecteur. More...
 
Vector operator- (const Point &a, const Point &b)
 renvoie le vecteur a - b. More...
 
Point operator+ (const Point &a, const Point &b)
 renvoie le "point" a + b. More...
 
Point operator* (const float k, const Point &a)
 renvoie le "point" k*a; More...
 
Point operator* (const Point &a, const float k)
 renvoie le "point" a*k; More...
 
Point operator/ (const Point &a, const float k)
 renvoie le "point" v/k; More...
 
Vector operator- (const Vector &v)
 renvoie le vecteur -v. More...
 
Point operator+ (const Point &a, const Vector &v)
 renvoie le point a+v. More...
 
Point operator+ (const Vector &v, const Point &a)
 renvoie le point a+v. More...
 
Point operator- (const Vector &v, const Point &a)
 renvoie le point a-v. More...
 
Point operator- (const Point &a, const Vector &v)
 renvoie le point a-v. More...
 
Vector operator+ (const Vector &u, const Vector &v)
 renvoie le vecteur u+v. More...
 
Vector operator- (const Vector &u, const Vector &v)
 renvoie le vecteur u-v. More...
 
Vector operator* (const float k, const Vector &v)
 renvoie le vecteur k*u; More...
 
Vector operator* (const Vector &v, const float k)
 renvoie le vecteur k*v; More...
 
Vector operator* (const Vector &a, const Vector &b)
 renvoie le vecteur (a.x*b.x, a.y*b.y, a.z*b.z ). More...
 
Vector operator/ (const Vector &v, const float k)
 renvoie le vecteur v/k; More...
 
std::ostream & operator<< (std::ostream &o, const Point &p)
 
std::ostream & operator<< (std::ostream &o, const Vector &v)
 
 Point::Point (const vec2 &v, const float z)
 cree un point a partir des coordonnees du vecteur generique (v.x, v.y, v.z). More...
 
 Point::Point (const vec3 &v)
 
 Point::Point (const vec4 &v)
 
 Point::Point (const Vector &v)
 cree un point a partir des coordonnes du vecteur (v.x, v.y, v.z). More...
 
 Vector::Vector (const vec3 &v)
 cree un vecteur a partir des coordonnees du vecteur generique (v.x, v.y, v.z). More...
 
 Vector::Vector (const vec4 &v)
 
 Vector::Vector (const Point &a)
 cree un vecteur a partir des coordonnes du vecteur (v.x, v.y, v.z). More...
 
 vec3::vec3 (const Point &a)
 cree un vecteur generique a partir des coordonnees du point a. More...
 
 vec3::vec3 (const Vector &v)
 cree un vecteur generique a partir des coordonnees du vecteur v. More...
 
 vec4::vec4 (const Point &a)
 cree un vecteur generique a partir des coordonnees du point a, (a.x, a.y, a.z, 1). More...
 
 vec4::vec4 (const Vector &v)
 cree un vecteur generique a partir des coordonnees du vecteur v, (v.x, v.y, v.z, 0). More...
 
float Point::operator() (const unsigned int i) const
 renvoie la ieme composante du point. More...
 
float Vector::operator() (const unsigned int i) const
 renvoie la ieme composante du vecteur. More...
 
float & Point::operator() (const unsigned int i)
 
float & Vector::operator() (const unsigned int i)
 

Detailed Description

Function Documentation

◆ radians()

float radians ( const float  deg)

conversion en radians.

Definition at line 10 of file mat.cpp.

11 {
12  return ((float) M_PI / 180.f) * deg;
13 }

◆ degrees()

float degrees ( const float  rad)

conversion en degres.

Definition at line 15 of file mat.cpp.

16 {
17  return (180.f / (float) M_PI) * rad;
18 }

◆ Identity()

Transform Identity ( )

construit la transformation identite.

Definition at line 187 of file mat.cpp.

188 {
189  return Transform();
190 }
representation d'une transformation, une matrice 4x4, organisee par ligne / row major.
Definition: mat.h:21

◆ Transpose()

Transform Transpose ( const Transform m)

renvoie la transposee de la matrice.

Definition at line 192 of file mat.cpp.

193 {
194  return m.transpose();
195 }
Transform transpose() const
renvoie la transposee de la matrice.
Definition: mat.cpp:165

◆ Inverse()

Transform Inverse ( const Transform m)

renvoie l'inverse de la matrice.

Definition at line 197 of file mat.cpp.

198 {
199  return m.inverse();
200 }
Transform inverse() const
renvoie l'inverse de la matrice.
Definition: mat.cpp:399

◆ Normal()

Transform Normal ( const Transform m)

renvoie la transformation a appliquer aux normales d'un objet transforme par la matrice m.

Definition at line 202 of file mat.cpp.

203 {
204  return m.normal();
205 }
Transform normal() const
renvoie la transformation a appliquer aux normales d'un objet transforme par la matrice m.
Definition: mat.cpp:181

◆ Scale()

Transform Scale ( const float  x,
const float  y,
const float  z 
)

renvoie la matrice representant une mise a l'echelle / etirement.

Definition at line 207 of file mat.cpp.

208 {
209  return Transform(
210  x, 0, 0, 0,
211  0, y, 0, 0,
212  0, 0, z, 0,
213  0, 0, 0, 1);
214 }

◆ Translation() [1/2]

Transform Translation ( const Vector v)

renvoie la matrice representant une translation par un vecteur.

Definition at line 216 of file mat.cpp.

217 {
218  return Transform(
219  1, 0, 0, v.x,
220  0, 1, 0, v.y,
221  0, 0, 1, v.z,
222  0, 0, 0, 1);
223 }

◆ Translation() [2/2]

Transform Translation ( const float  x,
const float  y,
const float  z 
)

renvoie la matrice representant une translation par un vecteur x y z.

Definition at line 225 of file mat.cpp.

226 {
227  return Translation( Vector(x, y, z) );
228 }
Transform Translation(const Vector &v)
renvoie la matrice representant une translation par un vecteur.
Definition: mat.cpp:216
representation d'un vecteur 3d.
Definition: vec.h:59

◆ RotationX()

Transform RotationX ( const float  angle)

renvoie la matrice representation une rotation de angle degree autour de l'axe X.

Definition at line 230 of file mat.cpp.

231 {
232  float sin_t= sinf(radians(a));
233  float cos_t= cosf(radians(a));
234 
235  return Transform(
236  1, 0, 0, 0,
237  0, cos_t, -sin_t, 0,
238  0, sin_t, cos_t, 0,
239  0, 0, 0, 1 );
240 }
float radians(const float deg)
conversion en radians.
Definition: mat.cpp:10

◆ RotationY()

Transform RotationY ( const float  angle)

renvoie la matrice representation une rotation de a degree autour de l'axe Y.

Definition at line 242 of file mat.cpp.

243 {
244  float sin_t= sinf(radians(a));
245  float cos_t= cosf(radians(a));
246 
247  return Transform(
248  cos_t, 0, sin_t, 0,
249  0, 1, 0, 0,
250  -sin_t, 0, cos_t, 0,
251  0, 0, 0, 1 );
252 }

◆ RotationZ()

Transform RotationZ ( const float  angle)

renvoie la matrice representation une rotation de angle degree autour de l'axe Z.

Definition at line 254 of file mat.cpp.

255 {
256  float sin_t= sinf(radians(a));
257  float cos_t= cosf(radians(a));
258 
259  return Transform(
260  cos_t, -sin_t, 0, 0,
261  sin_t, cos_t, 0, 0,
262  0, 0, 1, 0,
263  0, 0, 0, 1 );
264 }

◆ Rotation() [1/2]

Transform Rotation ( const Vector axis,
const float  angle 
)

renvoie la matrice representation une rotation de angle degree autour de l'axe axis.

Definition at line 266 of file mat.cpp.

267 {
268  Vector a= normalize(axis);
269  float s= sinf(radians(angle));
270  float c= cosf(radians(angle));
271 
272  return Transform(
273  a.x * a.x + (1 - a.x * a.x ) * c,
274  a.x * a.y * (1 - c ) - a.z * s,
275  a.x * a.z * (1 - c ) + a.y * s,
276  0,
277 
278  a.x * a.y * (1 - c ) + a.z * s,
279  a.y * a.y + (1 - a.y * a.y ) * c,
280  a.y * a.z * (1 - c ) - a.x * s,
281  0,
282 
283  a.x * a.z * (1 - c ) - a.y * s,
284  a.y * a.z * (1 - c ) + a.x * s,
285  a.z * a.z + (1 - a.z * a.z ) * c,
286  0,
287 
288  0, 0, 0, 1);
289 }
Vector normalize(const Vector &v)
renvoie un vecteur unitaire / longueur == 1.
Definition: vec.cpp:123

◆ Rotation() [2/2]

Transform Rotation ( const Vector u,
const Vector v 
)

renvoie la matrice de rotation entre u et v.

Todo:
ajuster epsilon, ou trouver une autre formulation non degeneree...

Definition at line 292 of file mat.cpp.

293 {
294  Vector a= normalize(u);
295  Vector b= normalize(v);
296  Vector w= cross(a, b); // rotation autour de w, un vecteur perpendiculaire a u et v
297  float s= length(w); // sin theta
298  float c= dot(a, b); // cos theta
299 
300  // si u et v sont colineaires, pas d'axe de rotation, renvoyer +1 ou -1
301  if(s < float(0.00001))
303  return Scale(std::copysign(c, 1));
304 
305  // normalise l'axe de rotation
306  w= w / s;
307 
308  // meme matrice de rotation qu'au dessus , cf Rotation(axis, angle), l'axe est le vecteur w, s et c sont le sinus et le cosinus de l'angle
309  return Transform(
310  w.x * w.x + (1 - w.x * w.x ) * c,
311  w.x * w.y * (1 - c ) - w.z * s,
312  w.x * w.z * (1 - c ) + w.y * s,
313  0,
314 
315  w.x * w.y * (1 - c ) + w.z * s,
316  w.y * w.y + (1 - w.y * w.y ) * c,
317  w.y * w.z * (1 - c ) - w.x * s,
318  0,
319 
320  w.x * w.z * (1 - c ) - w.y * s,
321  w.y * w.z * (1 - c ) + w.x * s,
322  w.z * w.z + (1 - w.z * w.z ) * c,
323  0,
324 
325  0, 0, 0, 1);
326 }
float dot(const Vector &u, const Vector &v)
renvoie le produit scalaire de 2 vecteurs.
Definition: vec.cpp:137
float length(const Vector &v)
renvoie la longueur d'un vecteur.
Definition: vec.cpp:142
Vector cross(const Vector &u, const Vector &v)
renvoie le produit vectoriel de 2 vecteurs.
Definition: vec.cpp:129
Transform Scale(const float x, const float y, const float z)
renvoie la matrice representant une mise a l'echelle / etirement.
Definition: mat.cpp:207

◆ Viewport()

Transform Viewport ( const float  width,
const float  height 
)

renvoie la matrice representant une transformation viewport.

Definition at line 357 of file mat.cpp.

358 {
359  float w= width / 2.f;
360  float h= height / 2.f;
361 
362  return Transform(
363  w, 0, 0, w,
364  0, h, 0, h,
365  0, 0, .5f, .5f,
366  0, 0, 0, 1);
367 }

◆ Perspective()

Transform Perspective ( const float  fov,
const float  aspect,
const float  znear,
const float  zfar 
)

renvoie la matrice representant une transformation projection perspective.

Definition at line 329 of file mat.cpp.

330 {
331  // perspective, openGL version
332  float itan= 1 / tanf(radians(fov) * 0.5f);
333  float id= 1 / (znear - zfar);
334 
335  return Transform(
336  itan/aspect, 0, 0, 0,
337  0, itan, 0, 0,
338  0, 0, (zfar+znear)*id, 2.f*zfar*znear*id,
339  0, 0, -1, 0);
340 }

◆ Ortho()

Transform Ortho ( const float  left,
const float  right,
const float  bottom,
const float  top,
const float  znear,
const float  zfar 
)

renvoie la matrice representant une transformation orthographique, passage d'un cube []x[]x[] vers [-1 1]x[-1 1]x[-1 1].

Definition at line 343 of file mat.cpp.

344 {
345  float tx= - (right + left) / (right - left);
346  float ty= - (top + bottom) / (top - bottom);
347  float tz= - (zfar + znear) / (zfar - znear);
348 
349  return Transform(
350  2.f / (right - left), 0, 0, tx,
351  0, 2.f / (top - bottom), 0, ty,
352  0, 0, -2.f / (zfar - znear), tz,
353  0, 0, 0, 1);
354 }

◆ Lookat()

Transform Lookat ( const Point from,
const Point to,
const Vector up 
)

renvoie la matrice representant le placement et l'orientation d'une camera pour observer le point to.

Definition at line 369 of file mat.cpp.

370 {
371  Vector dir= normalize( Vector(from, to) );
372  Vector right= normalize( cross(dir, normalize(up)) );
373  Vector newUp= normalize( cross(right, dir) );
374 
375  Transform m(
376  right.x, newUp.x, -dir.x, from.x,
377  right.y, newUp.y, -dir.y, from.y,
378  right.z, newUp.z, -dir.z, from.z,
379  0, 0, 0, 1);
380 
381  return m.inverse();
382 }

◆ compose_transform()

Transform compose_transform ( const Transform a,
const Transform b 
)

renvoie la composition des transformations a et b, t= a * b.

Definition at line 384 of file mat.cpp.

385 {
386  Transform m;
387  for(int i = 0; i < 4; i++)
388  for(int j = 0; j < 4; j++)
389  m.m[i][j]= a.m[i][0] * b.m[0][j] + a.m[i][1] * b.m[1][j] + a.m[i][2] * b.m[2][j] + a.m[i][3] * b.m[3][j];
390 
391  return m;
392 }

◆ operator*() [1/6]

Transform operator* ( const Transform a,
const Transform b 
)

renvoie la composition des transformations a et b, t = a * b.

Definition at line 394 of file mat.cpp.

395 {
396  return compose_transform(a, b);
397 }
Transform compose_transform(const Transform &a, const Transform &b)
renvoie la composition des transformations a et b, t= a * b.
Definition: mat.cpp:384

◆ Origin()

Point Origin ( )

renvoie le point origine (0, 0, 0)

Definition at line 8 of file vec.cpp.

9 {
10  return Point(0, 0, 0);
11 }
representation d'un point 3d.
Definition: vec.h:21

◆ distance()

float distance ( const Point a,
const Point b 
)

renvoie la distance etre 2 points.

Definition at line 14 of file vec.cpp.

15 {
16  return length(a - b);
17 }

◆ distance2()

float distance2 ( const Point a,
const Point b 
)

renvoie le carre de la distance etre 2 points.

Definition at line 19 of file vec.cpp.

20 {
21  return length2(a - b);
22 }
float length2(const Vector &v)
renvoie la carre de la longueur d'un vecteur.
Definition: vec.cpp:147

◆ center()

Point center ( const Point a,
const Point b 
)

renvoie le milieu du segment ab.

Definition at line 24 of file vec.cpp.

25 {
26  return Point((a.x + b.x) / 2, (a.y + b.y) / 2, (a.z + b.z) / 2);
27 }

◆ min()

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, b.y), min(a.z, b.z).

Definition at line 30 of file vec.cpp.

31 {
32  return Point( std::min(a.x, b.x), std::min(a.y, b.y), std::min(a.z, b.z) );
33 }
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,...
Definition: vec.cpp:30

◆ max()

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, b.y), max(a.z, b.z).

Definition at line 35 of file vec.cpp.

36 {
37  return Point( std::max(a.x, b.x), std::max(a.y, b.y), std::max(a.z, b.z) );
38 }
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,...
Definition: vec.cpp:35

◆ normalize()

Vector normalize ( const Vector v)

renvoie un vecteur unitaire / longueur == 1.

Definition at line 123 of file vec.cpp.

124 {
125  float kk= 1 / length(v);
126  return kk * v;
127 }

◆ cross()

Vector cross ( const Vector u,
const Vector v 
)

renvoie le produit vectoriel de 2 vecteurs.

Definition at line 129 of file vec.cpp.

130 {
131  return Vector(
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));
135 }

◆ dot()

float dot ( const Vector u,
const Vector v 
)

renvoie le produit scalaire de 2 vecteurs.

Definition at line 137 of file vec.cpp.

138 {
139  return u.x * v.x + u.y * v.y + u.z * v.z;
140 }

◆ length()

float length ( const Vector v)

renvoie la longueur d'un vecteur.

Definition at line 142 of file vec.cpp.

143 {
144  return std::sqrt(length2(v));
145 }

◆ length2()

float length2 ( const Vector v)

renvoie la carre de la longueur d'un vecteur.

Definition at line 147 of file vec.cpp.

148 {
149  return v.x * v.x + v.y * v.y + v.z * v.z;
150 }

◆ operator-() [1/5]

Vector operator- ( const Point a,
const Point b 
)

renvoie le vecteur a - b.

Definition at line 41 of file vec.cpp.

42 {
43  return Vector(a.x - b.x, a.y - b.y, a.z - b.z);
44 }

◆ operator+() [1/4]

Point operator+ ( const Point a,
const Point b 
)

renvoie le "point" a + b.

Definition at line 62 of file vec.cpp.

63 {
64  return Point(a.x + b.x, a.y + b.y, a.z + b.z);
65 }

◆ operator*() [2/6]

Point operator* ( const float  k,
const Point a 
)

renvoie le "point" k*a;

Definition at line 46 of file vec.cpp.

47 {
48  return Point(k * a.x, k * a.y, k * a.z);
49 }

◆ operator*() [3/6]

Point operator* ( const Point a,
const float  k 
)

renvoie le "point" a*k;

Definition at line 51 of file vec.cpp.

52 {
53  return k * a;
54 }

◆ operator/() [1/2]

Point operator/ ( const Point a,
const float  k 
)

renvoie le "point" v/k;

Definition at line 56 of file vec.cpp.

57 {
58  float kk= 1.f / k;
59  return kk * a;
60 }

◆ operator-() [2/5]

Vector operator- ( const Vector v)

renvoie le vecteur -v.

Definition at line 67 of file vec.cpp.

68 {
69  return Vector(-v.x, -v.y, -v.z);
70 }

◆ operator+() [2/4]

Point operator+ ( const Point a,
const Vector v 
)

renvoie le point a+v.

Definition at line 72 of file vec.cpp.

73 {
74  return Point(a.x + v.x, a.y + v.y, a.z + v.z);
75 }

◆ operator+() [3/4]

Point operator+ ( const Vector v,
const Point a 
)

renvoie le point a+v.

Definition at line 77 of file vec.cpp.

78 {
79  return a + v;
80 }

◆ operator-() [3/5]

Point operator- ( const Vector v,
const Point a 
)

renvoie le point a-v.

Definition at line 82 of file vec.cpp.

83 {
84  return a + (-v);
85 }

◆ operator-() [4/5]

Point operator- ( const Point a,
const Vector v 
)

renvoie le point a-v.

Definition at line 87 of file vec.cpp.

88 {
89  return a + (-v);
90 }

◆ operator+() [4/4]

Vector operator+ ( const Vector u,
const Vector v 
)

renvoie le vecteur u+v.

Definition at line 92 of file vec.cpp.

93 {
94  return Vector(u.x + v.x, u.y + v.y, u.z + v.z);
95 }

◆ operator-() [5/5]

Vector operator- ( const Vector u,
const Vector v 
)

renvoie le vecteur u-v.

Definition at line 97 of file vec.cpp.

98 {
99  return Vector(u.x - v.x, u.y - v.y, u.z - v.z);
100 }

◆ operator*() [4/6]

Vector operator* ( const float  k,
const Vector v 
)

renvoie le vecteur k*u;

Definition at line 102 of file vec.cpp.

103 {
104  return Vector(k * v.x, k * v.y, k * v.z);
105 }

◆ operator*() [5/6]

Vector operator* ( const Vector v,
const float  k 
)

renvoie le vecteur k*v;

Definition at line 107 of file vec.cpp.

108 {
109  return k * v;
110 }

◆ operator*() [6/6]

Vector operator* ( const Vector a,
const Vector b 
)

renvoie le vecteur (a.x*b.x, a.y*b.y, a.z*b.z ).

Definition at line 112 of file vec.cpp.

113 {
114  return Vector(a.x * b.x, a.y * b.y, a.z * b.z);
115 }

◆ operator/() [2/2]

Vector operator/ ( const Vector v,
const float  k 
)

renvoie le vecteur v/k;

Definition at line 117 of file vec.cpp.

118 {
119  float kk= 1 / k;
120  return kk * v;
121 }

◆ Point() [1/2]

Point::Point ( const vec2 v,
const float  z 
)
inline

cree un point a partir des coordonnees du vecteur generique (v.x, v.y, v.z).

Definition at line 191 of file vec.h.

191 : x(v.x), y(v.y), z(z) {}

◆ Point() [2/2]

Point::Point ( const Vector v)
inlineexplicit

cree un point a partir des coordonnes du vecteur (v.x, v.y, v.z).

Definition at line 194 of file vec.h.

194 : x(v.x), y(v.y), z(v.z) {}

◆ Vector() [1/2]

Vector::Vector ( const vec3 v)
inline

cree un vecteur a partir des coordonnees du vecteur generique (v.x, v.y, v.z).

Definition at line 196 of file vec.h.

196 : x(v.x), y(v.y), z(v.z) {}

◆ Vector() [2/2]

Vector::Vector ( const Point a)
inlineexplicit

cree un vecteur a partir des coordonnes du vecteur (v.x, v.y, v.z).

Definition at line 198 of file vec.h.

198 : x(a.x), y(a.y), z(a.z) {}

◆ vec3() [1/2]

vec3::vec3 ( const Point a)
inline

cree un vecteur generique a partir des coordonnees du point a.

Definition at line 200 of file vec.h.

200 : x(a.x), y(a.y), z(a.z) {}

◆ vec3() [2/2]

vec3::vec3 ( const Vector v)
inline

cree un vecteur generique a partir des coordonnees du vecteur v.

Definition at line 201 of file vec.h.

201 : x(v.x), y(v.y), z(v.z) {}

◆ vec4() [1/2]

vec4::vec4 ( const Point a)
inline

cree un vecteur generique a partir des coordonnees du point a, (a.x, a.y, a.z, 1).

Definition at line 203 of file vec.h.

203 : x(a.x), y(a.y), z(a.z), w(1.f) {}

◆ vec4() [2/2]

vec4::vec4 ( const Vector v)
inline

cree un vecteur generique a partir des coordonnees du vecteur v, (v.x, v.y, v.z, 0).

Definition at line 204 of file vec.h.

204 : x(v.x), y(v.y), z(v.z), w(0.f) {}

◆ operator()() [1/2]

float Point::operator() ( const unsigned int  i) const
inline

renvoie la ieme composante du point.

Definition at line 207 of file vec.h.

207 { return (&x)[i]; }

◆ operator()() [2/2]

float Vector::operator() ( const unsigned int  i) const
inline

renvoie la ieme composante du vecteur.

Definition at line 208 of file vec.h.

208 { return (&x)[i]; }