Outils pour utilisateurs

Outils du site


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

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
back2root:programmation:3d-theories-et-mathematiques-part-1 [2021/08/05 10:46] – Correction matrice rot angle X fraterback2root:programmation:3d-theories-et-mathematiques-part-1 [2022/12/27 01:44] (Version actuelle) frater
Ligne 21: Ligne 21:
 pourtant, il est impératif d'utiliser des radians lorsqu'on fait des calculs trigonométriques, nous allons directement voir la relation entre radian et degré d'angle (180 degré d'angle, correspondent à Π radian) pourtant, il est impératif d'utiliser des radians lorsqu'on fait des calculs trigonométriques, nous allons directement voir la relation entre radian et degré d'angle (180 degré d'angle, correspondent à Π radian)
  
-<WRAP center round box 60%><m 14>eta radian = 180 degre</m></WRAP>+<WRAP round box 60%><m 14>eta radian = 180 degre</m></WRAP>
  
 Donc 1 radian vaut +/- 57.2958 degré d'angle (suivant la valeur de <m 14>eta</m> pour effectuer la conversion) pour connaître la valeur (exacte) d'un radian, il suffit de: Donc 1 radian vaut +/- 57.2958 degré d'angle (suivant la valeur de <m 14>eta</m> pour effectuer la conversion) pour connaître la valeur (exacte) d'un radian, il suffit de:
  
-<WRAP center round box 60%><m 14>1 radian = 180/eta degre</m></WRAP>+<WRAP round box 60%><m 14>1 radian = 180/eta degre</m></WRAP>
  
 Les formules de conversion sont donc les suivantes: Les formules de conversion sont donc les suivantes:
Ligne 31: Ligne 31:
 == degré -> radian == == degré -> radian ==
  
-<WRAP center round box 60%>+<WRAP round box 60%>
 <m 14>x radian = angle * (eta/180)</m> <m 14>x radian = angle * (eta/180)</m>
 </WRAP> </WRAP>
Ligne 38: Ligne 38:
 == radian -> degré == == radian -> degré ==
  
-<WRAP center round box 60%>+<WRAP round box 60%>
 <m 14>x degre = rad * (180/eta)</m> <m 14>x degre = rad * (180/eta)</m>
 </WRAP> </WRAP>
Ligne 50: Ligne 50:
  
 Sans doute le plus simple a comprendre car le plus proche de notre mode « mathématique ». Sans doute le plus simple a comprendre car le plus proche de notre mode « mathématique ».
 +
 +{{back2root:programmation:3d-space-cartesien.png?400}}
  
 Une coordonnée est exprimée « simplement » avec avec trois coordonnées : x, y, z Une coordonnée est exprimée « simplement » avec avec trois coordonnées : x, y, z
Ligne 56: Ligne 58:
  
 C’est le système qui est utilisé pour la géolocalisation ou la définition d’objets céleste ; on parle de coordonnées angulaire (appelées latitude et longitude dans la géolocalisation) et d’un rayon (l’altitude pour ce qui est de la géolocalisation, ou distance dans le cas d’objets céleste) :  C’est le système qui est utilisé pour la géolocalisation ou la définition d’objets céleste ; on parle de coordonnées angulaire (appelées latitude et longitude dans la géolocalisation) et d’un rayon (l’altitude pour ce qui est de la géolocalisation, ou distance dans le cas d’objets céleste) : 
 +
 +{{back2root:programmation:3d-space-spherique.png?400}}
  
 Une coordonnée est exprimée avec un rayon r et deux angles : r, <m 13>theta</m>,<m 13>varphi</m>. Une coordonnée est exprimée avec un rayon r et deux angles : r, <m 13>theta</m>,<m 13>varphi</m>.
Ligne 62: Ligne 66:
  
 Ce système est le moins rependu, et souvent utilisé pour pour l’étude de mouvements hélicoïdaux ou en rotation autour d’un axe. Ce système est le moins rependu, et souvent utilisé pour pour l’étude de mouvements hélicoïdaux ou en rotation autour d’un axe.
 +
 +{{back2root:programmation:3d-space-cylindrique.png?400}}
  
 Une coordonnée est exprimée via deux angles : <m 13>rho</m>, <m 13>varphi</m> et une distance : z Une coordonnée est exprimée via deux angles : <m 13>rho</m>, <m 13>varphi</m> et une distance : z
