Problème de changement de repere
Répondre à la discussion
Affichage des résultats 1 à 3 sur 3

Problème de changement de repere



  1. #1
    ltempier

    Question Problème de changement de repere


    ------

    Bonjour à vous, je me permet de poster mon problème car j'ai beau tourner mon problème dans tout les sens je ne m'en sort pas.
    "Please HELP ME !!!"

    situation cherchee.jpg

    Je cherche à récuperer les coordonnées cartésiennes d'un point (P2), coordonnées connue dans le repere d'origine (x,y,z), dans une repere de reference (x',y',z').
    Avec la particularité que je repere de reference est:
    - une rotation suivant l'axe Z de θ
    - une rotation suivant l'axe Y de δ
    - une translation de ρ = vecteur (OP)

    Mes calculs:
    traitement de la transaltion:
    a = xP2 - xP
    b = yP2 - yP
    c = zP2 - zP

    traitement des rotations:
    x'= cos(θ)*cos(δ)*a - sin(θ)*cos(δ)*b + sin(δ)*c
    y'= [cos(θ)*sin(δ)*sin(0)+sin(θ)*co s(0)]*a - [sin(θ)*sin(δ)*sin(0)+cos(θ)*co s(0)]*b + cos(δ)*sin(0)*c
    z'= [- cos(θ)*sin(δ)*cos(0) + sin(θ)*sin(0)]*a + [sin(θ)*sin(δ)*cos(0)+cos(θ)*co s(0)]*b + cos(δ)*cos(0)*c

    c'est equation decoule de cette artivle : http://fr.wikipedia.org/wiki/Matrice_de_rotation

    Voila, c'est bien beau tout ça mais ça ne fonctionne pas, quelqu'un pourrait me secourir? Merci.

    -----
    Images attachées Images attachées  

  2. #2
    ltempier

    Re : Problème de changement de repere

    Je pense y etre :
    Code:
    //matrice de passage du repere R+T
    public javax.vecmath.Matrix3d matriceChangementBaseRotation=null;
    private Vecteur matriceChangementBaseTranslation=null;
    
    private void determinerMatriceChangementBase()
    {		
    	double angleNS = - δ;
    	double angleEO = + θ;
    	
    	javax.vecmath.Matrix3d R = new Matrix3d(
    	Math.cos(angleEO)*Math.cos(angleNS), -Math.sin(angleEO)*Math.cos(angleNS), -Math.sin(angleNS),
    	Math.sin(angleEO), Math.cos(angleEO), 0,
    	Math.cos(angleEO)*Math.sin(angleNS), -Math.sin(angleEO)*Math.sin(angleNS), Math.cos(angleNS));
    		
    	this.matriceChangementBaseRotation = R;
    	this.matriceChangementBaseTranslation = new Vecteur(pointReference);			
    }
    public Point determinerPointChangementBase(Point pArrivee)
    {
    	double x=pArrivee.x,y=pArrivee.y,z=pArrivee.z;
    	
    	//Translation
    	x = pArrivee.x - matriceChangementBaseTranslation.x;
    	y = pArrivee.y - matriceChangementBaseTranslation.y;
            z = pArrivee.z - matriceChangementBaseTranslation.z;
    	//Rotation
    	x=this.matriceChangementBaseRotation.m00*x+this.matriceChangementBaseRotation.m01*y+this.matriceChangementBaseRotation.m02*z;
    	y=this.matriceChangementBaseRotation.m10*x+this.matriceChangementBaseRotation.m11*y+this.matriceChangementBaseRotation.m12*z;
    	z=this.matriceChangementBaseRotation.m20*x+this.matriceChangementBaseRotation.m21*y+this.matriceChangementBaseRotation.m22*z;
    
    	return new Point(x,y,z);
    }
    cependant j'obtiens toujours des erreurs quand je fais des tests, et je pense que ces erreurs sont dues à la perte de précision suite au changement de repere. Affaire à suivre mais je pense que je vais essayer un autre moyen pour réaliser mon projet (projection Lambert).

  3. #3
    invite7ff0b69f

    Re : Problème de changement de repere

    Bonjour,


    J'ai utilisé les matrices de rotation pour le contrôle tridimensionnel entre le repère(ou référentiel) machine de référence et le repère pièce, c'est à dire construit à partir des éléments géométriques calculés à partir du palpage de points sur les surfaces physiques de la pièce(selon la méthodes des moindres carrés pour info).

    Ce repère pièce correspond au repère définit par le plan de définition de la pièce(plan papier ou DAO). Dans certains cas, pièces tubulaires par exemple, les surfaces accessibles sur la pièce ne permettent pas de construire ce repère pièce. Alors c'est à ce moment qu'intervient la matrice de transformation du repère comportant 6 éléments (comme tu l'as décris) : 3 translations et 3 rotations.

    L'erreur à ne pas commettre est d'oublier de recalculer les angles dans les repères temporaires lors de la transformation du repère. Je m'explique :

    Comme tu as procédé, tu réalises les 3 translations l'une après l'autre : Repère départ-->Tx-->repère intermédiaire Tx-->Ty-->repère intermédiaire Txy-->Tz-->repère intermédiaire Txyz

    Tu réalises ensuite les 3 rotations : repère intermédiaire Txyz-->Rx-->repère intermédiaireTxyzRx-->Ry ???? Quelle valeur d'angle pour Ry? Une fois la rotation Rx réalisée l'angle Ry n'a plus la même valeur que l'angle identifié dans le repère de départ. Ty dois donc projeter l'angle de rotation autour de y dans le repère intermédiaireTxyzRx avant de l'appliquer. Et pareille pour Rz.

    Pour m'en sortir je créais un repère physique cible représenté par 4 points ou 3 droites perpendiculaires (xyz) sur lesquels je venais coller le repère pas à pas.

    Je ne sais te conseiller sur la méthode à suivre dans un programme de développement.

    Courage !!

Discussions similaires

  1. Changement de repère
    Par invitef17c7c8d dans le forum Mathématiques du supérieur
    Réponses: 0
    Dernier message: 25/04/2011, 16h23
  2. Changement de repére
    Par invited6d2f678 dans le forum Mathématiques du supérieur
    Réponses: 0
    Dernier message: 03/11/2010, 14h17
  3. Changement de repere
    Par invite52356791 dans le forum Mathématiques du supérieur
    Réponses: 14
    Dernier message: 31/03/2010, 14h53
  4. Changement de repère
    Par invitefbf29f5b dans le forum Mathématiques du collège et du lycée
    Réponses: 3
    Dernier message: 12/12/2009, 17h45
  5. changement de repere
    Par invite6ed6fe4c dans le forum Mathématiques du supérieur
    Réponses: 1
    Dernier message: 07/01/2009, 19h15