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 [2022/09/04 23:47] – [Le système cartésien] 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 51: Ligne 51:
 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 ».
  
-{{drawio>back2root:programmation:cartesien.png}}+{{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 58: 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 64: 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 71: 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 82: 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 98: 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 104: 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 111: 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 125: 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 131: 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 137: 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 147: 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 158: 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 170: 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 184: 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 196: 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 208: 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 223: 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 249: 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 263: 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 276: 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 288: 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 300: 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 318: 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 330: 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 342: 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 354: 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 366: 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 378: 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 394: 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 407: 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 422: 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 433: 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 448: 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 461: 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>
  
back2root/programmation/3d-theories-et-mathematiques-part-1.1662328053.txt.gz · Dernière modification : 2022/09/04 23:47 de frater