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

Interfaces Graphiques en Java Discussion :

Rotation d'objet


Sujet :

Interfaces Graphiques en Java

  1. #1
    Membre averti
    Inscrit en
    Janvier 2006
    Messages
    19
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Janvier 2006
    Messages : 19
    Par défaut Rotation d'objet
    Bonjour,
    J'ai lu des tutoriaux à propos de la rotation en Java2D mais j'ai pas compris,
    par fois il est demandé de créer une instance AffineTransform puis appliquer les transformation sur cet objet.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AffineTransform at = new AffineTransform();
    Mais, à quoi sert la méthode rotate de Graphics2D!?
    Aussi je comprend pas comment indiquer à une variable de type Graphics2D (par exemple g2 qui très utilisée) l'objet spécifique qu’on veut pivoter. Voici mon code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     g2.setColor(Color.RED);
    	g2.fill3DRect(x,y,50,30,true);
    	g2.rotate(r);
    r est une variable qui s'incrémonte afin de créer une animation, ainsi que x et y.

  2. #2
    Gfx
    Gfx est déconnecté
    Expert confirmé
    Avatar de Gfx
    Inscrit en
    Mai 2005
    Messages
    1 770
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 770
    Par défaut
    Quand tu appliques une transformation tu l'appliques sur toute la surface de dessin. C'est comme dessiner sur une feuille de papier et la tourner pour dessiner autre chose. Il suffit de la remettre droite quand tu as fini.

    Et si tu lis la documentation de Graphics2D tu apprendras qu'invoquer rotate() est comme invoquer transform(R) ou R est une AffineTransform de rotation.

  3. #3
    Membre averti
    Inscrit en
    Janvier 2006
    Messages
    19
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Janvier 2006
    Messages : 19
    Par défaut
    Pardon,
    J'ai pas bien compris!

  4. #4
    Membre averti
    Inscrit en
    Janvier 2006
    Messages
    19
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Janvier 2006
    Messages : 19
    Par défaut
    Bon,
    J'ai plusieurs objets sur un frame: trois rectangles, la question c'est comment appliquer une rotation sur l'un des trois rectangles spécifiquement.

  5. #5
    Gfx
    Gfx est déconnecté
    Expert confirmé
    Avatar de Gfx
    Inscrit en
    Mai 2005
    Messages
    1 770
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 770
    Par défaut
    En pseudo code :

    dessiner triangle1
    g2.rotation(angle)
    dessiner triangle2
    g2.rotation(-angle)
    dessiner triangle3

  6. #6
    Membre averti
    Inscrit en
    Janvier 2006
    Messages
    19
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Janvier 2006
    Messages : 19
    Par défaut
    Oui,

    Mais de cette façon je vais avoir le même résultat, d'ailleurs c'est expliqué par vous même, paintComponent concerne toute la surface sur laquelle on dessine ce qui fait une rotation est appliquée sur à la totalité des objets et non pas à celui qu'on vise.

    J'ai procédé de la façon suivante:
    • Créer un panneau 1 par une classe qui hérite de JPanel pour se bénéficier de paintComponent()

    • Créer une autre classe qui hérite également de JPanel pour la même raison et aussi pour créer un panneau 2

    • Ajouter panneau 2 au frame principal

    • Ajouter panneau 1 au même frame sachant que le panneau 1 se trouve dans la même class du frame

    • Faire des repaint(Rectangle) en référence à paintComponent() du panneau 1(sur la zone du deuxième panneau) périodiquement tout en faisant des rotations successives afin de créer l'animation voulu.


    Bon, comment trouvez-vous cette solution (d'un débutant)? Est ce que vous pouvez m'aider pour améliorer celle-ci?

  7. #7
    Gfx
    Gfx est déconnecté
    Expert confirmé
    Avatar de Gfx
    Inscrit en
    Mai 2005
    Messages
    1 770
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 770
    Par défaut
    Non avec mon pseudo code tu vas avoir un triangle penche et pas l'autre. Regarde bien, je fais un 2e rotate qui annule le premier...

  8. #8
    Membre averti
    Inscrit en
    Janvier 2006
    Messages
    19
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Janvier 2006
    Messages : 19
    Par défaut
    Oui,
    Vous avez raison, mais, j'arrive pas à le faire tourner autour de lui même, sachant que j'ai spécifié le centre du premier triangle comme point de rotation.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    g2.rotate(angle,centreX, centreY).

Discussions similaires

  1. Rotation d'objet autour d'un point
    Par epok33 dans le forum Tkinter
    Réponses: 11
    Dernier message: 12/12/2013, 02h14
  2. [Rotations] Un objet sur une planete, comment faire ?
    Par supergrey dans le forum Développement 2D, 3D et Jeux
    Réponses: 6
    Dernier message: 09/03/2008, 11h21
  3. [Newton] probleme d'angle de rotation des objet
    Par Syl_20 dans le forum Newton
    Réponses: 13
    Dernier message: 27/08/2007, 08h41
  4. Réponses: 11
    Dernier message: 08/01/2006, 22h06
  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