IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Algorithmes et structures de données Discussion :

Néophite de rotation de plan en R3


Sujet :

Algorithmes et structures de données

  1. #1
    Membre éprouvé

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    582
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2003
    Messages : 582
    Points : 915
    Points
    915
    Par défaut Néophite de rotation de plan en R3
    Bonjour, voilà mon petit probleme,
    je connais l'equation d'un plan et j'aimerais pouvoir le faire
    tourner au tour d'un certain point:



    l'équation du plan est dans un vecteur sous la forme
    linéaire je crois: ax+ by+ cz + d = 0

    selon ma compréhension, a b et c représente en faite
    le vecteur "normal" au plan.

    si j'arrive a faire une rotation de mon vecteur
    et a re-calculer les nouveaux a b et c ,
    l'équation de mon plan "tourné" sera:
    a'x + b'y +c'z + d =0

    si oui, comment je peux le faire?
    avec des matrices?
    si avec matrices... 3x3 ou 4x4... comment j'initialise tout ca?
    exemple et/ou explication serait le bienvenue!

    Gros Merci
    Comment dupliquer un disque...ça vous intéresse?
    Tutoriel et code source delphi ici

  2. #2
    Membre averti
    Avatar de Strab
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    338
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 338
    Points : 330
    Points
    330
    Par défaut
    J'ai quelques souvenirs de math là dessus mais c'est vague.
    Il me semble que quand tu multiplies ton vecteur par une matrice du type
    |cos a sin a 0|
    |-sin a cos a 0|
    | 0 0 1|

    tu obtiens les coordonnées du vecteur après une rotation d'angle a autour de je ne sais plus quel axe.
    Je ne suis pas très sûr de la forme exacte de la matrice, mais ça devrait te donner une piste. Recherche dans les cours de math (algèbre, espace vectoriels, géométrie dans l'espace) de niveau BAC +1/+2.

    Bon courage

  3. #3
    Membre régulier

    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 110
    Points : 99
    Points
    99
    Par défaut
    Il me semble que pour une rotation autour de x puis de y puis de z, la matrice de rotation est le produit des matrice mx, my et mz avec :

    1 0 0
    mx = 0 CX SX
    0 -SX CX

    CY 0 SY
    my = 0 1 0
    -SY 0 CY

    CZ SZ 0
    mz = -SZ CZ 0
    0 0 1

    CX représente le cosinus de l'angle de rotation autour de x, SX le sinus etc...
    La multiplication donne donc :

    mr = mx * my *mz

    Mais ATTENTION les produits de matrices ne sont pas commutatives alors regarde bien l'ordre des rotations !!!
    Pour voir qu'il fait noir, on n'a pas besoin d'être une lumière.

    Il faut cueillir les cerises avec la queue. J'avais déjà du mal avec la main !

  4. #4
    Membre confirmé
    Profil pro
    Enseignant
    Inscrit en
    Avril 2004
    Messages
    440
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2004
    Messages : 440
    Points : 451
    Points
    451
    Par défaut
    l'équation de mon plan "tourné" sera:
    a'x + b'y +c'z + d =0
    Non... Car d change aussi ! Il représente la distance du plan à l'origine, il doit donc être aussi calculé !
    Pour ça tu n'as qu'à prendre un point (A,B,C) du plan de départ , auquel tu effectue la rotation : le point résultant (A',B',C') doit appartenir au plan tourné donc tu as :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    d' = -(a'A' + b'B' + c'C')
    A+
    "Cultiver les sciences et ne pas aimer les hommes, c'est allumer un flambeau et fermer les yeux." Proverbe chinois

  5. #5
    Membre éprouvé

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    582
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2003
    Messages : 582
    Points : 915
    Points
    915
    Par défaut
    Merci mathieu_t pour
    Non... Car d change aussi ! Il représente la distance du plan à l'origine, il doit donc être aussi calculé !
    et merci norac pour
    mr = mx * my *mz
    cependant, une fois que j'ai mr...comment je l'utilise?
    est-ce que je doit créer une matrice avec mon plan (MP)
    pour faire ensouite MP*mr?

    est-ce qu'avec les matrices mon d peut ce calculer en même temps
    que a,b et c?

    est-ce que je devrais plutot utiliser des matrices 4x4 pour faire ma rotation?
    avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    Au tour de l'axe X :
    |  1      0       0     0|
    |  0     Cos(q) -Sin(q) 0|
    |  0     Sin(q)  Cos(q) 0|
    |  0      0       0     1|
     
    l'axe Y :
     
    |Cos(f)   0     Sin(f)  0|
    |  0      1      0      0|
    |-Sin(f)  0     Cos(f)  0|
    |  0      0      0      1|
     
    l'axe Z :
    |Cos(g) -Sin(g)  0      0|
    |Sin(g)  Cos(g)  0      0|
    |  0      0      1      0|
    |  0      0      0      1|
    Comment dupliquer un disque...ça vous intéresse?
    Tutoriel et code source delphi ici

  6. #6
    Membre confirmé
    Profil pro
    Enseignant
    Inscrit en
    Avril 2004
    Messages
    440
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2004
    Messages : 440
    Points : 451
    Points
    451
    Par défaut
    cependant, une fois que j'ai mr...comment je l'utilise?
    Il suffit alors de calculer la rotation du vecteur normal (a b c) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Transposée((a' b' c')) = mr*Transposée((a b c))
    (Produit matriciel quoi...)

    Ensuite, tu n'as plus qu'à calculer d' par l'équation que je t'ai donné : il faut prendre un point qui appartient au plan et le rotationnerpour obtenir d' !
    C'est relativement facile de trouver un point appartenant au plan :
    tu prends par exemple x et y à 0 ce qui te donne z = -d/c (si c non nul évidemment) -> Le point (0,0,-d/c) appartient à ton plan de départ ! Il suffit de le tourner par le produit matriciel pour avoir le point (A' B' C') !

    De +, tes matrices 4*4 sont fausses, car tu obtiens d = d' (si je prends la 1ère que tu donnes) ! alors que ça n'est pas forcément vrai.
    A+
    "Cultiver les sciences et ne pas aimer les hommes, c'est allumer un flambeau et fermer les yeux." Proverbe chinois

  7. #7
    Membre régulier

    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 110
    Points : 99
    Points
    99
    Par défaut
    les matrices de Eric Boisvert sont correcte !!
    Ce sont des matrices homogènes

    ici d represente le facteur d'echelle !!! ils sont à 1 par défauts et peuvent changer de valeurs par simplificatin des matrices

    donc tu peux faire

    Mr = Mx*My*Mz

    (a1 b1 c1 d1)' = Mr *(a b c d)'
    Pour voir qu'il fait noir, on n'a pas besoin d'être une lumière.

    Il faut cueillir les cerises avec la queue. J'avais déjà du mal avec la main !

  8. #8
    Membre confirmé
    Profil pro
    Enseignant
    Inscrit en
    Avril 2004
    Messages
    440
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2004
    Messages : 440
    Points : 451
    Points
    451
    Par défaut
    Faux !!!!!

    Je m'explique : effectivement c'est bien des matrices homogènes, et ici la formule (a1 b1 c1 d1)' = Mr *(a b c d)' ne fonctionne QUE si on fait des rotations autour de l'origine !! Dans ce cas alors c'est en accord avec le reste car pour toute rotation centré sur l'origine, la distance par rapport à l'origine (liée à d) ne change pas !
    MAIS pour une rotation autour d'un point quelconque, la distance change !! L'équation (a1 b1 c1 d1)' = Mr *(a b c d)' serait vrai si a,b,c,d sont exprimés dans le repère lié au centre de rotation !!! Sinon c'est faux !

    Ou alors je me goure encore ??
    "Cultiver les sciences et ne pas aimer les hommes, c'est allumer un flambeau et fermer les yeux." Proverbe chinois

  9. #9
    Membre éprouvé

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    582
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2003
    Messages : 582
    Points : 915
    Points
    915
    Par défaut
    Donc si je comprend bien, j'ai aucun avantage à utiliser des matrices 4x4?

    je dois "tourner" mon vecteur a b c pour trouver a' b' c' avec une
    matrice de rotation 3x3 et ensuite
    recalculer mon d en prenant un point du plan original, je le tourne
    avec la matrice de rotation 3x3 et recalcule d.

    Y a plusieurs sites qui parle du "gimbal lock" avec des 3x3...mais je ne
    saisi pas bien ce problème.

    ensuite mathieu_t, quand tu écrit transposée dans:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Transposée((a' b' c')) = mr*Transposée((a b c))
    je saisi pas vraiment quoi faire...en faite, c'est quoi transposée un vecteur?

    Merci de mettre un peu de lumière dans les gigantesques coins obscures de mon ignorance!
    Comment dupliquer un disque...ça vous intéresse?
    Tutoriel et code source delphi ici

  10. #10
    Membre confirmé
    Profil pro
    Enseignant
    Inscrit en
    Avril 2004
    Messages
    440
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2004
    Messages : 440
    Points : 451
    Points
    451
    Par défaut
    La transposée de (a b c) qui s'écrit aussi (a b c)' ou dans mon cas (pour être plus clair) Transposée((a b c)) est :

    a
    b
    c

    En fait tu "renverses" ton vecteur 1x3 en un vecteur 3x1...
    J'ai écris comme ça car c'est plus simple d'écriren ligne qu'en colonne...
    Néamoins, le vecteur d'entrée doit être 3x1 et non 1x3 (question de taille de matrice pour le produit matriciel)...

    ça marche aussi pour les matrices où la transposée d'une matrice nxm est une matrice mxn...

    A+
    "Cultiver les sciences et ne pas aimer les hommes, c'est allumer un flambeau et fermer les yeux." Proverbe chinois

  11. #11
    Membre éprouvé

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    582
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2003
    Messages : 582
    Points : 915
    Points
    915
    Par défaut
    Tout a fait claire!

    j'essaie de mettre tout ca en oeuvre...
    (ca va prendre un certain temps vue que c'est à
    "temps partiellement plein" que je peux m'y mettre!)

    Gros Merci
    Comment dupliquer un disque...ça vous intéresse?
    Tutoriel et code source delphi ici

  12. #12
    Membre confirmé
    Profil pro
    Enseignant
    Inscrit en
    Avril 2004
    Messages
    440
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2004
    Messages : 440
    Points : 451
    Points
    451
    Par défaut
    Il ya un truc qui me revient soudain...
    En fait je crois qu'on peut se servir des coordonnées homogènes (cad matrices 4*4) si on considère que l'on se ramène à l'origine via une translation puis qu'on effectue les rotations : ex :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    |  1      0       0    0|
    |  0     Cos(q) -Sin(q) 0|
    |  0     Sin(q)  Cos(q) 0|
    |  Tx     Ty      Tz    1|
    est la matrice Mr qui si elle est multipliée par Transposée(a b c d) donne la rotation et translation appliquée au vecteur (a b c d)...
    Ensuite via la matrice Tinv
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    |  1  0  0  0|
    |  0  1  0  0|
    |  0  0  1  0|
    |  Tx Ty Tz 1|
    qui nous donne la translation inverse, on ne change que d en revenant au point d'origine (le poitn rouge de la figure)!!

    Donc pour résumer, et surtout si je ne me trompe pas, la rotation du plan autour d'un point selon l'axe x est définie par :

    Transposée(a' b' c' d') = Tinv*Mr*Transposée (a b c d) ...

    A vérifier, mais il me semble que c'est ça !

    A+
    "Cultiver les sciences et ne pas aimer les hommes, c'est allumer un flambeau et fermer les yeux." Proverbe chinois

  13. #13
    Membre éprouvé

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    582
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2003
    Messages : 582
    Points : 915
    Points
    915
    Par défaut
    Alors, j'vais commencer par ta dernière idée!

    Elle me plait beaucoup!

    Si quelqu'un peut le confirmé avant moi, ce serait bien...
    de toute facon, j'vous en redonne des nouvelles!

    À suivre...Merci
    Comment dupliquer un disque...ça vous intéresse?
    Tutoriel et code source delphi ici

  14. #14
    Membre régulier

    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 110
    Points : 99
    Points
    99
    Par défaut
    tu n'a pas tors mais moi non plus !!!

    Si le centre de rotation n'est pas l'origine du repair, il suffit d'effectuer un changement de repair avant les rotations !!!

    (a1 b1 c1 d1)' = (tx ty tz 1)' * (a b c d)'

    et tu peux toujours utiliser les matrices homogènes
    Pour voir qu'il fait noir, on n'a pas besoin d'être une lumière.

    Il faut cueillir les cerises avec la queue. J'avais déjà du mal avec la main !

  15. #15
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    L'équation de ton plan : ax+by+cz+d=0 .
    Le vecteur U =[a,b,c] est un vecteur normal au plan et de longueur u = sqrt(a^2+b^2+c^2) . |d|/u est la distance du plan à l'origine
    La distance du centre de rotation M0= (x0,y0,z0) au plan est d0= | ax0+by0+cz0+d|/u
    Après rotation, la direction du vecteur normal a changé U' =[a',b',c'] avec U' = R U , R étant la matrice de rotation.
    Comme la rotation conserve les longueurs u'=u et la distance d'0 de M0 au nouveau plan est inchangée et égale à d0. Alors :
    | ax0+by0+cz0+d| = | a'x0+b'y0+c'z0+d'|
    d'où on tire la valeur de d' = d+(a'-a)x0+(b'-b)y0+(c'-c)z0
    ou d' = -d+(a'+a)x0+(b'+b)y0+(c'+c)z0,
    solutions équivalentes puisqu'on passe de l'une à l'autre en changeant le signe de a,b,c,d ce qui ne change pas le plan de départ ou de a',b',c',d' ce qui laisse invariant le plan d'arrivée.
    En résumé,
    calculer la nouvelle normale [a',b',c']T = R [a,b,c]T , R étant la matrice de rotation (dont les expressions ont été données ailleurs)
    calculer d' = d+(a'-a)x0+(b'-b)y0+(c'-c)z0

    [Edit]
    une interversion de a et a' , b et b' c et c' s'est glissée dans le calcul de d'
    le résultat correct est
    calculer d' = d+(a-a')x0+(b-b')y0+(c-c')z0
    [\Edit]
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

  16. #16
    Membre confirmé
    Profil pro
    Enseignant
    Inscrit en
    Avril 2004
    Messages
    440
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2004
    Messages : 440
    Points : 451
    Points
    451
    Par défaut
    Citation Envoyé par norac
    tu n'a pas tors mais moi non plus !!!

    Si le centre de rotation n'est pas l'origine du repair, il suffit d'effectuer un changement de repair avant les rotations !!!

    (a1 b1 c1 d1)' = (tx ty tz 1)' * (a b c d)'

    et tu peux toujours utiliser les matrices homogènes
    Oui !! Bon disons que j'ai réfléchi un peu trop vite...

    Diogene oui tu as raison mais tout ça a déjà été dit avant !

    A+
    "Cultiver les sciences et ne pas aimer les hommes, c'est allumer un flambeau et fermer les yeux." Proverbe chinois

  17. #17
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    mathieu_t a écrit :
    mais tout ça a déjà été dit avant !
    Alors, qq chose a du m'échapper car j'ai vu beaucoup de discours sur le changement de repère pour faire tourner un point du plan (il faut déjà en déterminer un ce qui sans être difficile est pénible compte tenu des cas particuliers , a = 0 , b = 0 ...) dans le seul but d'obtenir la nouvelle valeur d' de d et fort peu sur l'expression de d'. Si on connaît d', effectuer les changements de repère est inutile.
    Il n'y a aucune necessité de changer de repère avant la rotation de (a,b,c) puisqu'il s'agit de faire une rotation sur une direction et pas sur un point et on n'a pas besoin d'introduire des matrices supplémentaires pour effectuer ce changement ( a moins d'un gout pervers pour les matrices )alors que le calcul direct est immédiat.
    Changeons de repère :
    ax+by+cz+d=0 Dans le repère d'origine
    a(X+x0)+...+d=0 Dans le repère centré sur M0
    aX+... +(d+ax0+...) = 0
    Rotation du vecteur (abc) -> (a'b'c') = R(a,b,c)
    Le nouveau plan :
    a'X+... +(d+ax0+...) = 0 ( le terme constant est le même)
    retour au repère initial
    a'(x-x0)+...+(d+ax0+...) = 0 soit
    a'x +...+ (d +(a-a')x0 +...) =0
    Et on obtient le résultat précédent.
    Pourquoi chercher plus loin que la seule matrice de rotation ?
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

  18. #18
    Membre averti
    Homme Profil pro
    Inscrit en
    Juillet 2002
    Messages
    705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 705
    Points : 393
    Points
    393
    Par défaut
    http://www.cs.unc.edu/~mcmillan/comp136/Lecture15/index.html

    Des petits cours;

    Juste une remarque. Je ne suis pas spécialisate en la matière mais j'avais remarqué, que la rotation sur les axes X, Y, Z qui n'est pas commutative pouvait etre remplacé par un système de coordonnées sphériques plus interessant, car commutatif.

    Un point dans un repère sphérique possède une longitude, une latitude, une norme, et angle de rotation autour de du vecteur qu'il forme. Comme c'est un point, cet angle à peu d'importance pour la représentation.
    Pour un objet en revanche, on peu imaginer un avion ou missile, et lui affecter un vecteur directeur qui va de la queue vers le nez.
    On connait la direction de ce vecteur avec la latitude et longitude, et l'inclinaison de l'avion autour de ce vecteur avec l'angle d'axe. Ca correspond au roulis, tangage et pallant ou assiette (je crois) de l'avion.

    Sur le plan des calculs je n'ai pas réussi à simplifier, les systèmes de coordonnées (je ne suis pas un bon).

    Voilà, ca vous donnera peut etre des idées.
    Si vous essayer avec un objet de faire tourner cet objet sur la longitude, lattitude et angle d'axe, puis en utilisant un autre ordre, vous verrez que c'est commutatif. Génial pour les calculs et très pratique pour les orientations et notamment pour les calculs de bras robots.

    Pour revenir à notre système de coordonnées cartésiennes non commutatives on remarque qu'un rotation d'un objet (en position initial) sur Z --> l'ange d'axe, puis sur X --> lattitude et enfin sur Y --> longitude.

  19. #19
    Membre éprouvé

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    582
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2003
    Messages : 582
    Points : 915
    Points
    915
    Par défaut
    Citation Envoyé par diogene
    En résumé,
    calculer la nouvelle normale [a',b',c']T = R [a,b,c]T , R étant la matrice de rotation (dont les expressions ont été données ailleurs)
    calculer d' = d+(a'-a)x0+(b'-b)y0+(c'-c)z0
    Désolé, mais mon plan semble tourner... mais j'ai un probleme avec le
    calcule du d' car il semble qu'un "déplacement" s'ajoute à mon plan.
    comme si le centre de rotation n'était pas mon point spécifique.

    voici quelque chiffres pour une rotation de 180 degrés autour de z.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     Equation du plan: 
    plan=( 97.0227042959 , 0.0 , 0.0 , -79170.5267055 )
    point de rotation: 
    RPt( 810, 270, 180)
    matrice de rotation: 
    mr=
    [-1.0  1.0  0.0  0.0 ]
    [ 0.0 -1.0  0.0  0.0 ]
    [ 0.0  0.0  1.0  0.0 ]
    [ 0.0  0.0  0.0  1.0 ]
    mr*plan=( -97.0227042959 , 0.0 , 0.0 , -79170.5267055 )
    pour calculer mon nouveau d:
    d' = d+(a'-a)x0+(b'-b)y0+(c'-c)z0
    d' = -79170.5267055 + ((-97.0227042959-97.0227042959)*810)+(0)+(0)
    d' = -236347.307665
     
    Techniquement mon d' devrait être éguale à:
    78006.2542539
    c'est comme si la bonne équation serait:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    d' = d-((a'-a)x0+(b'-b)y0+(c'-c)z0)
    est-ce que quelqu'un peut confirmer?
    Merci
    Comment dupliquer un disque...ça vous intéresse?
    Tutoriel et code source delphi ici

  20. #20
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    c'est comme si la bonne équation serait:
    d' = d-((a'-a)x0+(b'-b)y0+(c'-c)z0)
    Effectivement. Honte à moi!
    Une erreur s'était bêtement glissée dans mon premier post
    | ax0+by0+cz0+d| = | a'x0+b'y0+c'z0+d'|
    d'où on tire la valeur de d' = d+(a'-a)x0+(b'-b)y0+(c'-c)z0
    ou d' = -d+(a'+a)x0+(b'+b)y0+(c'+c)z0,
    ce qui est faux, manifestement, à cause d' une interversion entre a et a',....
    Par contre, il n'y avait pas cette maladresse dans le second qui (re)démontrait le résultat
    a'x +...+ (d +(a-a')x0 +...) =0
    soit d' = d +(a-a')x0 +...
    Avec mes excuses !
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. trouver la matrice de rotation à appliquer à un plan
    Par oieretxe dans le forum MATLAB
    Réponses: 13
    Dernier message: 24/07/2014, 18h49
  2. Rotation sur le plan XY autour de Z
    Par sdecorme dans le forum MATLAB
    Réponses: 6
    Dernier message: 11/10/2013, 14h53
  3. [XL-2010] créer un planning de rotation
    Par Legirondin33 dans le forum Excel
    Réponses: 14
    Dernier message: 06/09/2012, 15h09
  4. Rotation point dans un plan cartésien
    Par Poisson_Pilote dans le forum Mathématiques
    Réponses: 10
    Dernier message: 04/07/2011, 08h43
  5. algo : rotation d'objet 3d
    Par numeror dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 19/08/2002, 22h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo