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

2D Java Discussion :

[Java2D] Matrice de transformation


Sujet :

2D Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 17
    Par défaut [Java2D] Matrice de transformation
    Bonjour,

    J'essais de donner de la perspective à une image à l'aide d'un objet AffineTransform, mais je ne parviens pas a obtenir l'effet voulu.

    Mon but est d'arriver à celà :


    Un des constructeur de AffineTransform permet de passer une matrice 3*3 en paramètre. Je peut faire des rotations, et torsions, mais je ne suis pas sur de pouvoir faire ce que je veut de cette manière.

    Est ce que quelqu'un peut me dire si je suis sur la bonne voie ou si il faut que ej change de chemin ?

    Merci

  2. #2
    Membre éclairé
    Avatar de JMLLB
    Inscrit en
    Septembre 2006
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 285
    Par défaut
    Oui tu es dans la bonne direction!

    Par contre, bien qu'utilisant régulièrement J2D et les AffinesTranforms, je n'ai jamais eu à faire ce que tu décris.

    A partir des transformations classiques je ne sais pas trop si tu peux y arriver (en théorie oui, mais comment?).

    Par contre en utilisant directement une matrice de tranformation ça ne doit pas être trop compliqué.

    Partant du principe que
    est l'identité


    la matrice suivante devrait te donner quelque chose d'approchant à ton schéma:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    2    0   -150
    0,5 1,5 -100
    0    0    0,5
    J'avoue que je n'ai pas fait de tests et que je n'ai pas fait les calculs non plus.
    Je me suis juste servi des infos que Gimp te donne sur la matrice de transformation lorsque l'on fait une transformation de perspective.
    Je pars du principe que les système de coordonnés de J2D et de Gimp sont compatibles.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 17
    Par défaut
    Merci pour ta réponse.
    Je ne savais pas qu'il était possib le de récupérer des matrices depuis the Gimp, il serais temps que je l'installe

    En revanche, j'ai fait une erreur en disant qu'on pouvais passer en paramètre d'un affineTransform une matrice 3*3... a priori on ne peut renseigner que 6 valeurs, la dernière ligne est ignorée...

    De plus, je suis tombé sur une démo Java2D de sun (http://java.sun.com/products/java-me...Java2Demo.html) et on ne vois pas de transformation d'image très complexe. Leur démo n'est peut être pas exaustive, mais j'imagine que si ce type de transformation était possible, elle aurait été représentée par un exemple...

    Je vais essayer de voir du côté des API externes. Je pense qu'il faudra de toute facon apsser par une matrice, je garde précieusement ta proposition.

    Merci encore, je posterais ma potentiel solution ici.

  4. #4
    Membre éclairé Avatar de puybaret
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2003
    Messages : 61
    Par défaut
    Tu n'es pas obligé de donner directement les valeurs de la matrice. Utilise plutôt les méthodes de AffineTransform, c'est plus simple et ça donne un code plus clair.
    Je crois que la transformation que tu veux obtenir s'effectue avec la méthode shear ou setToShear.
    [Message édité : Après un essai, shear ne déforme pas le dessin avec l'effet que recherche Talstus]

  5. #5
    Membre éclairé
    Avatar de JMLLB
    Inscrit en
    Septembre 2006
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 285
    Par défaut
    un lien pour plus d'info:
    http://www.unix.org.ua/orelly/java-ent/jfc/ch04_11.htm

    Essaye quand même la matrice:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    2    0   -150
    0,5 1,5 -100
    étant donné que tu fais de la 2D je pense que ça devrait être bon.

  6. #6
    Membre éclairé
    Avatar de JMLLB
    Inscrit en
    Septembre 2006
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 285
    Par défaut
    Il y a quand même un truc qui me chiffone:

    Citation Envoyé par JFC in a Nutshell
    The coordinate system transformations described by AffineTransform have two very important properties:
    -Straight lines remain straight
    -Parallel lines remain parallel

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Matrice de transformation 3D
    Par acacia dans le forum Développement 2D, 3D et Jeux
    Réponses: 10
    Dernier message: 08/09/2007, 08h17
  2. Réponses: 4
    Dernier message: 08/03/2007, 10h32
  3. Ajouter une matrice de transformation
    Par Ekinoks dans le forum OpenGL
    Réponses: 9
    Dernier message: 20/11/2006, 19h32
  4. Envoyer la matrice de transformation
    Par Ekinoks dans le forum OpenGL
    Réponses: 2
    Dernier message: 13/11/2006, 10h10
  5. Moteur 2D: Pb de calcul de Matrice de transformation
    Par themadmax dans le forum Algorithmes et structures de données
    Réponses: 14
    Dernier message: 29/06/2006, 11h22

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