Ligne 69: Ligne 75:
 === Sphérique → Cartésien === === Sphérique → Cartésien ===
  
-<WRAP center round box 60%>+<WRAP round box 60%>
  
 <m 13>x = r * sin (theta) * cos (phi)</m> <m 13>x = r * sin (theta) * cos (phi)</m>
Ligne 80: Ligne 86:
 === Cylindrique → Cartésien === === Cylindrique → Cartésien ===
  
-<WRAP center round box 60%>+<WRAP round box 60%>
 <m 13>x = rho cos(phi)</m> <m 13>x = rho cos(phi)</m>
  
Ligne 96: Ligne 102:
 Pour additionner 2 matrices, il s’agit de faire la somme de leurs membres: Pour additionner 2 matrices, il s’agit de faire la somme de leurs membres:
      
-<WRAP center round box 60%>+<WRAP round box 60%>
 <m 14>delim{|}{matrix{2}{2}{a1 b1 a2 b2}}{|} + delim{|}{matrix{2}{2}{c1 d1 c2 d2}}{|} = delim{|}{matrix{2}{2}{(a1+c1) (b1+d1) (a2+c2) (b2+d2)}}{|}</m> <m 14>delim{|}{matrix{2}{2}{a1 b1 a2 b2}}{|} + delim{|}{matrix{2}{2}{c1 d1 c2 d2}}{|} = delim{|}{matrix{2}{2}{(a1+c1) (b1+d1) (a2+c2) (b2+d2)}}{|}</m>
 </WRAP> </WRAP>
Ligne 102: Ligne 108:
 Pour la multiplication, on utilisera la technique "**LICOL**" (Ligne Colonne), on multiplie chaque ligne par la colonne. Pour la multiplication, on utilisera la technique "**LICOL**" (Ligne Colonne), on multiplie chaque ligne par la colonne.
  
-<WRAP center round box 60%>+<WRAP round box 60%>
 <m 14> <m 14>
 delim{|}{matrix{2}{2}{a1 b1 a2 b2}}{|} *  delim{|}{matrix{2}{2}{a1 b1 a2 b2}}{|} * 
Ligne 109: Ligne 115:
 </WRAP> </WRAP>
  
-<WRAP center round info 60%>+<WRAP round info 60%>
 **Note sur la multiplication par 1** **Note sur la multiplication par 1**
  
 Dans un calcul simple, il est évident que, lorsque l'on multiplie n'importe quelle valeur par 1 on obtient toujours la valeur d'origine : Dans un calcul simple, il est évident que, lorsque l'on multiplie n'importe quelle valeur par 1 on obtient toujours la valeur d'origine :
  
-<WRAP center round box 60%>+<WRAP round box 60%>
 <m 14>x prime = x * 1</m> <m 14>x prime = x * 1</m>
 </WRAP> </WRAP>
Ligne 123: Ligne 129:
 En calcul matriciel , la valeur '1' se présente comme ceci: En calcul matriciel , la valeur '1' se présente comme ceci:
  
-<WRAP center round box 60%>+<WRAP round box 60%>
 <m 14>delim{|}{matrix{2}{2}{1 0 0 1}}{|}</m> <m 14>delim{|}{matrix{2}{2}{1 0 0 1}}{|}</m>
 </WRAP> </WRAP>
Ligne 129: Ligne 135:
 Pour des questions pratiques, je ne me pencherais que sur le système cartésien, plus lisible et surtout plus commun, mais sachez qu’il est tout a fait possible de convertir une carte de la galaxie (qui est trouvable en coordonnées sphérique) dans un système cartésien:  Pour des questions pratiques, je ne me pencherais que sur le système cartésien, plus lisible et surtout plus commun, mais sachez qu’il est tout a fait possible de convertir une carte de la galaxie (qui est trouvable en coordonnées sphérique) dans un système cartésien: 
  
