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

3D Java Discussion :

[Java3D] Choix axe de rotation + question sur les coordonées


Sujet :

3D Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 48
    Points : 28
    Points
    28
    Par défaut [Java3D] Choix axe de rotation + question sur les coordonées
    Je débute en Java3D,j'arrive à faire tourner un cube sur lui meme mais toujours sur le meme axe.
    Je crois avoir vu quelque part que justement par defaut "RotationInterpolator" prenait en compte l'axe des y ,mais je n'ai absolument rien trouvé pour pouvoir en choisir un autre.


    EDIT du 30/08/05


    Avec ça on peut vraiment intervenir sur le choix de l'axe

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    AxisAngle4f faxisOfRot = new AxisAngle4f(1.0f,0.0f,0.0f,(float)Math.PI*2);
    Transform3D faxisT3D = new Transform3D();
    faxisT3D.set(faxisOfRot);
     
    RotationInterpolator rotator = new RotationInterpolator(rotationAlpha,objSpin);
    rotator.setAxisOfRotation(faxisT3D);
    Ce que je comprend pas c'est qu'avec ces coordonnées (1,0,0) + un angle de 2Pi je devrais rester sur l'axe des x non?
    Or avec il me le fait tourner autour des y (j'obtiens la meme chose avec 0Pi).

    L'orde est bien x,y,z normalement non?

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 48
    Points : 28
    Points
    28
    Par défaut
    up

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    390
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 390
    Points : 432
    Points
    432
    Par défaut
    D'apres la doc il y a un operateur qui permet de definir l axe :
    RotationInterpolator

    Ca donnerai qqchose du genre pour une rotation autour de x :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    double rotationMatrix[] = {{1,0,0,0},{0,cos(alpha),sin(alpha),0},
                                         {0,-sin(alpha),cos(alpha),0},{0,0,0,1}};
    GMatrix gm = new GMatrix(4,4);
    for (int i=0; i<4 ;i++) {
          gm.setColumn(i,rotationMatrix(i));
    }
    Transform3D rotation = new Transform3D(gm);
     
    RotationInterpolator rotator = new RotationInterpolator(rotationAlpha,objSpin);
    rotator.setAxisOfRotation(gm);
    Mess with the best, die like the rest!

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 48
    Points : 28
    Points
    28
    Par défaut
    Merki beaukoup je vais tester ça

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 48
    Points : 28
    Points
    28
    Par défaut
    Arf je comprend pas pourquoi j'ai ce message d'erreur:


    setAxisOfRotation(javax.media.j3d.Transform3D) dans javax.media.j3d.RotationInterpolator ne peut etre appliqué à (javax.vecmath.GMatrix)



    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
    double cosinus;
      double i=Math.PI*2;
      cosinus = Math.cos(i*Math.PI/2000);
     
      double sinus;
        double j=Math.PI*2;
        cosinus = Math.sin(i*Math.PI/2000);
     
     
     
        double rotationMatrix[][] = {{1,0,0,0},{0,i,j,0},{0,-j,i,0},{0,0,0,1}};
        GMatrix gm = new GMatrix(4,4);
        for (int a=0; a<4 ;a++) {
              gm.setColumn(a,rotationMatrix(a));
        }
        Transform3D rotation = new Transform3D(gm);
     
        RotationInterpolator rotator = new RotationInterpolator(rotationAlpha,objSpin);
        rotator.setAxisOfRotation(gm);

  6. #6
    Membre averti
    Inscrit en
    Avril 2004
    Messages
    503
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 503
    Points : 445
    Points
    445
    Par défaut
    L'interêt du doute est que cela fait avancer.
    (parenthèses)Je suis à la recherche d'un emploi sur Valence(26) et ses environs.
    mon cv:
    http://charegis.netcv.org/

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 48
    Points : 28
    Points
    28
    Par défaut
    Merki

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 48
    Points : 28
    Points
    28
    Par défaut
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    double cos;
     
    double i=Math.PI/3;
      cos = Math.cos(i);
     
      double sin;
     
        sin = Math.sin(i);
     
     
     
        double rotationMatrix[][] = {{1,0,0,0},{0,-cos,-sin,0},{0,sin,-cos,0},{0,0,0,1}};
        GMatrix g = new GMatrix(4,4);
        for (int a=0; a<4 ;a++) {
              g.setColumn(a,rotationMatrix(a));
        }
        Transform3D rotation = new Transform3D(g);
     
        RotationInterpolator rotator = new RotationInterpolator(rotationAlpha,objSpin);
        rotator.setAxisOfRotation(rotation);
     
     
     
     
    // on définit la zone sur laquelle va s'appliquer la rotation
        BoundingSphere bounds=new BoundingSphere();
        rotator.setSchedulingBounds(bounds);
        objSpin.addChild(rotator);
     
        objRoot.addChild(objSpin);
     
    objSpin.addChild(new ColorCube(0.3));
     
    universe.getViewingPlatform().setNominalViewingTransform();
     
    universe.addBranchGraph(objRoot);

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 48
    Points : 28
    Points
    28
    Par défaut
    EDIT du 1er post

  10. #10
    Expert éminent

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 813
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 813
    Points : 7 638
    Points
    7 638
    Par défaut Re: [Java3D] Choix axe de rotation + question sur les coordo
    Salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    faxisT3D.set(faxisOfRot);
    tu as essayé avec:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    faxisT3D.setRotation(faxisOfRot);
    ?
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

Discussions similaires

  1. Vos questions sur les choix et comparaisons de frameworks
    Par Ricky81 dans le forum Frameworks Web
    Réponses: 1
    Dernier message: 12/02/2012, 08h14
  2. Question sur les choix des logiciels pour un MMORPG (sérieux)
    Par Sinnax dans le forum Développement 2D, 3D et Jeux
    Réponses: 11
    Dernier message: 06/01/2011, 20h53
  3. Réponses: 10
    Dernier message: 10/01/2010, 16h36
  4. Réponses: 0
    Dernier message: 21/06/2009, 22h06
  5. Questions sur les rotations
    Par Pragmateek dans le forum DirectX
    Réponses: 7
    Dernier message: 17/07/2007, 01h41

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