Outils pour utilisateurs

Outils du site


back2root:programmation:3d-theories-et-mathematiques-part-2

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
tutoriaux:3d-theories-et-mathematiques-part-2 [2021/05/03 02:26] – [Centrer l'écran] fraterback2root:programmation:3d-theories-et-mathematiques-part-2 [2023/01/07 11:01] (Version actuelle) – ↷ Liens modifiés en raison d'un déplacement. frater
Ligne 1: Ligne 1:
-====== Tutoriaux: 3D : Théories et Mathématiques - PART 2 ======+====== 3D : Théories et Mathématiques - PART 2 ======
  
  
Ligne 14: Ligne 14:
 Si l'on désire représenter un point 3D en 2D, après transformation(s), on peut simplement ignorer la coordonnées 'Z' Si l'on désire représenter un point 3D en 2D, après transformation(s), on peut simplement ignorer la coordonnées 'Z'
  
-<WRAP center round box 60%>+<WRAP round box 60%>
 <m 14>x prime = x</m> <m 14>x prime = x</m>
  
Ligne 38: Ligne 38:
 Si l'on désire représenter un point 3D en 2D, après transformation(s), on simuler l'éloignement (par rapport à l'observateur) en faisant un rapport sur la valeur z, après transformation: Si l'on désire représenter un point 3D en 2D, après transformation(s), on simuler l'éloignement (par rapport à l'observateur) en faisant un rapport sur la valeur z, après transformation:
  
-<WRAP center round box 60%>+<WRAP round box 60%>
  
 <m 14>x prime = x / z</m> <m 14>x prime = x / z</m>
Ligne 75: Ligne 75:
  
 la projection sera dès lors calculée avec les formules suivantes la projection sera dès lors calculée avec les formules suivantes
-x= x*(ez/z) + ex + 
-y= y*(ez/z) + ey+<WRAP round box 60%> 
 +<m 14>prime = x*(ez/z) + ex</m> 
 + 
 +<m 14>prime = y*(ez/z) + ey</m> 
 +</WRAP>
  
 Si l'on considère que ex = -(sizex/2) et ey = -(sizey/2), et que ez=1, alors nous retombons sur la formule de la projection du pauvre... qui tiens nativement compte du centrage de l'écran... Si l'on considère que ex = -(sizex/2) et ey = -(sizey/2), et que ez=1, alors nous retombons sur la formule de la projection du pauvre... qui tiens nativement compte du centrage de l'écran...
Ligne 88: Ligne 92:
 Si l'on désire appliquer les transformations en prenant en compte la position de l'observateur, il convient d'appliquer la transformation de la caméra, cette transformation inclu une rotation autour de l'axe Z, de l'axe Y et de l'axe X de chaque point par rapport à la position de l'observateur/caméra et à son orientation (du regard). Si l'on désire appliquer les transformations en prenant en compte la position de l'observateur, il convient d'appliquer la transformation de la caméra, cette transformation inclu une rotation autour de l'axe Z, de l'axe Y et de l'axe X de chaque point par rapport à la position de l'observateur/caméra et à son orientation (du regard).
  
-Soit:+ 
 +<WRAP round info 100%>
 x,y,z : coordonnées cartésienne du point a transformer x,y,z : coordonnées cartésienne du point a transformer
 +
 ox,oy,oz : coordonnées cartésienne, position de l'oeil dans l'espace. ox,oy,oz : coordonnées cartésienne, position de l'oeil dans l'espace.
 +
 ax,ay,az : angles de vue , ces angles définissent la direction du regard à partir du point de l'observateur (ox,oy,oz). ax,ay,az : angles de vue , ces angles définissent la direction du regard à partir du point de l'observateur (ox,oy,oz).
 +</WRAP>
  
 Alors la matrice de transformation devient Alors la matrice de transformation devient
-|x'  | 1        0       0|   | cos(ay) 0 -sin(ay)|   | cos(az) sin(az) 0|    |x|   |ox| 
-|y'| = | 0  cos(ax) sin(ax)| * |                1| * |-sin(az) cos(az) 0| * (|y| - |oy|) 
-|z'  | 0 -sin(ax) cos(ax)|   | sin(ay) 0  cos(ay)|               0 1|    |z|   |oz| 
  
-Note: +<WRAP round box 95%> 
 +<m 14> 
 +delim{|}{  matrix{4}{1}  {nx ny nz nw}}{|} =  
 +delim{|}{  matrix{4}{4}  { 1  0  0 0 0 (cos(ax)) (sin(ax)) 0  0 ( -sin(ax)) (cos(ax)) 0 0 0 0 1 }}{|} * 
 +delim{|}{  matrix{4}{4}  { (cos(ay))  0  ( -sin(ay)) 0 0  0  1 0 (sin(ay)) (cos(ay)) 0 0 0 0 0 1 }}{|} *  
 +delim{|}{  matrix{4}{4}  { (cos(az))  ( -sin(az)) 0  0 ( -sin(az)) (cos(az)) 0 0  0 0 1 0 0 0 0 1 }}{|} * ( 
 +delim{|}{  matrix{4}{1}  { x y z w}}{|} -  
 +delim{|}{  matrix{4}{1}  { ox oy oz ow }}{|}  
 +
 +</m> 
 +</WRAP>
  
-Dans l'introduction à la projection, j'ai évoqué l'observateur comme étant un point remarquable du système localisé en (0,0,0), et ayant une direction de regard a angle nul (0°,0°,0°) 
  
-Si l'on n'a pas d'angle de vue (ax=ay=az=0), les matrices de rotation deviennent des matrices "unités" (car (sin(0)=0 et cos(0)=1), et l'on peut dès lors simplifier le produit en "translation" + 
-|x'  |x|   |ox| +<WRAP round tip 100%> 
-|y'| = |y| - |oy| +Dans l'introduction à la projection, j'ai évoqué //l'observateur// comme étant un point remarquable du système localisé en (0,0,0), et ayant une direction de regard a angle nul (0°,0°,0°) 
-|z'  |z|   |oz|+ 
 +Si l'on n'a pas d'angle de vue (ax=ay=az=0), les matrices de rotation deviennent des matrices "unités" (car (sin(0)=0 et cos(0)=1), et l'on peut dès lors simplifier le produit en "translation": 
 + 
 +<WRAP round box 60%> 
 +<m 14> 
 +delim{|}{  matrix{4}{1}  {nx ny nz nw}}{| 
 +delim{|}{  matrix{4}{1}  {x z w}}{|
 +delim{|}{  matrix{4}{1}  {ox oy oz ow}}{|}  
 +</m> 
 +</WRAP>
  
 Mais il ne faut pas oublié que l'observateur est le 0,0,0; ce qui veut dire que ox=oy=oz=0, alors  Mais il ne faut pas oublié que l'observateur est le 0,0,0; ce qui veut dire que ox=oy=oz=0, alors 
-|x'  |x| + 
-|y'| = |y| +<WRAP round box 60%> 
-|z'  |z|+<m 14> 
 +delim{|}{  matrix{4}{1}  {nx ny nz nw}}{| 
 +delim{|}{  matrix{4}{1}  {x z w}}{| 
 +</m> 
 +</WRAP>
  
 Et l'on retombe bien sur une matrice toute simple. Et l'on retombe bien sur une matrice toute simple.
 +</WRAP>
 +
  
 ===== Conclusions ===== ===== Conclusions =====
Ligne 120: Ligne 149:
 vec quelques définitions voici les formules que nous allons implémenter. vec quelques définitions voici les formules que nous allons implémenter.
  
-soit:+<WRAP round info 95%>
 ox,oy,oz    : coordonnées cartésienne, position de l'oeil dans l'espace. ox,oy,oz    : coordonnées cartésienne, position de l'oeil dans l'espace.
 +
 +w           : 1 (valeur de 1 pour simplifier)
 +
 x[],y[],z[] : coordonnées cartésienne des points a transformer x[],y[],z[] : coordonnées cartésienne des points a transformer
-ex,ey,ez    : coordonnées cartésienne de l'écran + 
-                   avec ex=-(sizex/2), ey=-(sizey/2) et ez=1+ex,ey,ez    : coordonnées cartésienne de l'écran avec ex=-(sizex/2), ey=-(sizey/2) et ez=1 
 ax,ay,az    : angles de vue , ces angles définissent la direction du regard à partir du point de l'observateur (ox,oy,oz). ax,ay,az    : angles de vue , ces angles définissent la direction du regard à partir du point de l'observateur (ox,oy,oz).
-                   cx = cos(ax), sx = sin(ax), cy = cos(ay), ...+ 
 +cx = cos(ax), sx = sin(ax), cy = cos(ay), ... 
 nx,ny,,nz   : coordonnées cartésienne, position temporaire de calcul nx,ny,,nz   : coordonnées cartésienne, position temporaire de calcul
 +</WRAP>
  
 pseudo code: pseudo code:
 +
 +<code>
 foreach  foreach 
 { {
Ligne 143: Ligne 181:
   y' = ny*(ez/nz) + ey   y' = ny*(ez/nz) + ey
 } }
 +</code>
  
-<nspages tutoriaux -simpleList -h1 -exclude:start -textPages="Tutoriaux disponible">+<nspages back2root/programmation -simpleList -h1 -exclude:start -textPages="Back2Root">
  
 ====== Références ====== ====== Références ======
 +<WRAP round box>
  
 +<WRAP group>
 +<WRAP column>
 +{{ books:covers:3-d-et-vrai-relief-images-de-synthese.jpg?nolink}}
 +</WRAP>
 +<WRAP column>
 **3D et vrai Relief**  **3D et vrai Relief** 
-J.J.Meyer + 
 +J.J.Meyer 
 ISBN: 2-7091-0990-5 ISBN: 2-7091-0990-5
 +
 https://www.amazon.co.uk/3D-vrai-relief-images-synthese/dp/2709109905 https://www.amazon.co.uk/3D-vrai-relief-images-synthese/dp/2709109905
  
 +https://archive.org/details/3-d-et-vrai-relief-images-de-syntheseacme-rare/mode/2up
 +</WRAP>
 +</WRAP>
 +
 +<WRAP group>
 +<WRAP column>
 +{{ books:covers:pcinterdit.jpg?nolink|}}
 +</WRAP>
 +<WRAP column>
 **PC Interdit 2eme édition Windows 95 & Jeux 3D**  **PC Interdit 2eme édition Windows 95 & Jeux 3D** 
 +
 Boris Bertelsons, Mathias Rasch et Jan Erik Hoffmann Boris Bertelsons, Mathias Rasch et Jan Erik Hoffmann
 +
 ISBN: 2-7429-0500-6 ISBN: 2-7429-0500-6
 +
 https://www.amazon.fr/PC-interdit-Collectif/dp/2742905006 https://www.amazon.fr/PC-interdit-Collectif/dp/2742905006
  
 +https://archive.org/details/pcinterdit0000bert/page/n6/mode/2up
 +</WRAP>
 +</WRAP>
 +
 +<WRAP group>
 +<WRAP column>
 +{{ books:covers:internetfordummies.jpg?nolink|}}
 +</WRAP>
 +<WRAP column>
 **Mathematics of 3D Graphics** **Mathematics of 3D Graphics**
 +
 Juan David Gonzalez Cobas Juan David Gonzalez Cobas
 +
 Universidad de Oviedo Universidad de Oviedo
 +
 Blender Conference 2004 Blender Conference 2004
 +
 https://www.cs.trinity.edu/~jhowland/class.files.cs357.html/blender/blender-stuff/m3d.pdf https://www.cs.trinity.edu/~jhowland/class.files.cs357.html/blender/blender-stuff/m3d.pdf
- 
-http://www.ecere.com/3dbhole/mathematics_of_3d_graphics.html 
  
 https://en.wikipedia.org/wiki/3D_projection https://en.wikipedia.org/wiki/3D_projection
  
-https://fr.wikipedia.org/wiki/Projection_(g%C3%A9om%C3%A9trie)+ 
 +https://fr.wikipedia.org/wiki/Projection_affine 
  
 https://fr.wikipedia.org/wiki/Perspective_axonom%C3%A9trique https://fr.wikipedia.org/wiki/Perspective_axonom%C3%A9trique
 +</WRAP>
 +</WRAP>
 +</WRAP>
 +
 +
 +
back2root/programmation/3d-theories-et-mathematiques-part-2.1620001580.txt.gz · Dernière modification : 2021/05/03 02:26 de frater