-<WRAP center round box 60%>+<WRAP round box 60%>
 <m 14>(x,y,z)</m> <m 14>(x,y,z)</m>
 </WRAP> </WRAP>
Ligne 135: Ligne 141:
 et, ainsi la multiplication d'une matrice par '1' se présente comme ceci :  et, ainsi la multiplication d'une matrice par '1' se présente comme ceci : 
  
-<WRAP center round box 60%>+<WRAP round box 60%>
 <m 14> <m 14>
 delim{|}{matrix{3}{1}{x y z}}{|} =  delim{|}{matrix{3}{1}{x y z}}{|} = 
Ligne 145: Ligne 151:
 Comme tous les langages de programmations n'incluent pas nativement le support de calcul matriciel, il convient de traduire ce produit matriciel en fonction simple (ou en une dimension) et de le faire pour chaque membre de la coordonnée que l'on veut calculer, vu la méthode LICOL que nous avons vu plus haut, cela devient donc: Comme tous les langages de programmations n'incluent pas nativement le support de calcul matriciel, il convient de traduire ce produit matriciel en fonction simple (ou en une dimension) et de le faire pour chaque membre de la coordonnée que l'on veut calculer, vu la méthode LICOL que nous avons vu plus haut, cela devient donc:
  
-<WRAP center round box 60%>+<WRAP round box 60%>
 <m 14>x prime = (x*1) + (y*0) + (z*0)</m> <m 14>x prime = (x*1) + (y*0) + (z*0)</m>
  
Ligne 156: Ligne 162:
 Ce qui dans ce cas précis peut s'optimiser par l'application des formules suivantes: Ce qui dans ce cas précis peut s'optimiser par l'application des formules suivantes:
  
-<WRAP center round box 60%>+<WRAP round box 60%>
 <m 14>x prime = x * 1</m> <m 14>x prime = x * 1</m>
  
Ligne 168: Ligne 174:
 Toutefois, pour pouvoir correctement appliquer certaines transformations (notamment la translation), dans certaines littératures, on rends homogènes les matrices, en ajoutant une 4ème valeur w, qui doit TOUJOURS être mise à 1, on parle alors de matrices homogènes : Toutefois, pour pouvoir correctement appliquer certaines transformations (notamment la translation), dans certaines littératures, on rends homogènes les matrices, en ajoutant une 4ème valeur w, qui doit TOUJOURS être mise à 1, on parle alors de matrices homogènes :
  
