Mathc matrices/Fichiers c : mul rot

Un livre de Wikilivres.
Sauter à la navigation Sauter à la recherche


Installer et compiler ces fichiers dans votre répertoire de travail.

Crystal Clear mimetype source c.png mul_rot.c
'
/* ------------------------------------ */
/*  Save as :   mul_rot.c               */
/* ------------------------------------ */
#include "v_a.h"
/* ------------------------------------ */
void fun(void)
{
double alpha = rp_I(360);

double **A    = i_mR(R2, C2);
double **A_t  = i_mR(R2, C2);
double **AA_t = i_mR(R2, C2);
double **A_tA = i_mR(R2, C2);

  clrscrn();
  
      rot2D_mR(A, PI/180.*alpha);
  transpose_mR(A,A_t);
  
  printf(" alpha : %.0f° \n\n",alpha);

  printf(" A : ");
  p_mR(A,10,5,C6);

  printf(" A_t : ");
  p_mR(A_t,10,5,C6);

  printf(" AA_t : ");
  p_mR(mul_mR(A,A_t,AA_t),10,5,C6);
  
  printf(" A_tA : ");
  p_mR(mul_mR(A_t,A,A_tA),10,5,C6);
  
  f_mR(A);
  f_mR(A_t);
  f_mR(AA_t); 
  f_mR(A_tA);
}
/* ------------------------------------ */
int main(void)
{
time_t t;

  srand(time(&t));
  
   do 
         fun();
        
    while(stop_w());
        
  return 0;
}


Ici nous travaillons avec la fonction rot2D_mR().

rot2D_mR(); donne une matrice qui permet d'effectuer des rotations.

Sa transposé est aussi son inverse.

C'est-à-dire que, si on multiplie la matrice par sa transposé on obtient la matrice identité.


Exemple de sortie écran :

 alpha : 305° 

 A : 
  +0.57358   +0.81915 
  -0.81915   +0.57358 

 A_t : 
  +0.57358   -0.81915 
  +0.81915   +0.57358 

 AA_t : 
  +1.00000   +0.00000 
  +0.00000   +1.00000 

 A_tA : 
  +1.00000   +0.00000 
  +0.00000   +1.00000 


 Press return to continue
 Press X      to stop