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

 Java Discussion :

Triangle qui doit tourner en son milieu


Sujet :

Java

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2014
    Messages : 5
    Points : 1
    Points
    1
    Par défaut Triangle qui doit tourner en son milieu
    J'ai besoin de creer un programme avec JAVA.
    il faut que le triangle tourne en son milieu attention pas d'un coté pas d'un point mais en son milieu
    et il faut que ce triangle laisse les traces à chaque fois qu'il tourne

    voila ce que j'ai fait mais je n'arrive pas a avoir un triangle qui tourne en son milieu.
    veuillez m'aider, svp.
    merci d'avance.

    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
    float justme=1;
     
    void setup(){
      //Ecran de 500pixels1sur 500 pixels
    size(500,500);
    background(0,0,0);
    } 
    void draw(){
      //Couleur de fond background(red=rouge,green=vert,blue=beu) 
     
     //Positionnement
     //le choix de PI pour qu'il commence à tourné de PI/2 d'un cercle trigonométrique comme tourne une montre à minuit pile ou midi pile
     //width/2 et height/2 car il doit être au milieu du cadre
       translate(width/2,height/2,PI); 
      //Rotation 
       rotate(justme);
    }
     
    //Fonctions permettant de tracé le triangle
    void translate( float x, float y, float z){
     
      translate(x,y);
      rotate(justme+z); 
      //La fonction stroke() permet de donner une couleur au coutour du triangle stroke(red=rouge,green=vert,blue=bleu)
      stroke(0,45,200);
      //La fonction Fill() permet de remplir une forme avec une couleur tel que fill(red=rouge,green=ver, blue=bleu)
      fill(255,0,0);
      //La fonction triangle() comme son nom l'indique permet de dessiné la forme du triangle
      triangle(0,0,100,200,200,100);
      resetMatrix();
       justme+=PI/500;
    }

  2. #2
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 211
    Points : 8 316
    Points
    8 316
    Billets dans le blog
    52
    Par défaut
    Tu peux potentiellmeent faire quelque chose dans ce style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    	Graphics2D g2d = (Graphics2D)g;
    //On place le référentiel au centre du future triangle.
    		g2d.translate(xTriangleCenter, yTriangleCenter);
    //On réalise la rotation
    		g2d.rotate(Math.toRadians(180));
    //On dessine le rectange en prenant compte qu'on est centré sur son centre
    		g.drawRect(x, y, width, height);
    //On annule la rotation
    		g2d.rotate(Math.toRadians(-180));
    //On annule la translation.
    		g2d.translate(-xTriangleCenter, -yTriangleCenter);
    Je pense que cela serai le plus simple.
    Autre version :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    	Graphics2D g2d = (Graphics2D)g;
    // On mémorise le référentiel actuel
    		AffineTransform old = g2d.getTransform();
    //On place le référentiel au centre du future triangle.
    		g2d.translate(xTriangleCenter, yTriangleCenter);
    //On réalise la rotation
    		g2d.rotate(Math.toRadians(180));
    //On dessine le rectange en prenant compte qu'on est centré sur son centre
    		g.drawRect(x, y, width, height);
    //On annule les transformation
    		g2d.setTransform(old);
    Je n'ai pas actuellement tester le code proposer, mais cela devrait fonctionné.

    Cordialement,
    Patrick Kolodziejczyk.
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2014
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Bonjour Kolodz, je voudrais le faire sans utilisé la fonction rotat et translate mais je ne vois pas comment peut être à l'aide d'une équation et notamment grâce aux complexes, enfin je pense. Je tenais aussi à dire que je crée sa sous processing.
    Merci d'avance!

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2014
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    j'allais oublié le triangle doit être isocèle.

  5. #5
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    Si ton triangle peut être équilatéral (isocèle particulier), tu peux te baser sur le fait que les trois sommets d'un triangle équilatéral sont disposés sur un cercle, avec un écart d'angle de 2PI/3 (par la formule xpoint = xcentre + rayon * cosinus(angle) et ypoint = ycentre + rayon * sinus(angle), en bouclant l'angle de 0 (origine) à 2PI). Tu peux donc générer une Shape à partir de trois points (par exemple en utilisant la classe Path2D) pour dessiner ensuite ton triangle (plein ou pas). Si tu décales l'origine des angles, de plus en plus, à chaque tracé, le triangle tourne autour du centre du cercle, qui est aussi le centre du triangle. Pour un triangle isocèle non équilatéral, on peut aussi procéder comme ça, en jouant sur la variation d'angle entre les trois points (2 angles égaux, 1 angle différent).



    Pour la trace du triangle, ça dépend de l'effet que tu souhaites. Une solution est d'utiliser la notion d'alpha. Par exemple, à chaque nouvel angle, mémoriser le Path2D, tracer tous les Path2D à chaque fois, en utilisant un alpha de plus en plus petit, plus le Path2D est "ancien" : lorsque l'alpha est vraiment très petit, tu peux le supprimer, afin d'éviter d'accumuler des Path2D qui ne sont plus visibles, et qui prendraient donc du temps à dessiner pour rien. Une autre technique, peux être plus performante (selon le nombre de Path2D mémorisés dans la première solution), mais posant un problème de résolution si on veut pouvoir changer la taille du panel d'animation (on perd la possibilité de dessiner le triangle dans une taille quelconque sans pixélisation, mais c'est supportable), est de dessiner la trace dans une BufferedImage (et ensuite dessiner cette image dans le JPanel, et le Path2D par dessus). Par exemple, le plus simple, à chaque étape de l'animation, on dessine l'image précédente (donc elle même sur elle même) comme fond, avec un alpha (Elle va donc s'estomper, en se mélangeant avec elle même, et donner un effet de trace), avant de dessiner le Path2D de l'étape courante. Avec une image, on peut aussi gérer complètement le rendu de la trace, en combinant d'autres effets qu'un simple alpha en surimpression.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2014
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Bonjour, alors je met dans void translate


    void translate{

    x point = x centre + rayon * cosinus(2PI);
    y point = y centre + rayon * sinus(2PI);

  7. #7
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    La translation doit s'appliquer uniquement sur le xcentre et le ycentre (addition) : ça suffit à décaler le cercle. L'échelle, elle, s'applique sur le rayon (multiplication), ce qui suffit à agrandir le triangle.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  8. #8
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2014
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    void translate{

    x centre+y centre;
    }

  9. #9
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Si tu as des questions, ou autre, écris des phrases avec des mots s'il te plait !
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

Discussions similaires

  1. Probleme Base qui doit souvent etre réparée.
    Par Le_Phasme dans le forum Access
    Réponses: 3
    Dernier message: 04/11/2005, 15h04
  2. [CKEditor] Qui utilise FCKeditor sur son site php pour config ?!
    Par guy2004 dans le forum Bibliothèques & Frameworks
    Réponses: 62
    Dernier message: 26/10/2005, 18h24
  3. ShellExecute qui veut pas faire son boulot...
    Par giloutho dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 31/08/2005, 11h49
  4. [Eclipse 3.0.1] Image qui n'affiche que son path
    Par thehpman dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 16/03/2005, 11h28
  5. formulaire qui doit appeler plusieurs pages
    Par rohel dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 27/01/2005, 08h59

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