matrice rotation
Répondre à la discussion
Affichage des résultats 1 à 26 sur 26

matrice rotation



  1. #1
    ABN84

    Arrow matrice rotation


    ------

    bonsoir,
    l'un de vous connaitrait-il la formule qui permettrait de calculer la matrice rotation à partir du vecteur direction u(u1,u2,u3) et de l'angle theta?
    merci

    -----
    "Engineering is the art of making what you want from what you get"

  2. #2
    invitefa5fd80c

    Re : matrice rotation

    Salut

    Tu trouveras cette formule dans cet article sur Wikipedia.

  3. #3
    ABN84

    Re : matrice rotation

    merci PopolAuQuébec.
    je viens d'ecrire un programme sous matlab me permettant de la calculer, mais je doute fort qu'il soit bon, en particulier la derniere ligne:
    Code:
    function mr(u,t)
    u1=u(1,:);
    u2=u(2,:);
    u3=u(3,:);
    ub=(0 -u3 u2;u3 0 -u1;-u2 u1 0);
    uc11=u1^2;
    uc22=u2^2;
    uc33=u3^2;
    uc12=u1*u2;
    uc13=u1*u3;
    uc23=u2*u3;
    uc=(uc11 uc12 uc13;uc12 uc22 uc23;uc13 uc23 uc33);
    a=cos(t);
    b=1-cos(t);
    c=sin(t);
    id=(1 0 0;0 1 0; 0 0 1);
    mr=a*id+b*uc+c*ub;
    "Engineering is the art of making what you want from what you get"

  4. #4
    invite5e5dd00d

    Re : matrice rotation

    Citation Envoyé par einstein Voir le message
    merci PopolAuQuébec.
    je viens d'ecrire un programme sous matlab me permettant de la calculer, mais je doute fort qu'il soit bon, en particulier la derniere ligne:
    Code:
    function mr(u,t)
    u1=u(1,:);
    u2=u(2,:);
    u3=u(3,:);
    ub=(0 -u3 u2;u3 0 -u1;-u2 u1 0);
    uc11=u1^2;
    uc22=u2^2;
    uc33=u3^2;
    uc12=u1*u2;
    uc13=u1*u3;
    uc23=u2*u3;
    uc=(uc11 uc12 uc13;uc12 uc22 uc23;uc13 uc23 uc33);
    a=cos(t);
    b=1-cos(t);
    c=sin(t);
    id=(1 0 0;0 1 0; 0 0 1);
    mr=a*id+b*uc+c*ub;

    Ben si ça m'a l'air juste, pourquoi penses tu que c'est faux ?

  5. A voir en vidéo sur Futura
  6. #5
    ABN84

    Re : matrice rotation

    c'est la syntaxe que je mets en cause, car en tapant mr([1;3;8],6) dans la fenetre de commande, ça m'indique qu'il ne connait pas mr()
    "Engineering is the art of making what you want from what you get"

  7. #6
    invite5e5dd00d

    Re : matrice rotation

    Pour définir les matrices c'est pas des crochets qu'on met ? Moi j'ai toujours utilisé cette syntaxe...

    par exemple :
    uc=[uc11 uc12 uc13;uc12 uc22 uc23;uc13 uc23 uc33]

    vérifie ça...

  8. #7
    ABN84

    Re : matrice rotation

    l'ecriture de la matrice j'en suis cetain.
    "Engineering is the art of making what you want from what you get"

  9. #8
    invite5e5dd00d

    Re : matrice rotation

    Tu as essayé de supprimer des bouts de codes et d'afficher certains des sous résultats pour voir l'étape qui buguait ?

  10. #9
    ABN84

    Re : matrice rotation

    oui.
    quand j'ecris les instructions une à une dans la fenetre de commande ça fonctionne. mais lorque je les regroupe dans un fichier *.m pour en faire une fonction predefinie, plus rien.
    le probleme se trouve dans la communication entre matlab et le *.m, donc dans les premiere et/ou derniere ligne. du moins, c'est ce que je pense
    "Engineering is the art of making what you want from what you get"

  11. #10
    invite5e5dd00d

    Re : matrice rotation

    Il te faudrait pas utiliser cette syntaxe ?

    Code:
    % Un exemple de fichier FUNCTION
    % ------------------------------
      function y = fonc(x)
         y = x .^ 2;

  12. #11
    ABN84

    Re : matrice rotation

    ok!
    ça donne ceci:
    Code:
    function mr=adir2mr(u,t)
    u1=u(1,:);
    u2=u(2,:);
    u3=u(3,:);
    ub=(0 -u3 u2;u3 0 -u1;-u2 u1 0);
    uc11=u1^2;
    uc22=u2^2;
    uc33=u3^2;
    uc12=u1*u2;
    uc13=u1*u3;
    uc23=u2*u3;
    uc=(uc11 uc12 uc13;uc12 uc22 uc23;uc13 uc23 uc33);
    a=cos(t);
    b=1-cos(t);
    c=sin(t);
    id=(1 0 0;0 1 0; 0 0 1);
    mr=a*id+b*uc+c*ub;
    en l'executant, ça m'indique une erreur à la ligne 5 colonne 11:
    Code:
    ub=(0 -u3 u2;u3 0 -u1;-u2 u1 0);
    "Engineering is the art of making what you want from what you get"

  13. #12
    ABN84

    Re : matrice rotation

    au fait, c'est bon.
    j'ai mal interpreté ton message:
    Pour définir les matrices c'est pas des crochets qu'on met ?
    je croyais que tu me disait de ne pas mettre des crochets. je n'ai meme pas remarqué que j'ai mis des parentheses.
    maintenant, ça marche. merci
    Code:
    function mr=adir2mr(u,t)
    u1=u(1,:);
    u2=u(2,:);
    u3=u(3,:);
    ub=[0 -u3 u2;u3 0 -u1;-u2 u1 0];
    uc11=u1^2;
    uc22=u2^2;
    uc33=u3^2;
    uc12=u1*u2;
    uc13=u1*u3;
    uc23=u2*u3;
    uc=[uc11 uc12 uc13;uc12 uc22 uc23;uc13 uc23 uc33];
    a=cos(t);
    b=1-cos(t);
    c=sin(t);
    id=[1 0 0;0 1 0; 0 0 1];
    mr=a*id+b*uc+c*ub;
    >> mr=adir2mr([2;2;2],5)

    mr =

    3.1490 4.7832 0.9475
    0.9475 3.1490 4.7832
    4.7832 0.9475 3.1490
    "Engineering is the art of making what you want from what you get"

  14. #13
    invite5e5dd00d

    Re : matrice rotation

    Avec plaisir !
    Bon courage pour la suite.

  15. #14
    ABN84

    Re : matrice rotation

    bonsoir,
    pour la suite, on me demande de faire un script.m pour tester la valeur ([3;12;-8],74).
    est ce que vous sauriez quelle est la structure d'un script dans le cas general?
    là tout ce que j'ai ecrit c'est:
    u=[3;12;-8];
    t=74;
    mr=adir2mr(u,t);
    je suppose qu'il manque qq lignes au debut comme pour la fonction.
    merci.

    PS: si vous pouviez m'indiquer uniquement comment s'ecrit un script d'une facon generale, j'aimerais resoudre le probleme de mes propres moyens.
    "Engineering is the art of making what you want from what you get"

  16. #15
    ABN84

    Re : matrice rotation

    petit up !
    "Engineering is the art of making what you want from what you get"

  17. #16
    invite5e5dd00d

    Re : matrice rotation

    C'est quoi adir2mr ?

  18. #17
    ABN84

    Re : matrice rotation

    j'ai juste appelé ainsi la fonction qui me retourne la matrice rotation
    "Engineering is the art of making what you want from what you get"

  19. #18
    invite5e5dd00d

    Re : matrice rotation

    Première question : si tu tapes exactement ça dans la console, est-ce que ça marche ?
    Si oui, utilise alors la même syntaxe qu'utilisée auparavant, que j'ai expliquée dans le post #10.
    Si jamais, ça marche pas, il faut que tu t'intéresse à dans un premie temps ne pas mettre de point virgule dans le "mr=a*id+b*uc+c*ub;" dans ton premier script pour que tu puisses visualiser le résultat de ta fonction en console pour voir si c'est cohérent.
    Ensuite, crée un autre .m, ou cette fois tu essayes de réutiliser la syntaxe que j'ai évoqué.
    Si jamais ça marche pas, c'est qu'il doit falloir appelé la première fonction dans ton deuxième .m. Là je connais pas la syntaxe exacte. Cherche la un peu et essaye tout ça, si jamais ça marche toujours pas, fais moi signe.

    Cordialement

  20. #19
    ABN84

    Re : matrice rotation

    merci sigmar. en enlevant les ";" ça marche
    "Engineering is the art of making what you want from what you get"

  21. #20
    invite5e5dd00d

    Re : matrice rotation

    je suis trop fort

  22. #21
    ABN84

    Re : matrice rotation

    bonsoir,
    j'ai un porbleme avec ce programme:
    Code:
    function x=newton(l,th,w,e,t,th0,xe,ye)
    l1=l(1,:);
    l2=l(2,:);
    l3=l(3,:);
    l4=l(4,:);
    l5=l(5,:);
    th1=th(1,:);
    th2=th(2,:);
    th3=th(3,:);
    j=[-l1*sin(th1)   -0.5*l2*sin(th2)     0              -1     0;
        l1*cos(th1)    0.5*l2*cos(th2)     0               0    -1;
       -l1*sin(th1)   -l2*sin(th2)         l3*sin(th3)     0     0;
        l1*cos(th1)    l2*cos(th2)        -l3*cos(th3)     0     0;
        1              0                   0               0     0];
    
    x=0;
    f=[l1*cos(th1)+0.5*l2*cos(th2)-xe;
       l1*sin(th1)+0.5*l2*cos(th2)-ye;
       l1*cos(th1)+l2*cos(th2)-l3*cos(th3)-l5;
       l1*sin(th1)+l2*sin(th2)-l3*sin(th3)-l4;
       th1-w*t-th0];
    while (dx>e)
    {
        jinv=(j)^(-1);
        dx=-j*f;
        x=x+dx;
    }
    jusqu'à la boucle d'iterations tout va bien c'est à l'interieur de la boucle que ça m'indique une erreur au niveau de
    jinv=(j)^(-1);
    et
    dx=-j*f;
    si je sort jinv de la boucle et que je courcircuite celle ci (autrement dit: j'ecrit x=jinv), le programme marche.
    personnellement je penses que le probleme est lié à l'increment dx, mais je ne sais comment corriger ça.
    peut etre un probleme d'initialisation? mais comment regler ça?
    l'un de vous aurait-il une idée?
    merci
    "Engineering is the art of making what you want from what you get"

  23. #22
    ABN84

    Re : matrice rotation

    si je chage la boucle en:
    while (1)
    {
    jinv=(j)^(-1);
    % dx=-j*f;
    x=jinv;
    }
    il y a tjrs un probleme daus la ligne jinv
    alors que si j'ecris directement:
    jinv=(j)^(-1);
    % dx=-j*f;
    x=jinv;
    ça marche
    "Engineering is the art of making what you want from what you get"

  24. #23
    Chip

    Re : matrice rotation

    La syntaxe des boucles while dans MatLab c'est :

    while test
    ...
    end

    et il n'y a pas d'accolades entourant le bloc d'instructions de la boucle...

  25. #24
    ABN84

    Re : matrice rotation

    merci Chip,
    effectivement ecrit de cette facon ça fonctionne:
    Code:
    function x=newton(l,th,w,e,t,th0,xe,ye)
    l1=l(1,:);
    l2=l(2,:);
    l3=l(3,:);
    l4=l(4,:);
    l5=l(5,:);
    th1=th(1,:);
    th2=th(2,:);
    th3=th(3,:);
    j=[-l1*sin(th1)   -0.5*l2*sin(th2)     0              -1     0;
        l1*cos(th1)    0.5*l2*cos(th2)     0               0    -1;
       -l1*sin(th1)   -l2*sin(th2)         l3*sin(th3)     0     0;
        l1*cos(th1)    l2*cos(th2)        -l3*cos(th3)     0     0;
        1              0                   0               0     0];
    j=[-l1*sin(th1)   -0.5*l2*sin(th2)     0              -1     0;
        l1*cos(th1)    0.5*l2*cos(th2)     0               0    -1;
       -l1*sin(th1)   -l2*sin(th2)         l3*sin(th3)     0     0;
        l1*cos(th1)    l2*cos(th2)        -l3*cos(th3)     0     0;
        1              0                   0               0     0];
    
    x=0;
    f=[l1*cos(th1)+0.5*l2*cos(th2)-xe;
       l1*sin(th1)+0.5*l2*cos(th2)-ye;
       l1*cos(th1)+l2*cos(th2)-l3*cos(th3)-l5;
       l1*sin(th1)+l2*sin(th2)-l3*sin(th3)-l4;
       th1-w*t-th0];
    dx=e+1;
    while dx>e
        jinv=(j)^(-1);
        dx=-j*f;
        x=x+dx;
        end
    neammoin, ça ne fonctionne pas comme ça devrait, car ça donne le meme resultat sans la boucle while. ce qui veut dire qu'il n'y a pas d'iterations, et donc qu'il obtient le resultat des la premiere iteration. c'est pas normal!
    l'un de vous saurait-il pourquoi?
    merci
    "Engineering is the art of making what you want from what you get"

  26. #25
    invite5e5dd00d

    Re : matrice rotation

    Tu réafécte une valeur à dx dans la boucle. Il se peut que cette valeur ne soit plus supérieure à e après, non ?
    Ou alors les deux types de variable (de dx et de e) ne sont pas comparables, dans un cas un tableau, dans un autre un scalaire par exemple ? J'ai pas vérifié.

  27. #26
    ABN84

    Re : matrice rotation

    bonsoir,
    Tu réafécte une valeur à dx dans la boucle. Il se peut que cette valeur ne soit plus supérieure à e après, non ?
    c'est effectivement une possibilité. mais j'ai fais le test avec plusieurs valeurs de tx, est le resultat est tjrs le meme et le temps de calcul aussi.
    quant à la compatibilité , dx et e sont tous deux des scalaires.
    "Engineering is the art of making what you want from what you get"

Discussions similaires

  1. La rotation de la lune?? ou la rotation autour de la Terre....
    Par invite8c2a9674 dans le forum Archives
    Réponses: 48
    Dernier message: 26/12/2011, 17h11
  2. Matrice d'une rotation dans une base (a,b)
    Par Bleyblue dans le forum Mathématiques du supérieur
    Réponses: 4
    Dernier message: 04/12/2007, 22h30
  3. Matrice de rotation complexe
    Par invite4b31cbd7 dans le forum Mathématiques du supérieur
    Réponses: 12
    Dernier message: 03/12/2006, 17h49
  4. matrice d'une rotation
    Par invite3596c80a dans le forum Mathématiques du supérieur
    Réponses: 4
    Dernier message: 26/03/2005, 22h13
  5. proble de matrice de rotation d'un plan
    Par invite21e5aabe dans le forum Mathématiques du supérieur
    Réponses: 7
    Dernier message: 10/02/2005, 08h31