-<WRAP center round box 60%>+<WRAP round box 60%>
 <m 14> <m 14>
 delim{|}{matrix{4}{4}{  delim{|}{matrix{4}{4}{ 
Ligne 182: Ligne 188:
 Ce qui peut se traduire simplement :  Ce qui peut se traduire simplement : 
  
-<WRAP center round box 60%>+<WRAP round box 60%>
 <m 14>x prime = (x*1) + (y*0) + (z*0) + (w*0)</m> <m 14>x prime = (x*1) + (y*0) + (z*0) + (w*0)</m>
  
Ligne 194: Ligne 200:
 Ou encore en mode "optimisé", afin de démontré que les matrices, c'est simple :  Ou encore en mode "optimisé", afin de démontré que les matrices, c'est simple : 
  
-<WRAP center round box 60%>+<WRAP round box 60%>
 <m 14>x prime = x * 1</m> <m 14>x prime = x * 1</m>
  
Ligne 206: Ligne 212:
 En résumé, un produit matriciel d'une matrice point "P" avec une matrice de transformation "T" s'écrit comme ceci: En résumé, un produit matriciel d'une matrice point "P" avec une matrice de transformation "T" s'écrit comme ceci:
  
-<WRAP center round box 60%>+<WRAP round box 60%>
 <m 14> <m 14>
 delim{|}{matrix{4}{1}{ nx ny nz nw}}{|} =  delim{|}{matrix{4}{1}{ nx ny nz nw}}{|} = 
Ligne 221: Ligne 227:
 Et se résous avec les équations suivantes: Et se résous avec les équations suivantes:
  
-<WRAP center round box 60%>+<WRAP round box 60%>
 <m 14>x prime = (x*xa) + (y*xb) + (z*zb) + (w*xd)</m> <m 14>x prime = (x*xa) + (y*xb) + (z*zb) + (w*xd)</m>
  
Ligne 247: Ligne 253:
 Sans doute la matrice la plus simple, la matrice de transformation d'échelle: Sans doute la matrice la plus simple, la matrice de transformation d'échelle:
  
-<WRAP center round box 60%>+<WRAP round box 60%>
 <m 14> <m 14>
 delim{|}{matrix{4}{4}{  delim{|}{matrix{4}{4}{ 
Ligne 261: Ligne 267:
 Voici les formules a appliquer si l'on désire transformer un point particulier: Voici les formules a appliquer si l'on désire transformer un point particulier:
  
-<WRAP center round box 60%>+<WRAP round box 60%>
 <m 14>x prime = (x*ex) + (y* 0) + (z* 0) + (w* 0)</m> <m 14>x prime = (x*ex) + (y* 0) + (z* 0) + (w* 0)</m>
  
Ligne 274: Ligne 280:
 Si il existe une transformation souvent sous estimée, c'est bien celle-ci, le déplacement d'un point dans l'espace: Si il existe une transformation souvent sous estimée, c'est bien celle-ci, le déplacement d'un point dans l'espace:
  
-<WRAP center round box 60%>+<WRAP round box 60%>
 <m 14> <m 14>
 delim{|}{matrix{4}{4}{  delim{|}{matrix{4}{4}{ 
Ligne 286: Ligne 292:
 Voici les formules a appliquer si l'on désire transformer un point particulier: Voici les formules a appliquer si l'on désire transformer un point particulier:
  
-<WRAP center round box 60%>+<WRAP round box 60%>
 <m 14>x prime = (x* 1) + (y* 0) + (z* 0) + (w*tx)</m> <m 14>x prime = (x* 1) + (y* 0) + (z* 0) + (w*tx)</m>
  
Ligne 298: Ligne 304:
 Rappelez vous que w = 1, et donc nos formules peuvent se traduire par: Rappelez vous que w = 1, et donc nos formules peuvent se traduire par:
  
-<WRAP center round box 60%>+<WRAP round box 60%>
 <m 14>x prime = x+tx</m> <m 14>x prime = x+tx</m>
  
Ligne 316: Ligne 322:
 Effet miroir par rapport au plan x/y (chaque coordonnée 'z' sera inversée): Effet miroir par rapport au plan x/y (chaque coordonnée 'z' sera inversée):
  
-<WRAP center round box 60%>+<WRAP round box 60%>
 <m 14> <m 14>
 delim{|}{matrix{4}{4}{ delim{|}{matrix{4}{4}{
Ligne 328: Ligne 334:
 Voici les formules a appliquer si l'on désire transformer un point particulier: Voici les formules a appliquer si l'on désire transformer un point particulier:
  
-<WRAP center round box 60%>+<WRAP round box 60%>
 <m 14>x prime = (x* 1) + (y* 0) + (z* 0) + (w* 0)</m> <m 14>x prime = (x* 1) + (y* 0) + (z* 0) + (w* 0)</m>
  
Ligne 340: Ligne 346:
  
 Effet miroir par rapport au plan x/z (chaque coordonnée 'y' sera inversée): Effet miroir par rapport au plan x/z (chaque coordonnée 'y' sera inversée):
-<WRAP center round box 60%>+<WRAP round box 60%>
 <m 14> <m 14>
 delim{|}{matrix{4}{4}{ delim{|}{matrix{4}{4}{
Ligne 352: Ligne 358:
 Voici les formules a appliquer si l'on désire transformer un point particulier: Voici les formules a appliquer si l'on désire transformer un point particulier:
  
-<WRAP center round box 60%>+<WRAP round box 60%>
 <m 14>x prime = (x* 1) + (y* 0) + (z* 0) + (w* 0)</m> <m 14>x prime = (x* 1) + (y* 0) + (z* 0) + (w* 0)</m>
  
Ligne 364: Ligne 370:
 Effet miroir par rapport au plan y/z (chaque coordonnée 'x' sera inversée): Effet miroir par rapport au plan y/z (chaque coordonnée 'x' sera inversée):
  
-<WRAP center round box 60%>+<WRAP round box 60%>
 <m 14> <m 14>
 delim{|}{matrix{4}{4}{ delim{|}{matrix{4}{4}{
Ligne 376: Ligne 382:
 Voici les formules a appliquer si l'on désire transformer un point particulier: Voici les formules a appliquer si l'on désire transformer un point particulier:
  
-<WRAP center round box 60%>+<WRAP round box 60%>
 <m 14>x prime = (x*-1) + (y* 0) + (z* 0) + (w* 0)</m> <m 14>x prime = (x*-1) + (y* 0) + (z* 0) + (w* 0)</m>
  
Ligne 392: Ligne 398:
 ======= Autour de l'axe Y, avec un angle de ay degré ======= ======= Autour de l'axe Y, avec un angle de ay degré =======
  
-<WRAP center round box 60%>+<WRAP round box 60%>
 <m 14> <m 14>
 delim{|}{ delim{|}{
Ligne 405: Ligne 411:
 Voici les formules a appliquer si l'on désire transformer un point particulier: Voici les formules a appliquer si l'on désire transformer un point particulier:
  
-<WRAP center round box 60%>+<WRAP round box 60%>
  
 <m 14>x prime = (x* cos(ay)) + (y*       0) + (z* -sin(ay)) + (w* 0)</m> <m 14>x prime = (x* cos(ay)) + (y*       0) + (z* -sin(ay)) + (w* 0)</m>
Ligne 420: Ligne 426:
 ======= Autour de l'axe X, avec un angle de ax degré ======= ======= Autour de l'axe X, avec un angle de ax degré =======
  
-<WRAP center round box 60%>+<WRAP round box 60%>
 <m 14> <m 14>
 delim{|}{ delim{|}{
Ligne 431: Ligne 437:
  
 Voici les formules a appliquer si l'on désire transformer un point particulier: Voici les formules a appliquer si l'on désire transformer un point particulier:
-<WRAP center round box 60%>+<WRAP round box 60%>
  
 <m 14>x prime = (x*      1) + (y * 0) + (z * 0) + (w* 0)</m> <m 14>x prime = (x*      1) + (y * 0) + (z * 0) + (w* 0)</m>
Ligne 446: Ligne 452:
 ======= Autour de l'axe Z, avec un angle de az ° ======= ======= Autour de l'axe Z, avec un angle de az ° =======
  
-<WRAP center round box 60%>+<WRAP round box 60%>
 <m 14> <m 14>
 delim{|}{matrix{4}{4}{ delim{|}{matrix{4}{4}{
Ligne 459: Ligne 465:
 Voici les formules a appliquer si l'on désire transformer un point particulier: Voici les formules a appliquer si l'on désire transformer un point particulier:
  
-<WRAP center round box 60%> +<WRAP round box 60%> 
-<m 14>x prime = (x* cos(az)) + (y* sin(az)) + (z* 0) + (w* 0)</m>+<m 14>x prime = (x*   cos(az)) + (y* sin(az)) + (z* 0) + (w* 0)</m>
  
-<m 14>y prime = (x*-sin(az)) + (y* cos(az)) + (z* 0) + (w* 0)</m>+<m 14>y prime = (x*  -sin(az)) + (y* cos(az)) + (z* 0) + (w* 0)</m>
  
 <m 14>z prime = (x*       0) + (y*       0) + (z* 1) + (w* 0)</m> <m 14>z prime = (x*       0) + (y*       0) + (z* 1) + (w* 0)</m>
back2root/programmation/3d-theories-et-mathematiques-part-1.1628153162.txt.gz · Dernière modification : 2021/08/05 10:46 de frater