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 :

Tracé d'une étoile à 5 branches


Sujet :

2D Java

  1. #1
    Membre actif

    Inscrit en
    Mai 2002
    Messages
    328
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Mai 2002
    Messages : 328
    Points : 209
    Points
    209
    Par défaut Tracé d'une étoile à 5 branches
    Hello,

    Quelqu'un sait-il comment s'y prendre pour tracer une étoile à 5 branches en AWT ?

    Merci !

    Toine

  2. #2
    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 641
    Points
    7 641
    Par défaut
    Salut,

    Sachant que tu viens du forum algo, le problème est plus sur la construction de l'étoile ou sur l'utilisation du dessin en AWT?

    Si c'est sur la construction, tu calcules les cinq points de ton étoiles, et tu les joins comme il convient afin de dessiner ton étoile.

    Si c'est sur l'utilisation d'AWT, je ne saurais trop te conseiller de trouver un bon tutoriel...
    Un exemple pour tracer une droite: http://artis.imag.fr/Membres/Xavier....hing/LIFI/TP1/
    Il ne te reste plus qu'à tracer les quatre autres côtés!
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  3. #3
    Membre actif

    Inscrit en
    Mai 2002
    Messages
    328
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Mai 2002
    Messages : 328
    Points : 209
    Points
    209
    Par défaut
    tu calcules les cinq points de ton étoiles
    Il faut calculer plus de 5 points pour tracer l'étoile je pense

    C'est justement là dessus que j'ai besoin d'aide, comment déterminer les coordonnées des points ?

    Toine

  4. #4
    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 641
    Points
    7 641
    Par défaut
    Citation Envoyé par onlytoine
    Il faut calculer plus de 5 points pour tracer l'étoile je pense
    Ben je sais pas.
    C'est une étoile à cinq branches avec combien de sommets?

    Citation Envoyé par onlytoine
    C'est justement là dessus que j'ai besoin d'aide, comment déterminer les coordonnées des points ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    for (int i=0;i<5;i++){
        x[i]=rayon*Math.cos(i*2*Math.PI/5);
        y[i]=rayon*Math.sin(i*2*Math.PI/5);
    }
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  5. #5
    Membre actif

    Inscrit en
    Mai 2002
    Messages
    328
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Mai 2002
    Messages : 328
    Points : 209
    Points
    209
    Par défaut
    Ok, ça marche ...

    Maintenant, il faut que je trouve un moyen de la remplir !

    Il faut probablement que je calcule les points intérieurs de l'étoile.

    Toine

  6. #6
    Membre actif

    Inscrit en
    Mai 2002
    Messages
    328
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Mai 2002
    Messages : 328
    Points : 209
    Points
    209
    Par défaut
    Il y a une méthode pour l'intersection de deux droites sur Line2D ... mais elle renvoie un boolean !!! Pas le point d'intersection ! Pffffff.......

    Toine

  7. #7
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 840
    Points : 22 854
    Points
    22 854
    Billets dans le blog
    51
    Par défaut
    Bah, il suffit de créer la Shape appropriée avec GeneralPath ou Polygon à partir du tableau de points initiaux sur le cercle. C'est pas dur y faut faire exactement comme quand on dessine à la main : on relie le point i au point i+2 modulo le nb de points, etc ... jusqu'à ce qu'on revienne au point de départ. Ensuite faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Shape star = ... // créer l'étoile ici
    graphics.setColor(maCouleur);
    graphics.fill(star); // Remplissage.
    Note : comme c'est un figure qui se recouvre elle-même attention aux règles de remplissage (voir la méthode setWindindRule() dans la classe GeneralPath))
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  8. #8
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 840
    Points : 22 854
    Points
    22 854
    Billets dans le blog
    51
    Par défaut
    Note que si tu fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    graphics.setColor(maCouleurdeBordure);
    graphics.draw(star);
    cela te dessinera un pentagramme.

    Si tu veux vraiment une "vraie" étoile à 5 branches il te faut un 2nd set de points situé sur un cercle plus petit que le 1er. Le 1er point sur le cercle interne est décalé 2*PI/10 par rapport au 1er point sur le cercle externe, ensuite les points sur le cercle interne sont tous espacés entre eux de 2*PI/5 comme les points du cercle externe.

    L'algo pour dessiner la shape devient:
    - relier cext[i] à cint[i]
    - relier cint[i] à cext[i+1]
    ...
    modulo le nb de points. On s'arrête quand on revient au nombre de départ.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  9. #9
    Membre actif

    Inscrit en
    Mai 2002
    Messages
    328
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Mai 2002
    Messages : 328
    Points : 209
    Points
    209
    Par défaut
    Merci, c'est exactement ce que je cherchais. Cependant, es-tu sûr qu'il est décalé de 2*PI/10 ? Car en traçant, ça ne semble pas être tout à fait ça ...

    Aussi, quel est le rayon du cercle contenant le pentacle interne ?

    Merci !

    Toine

  10. #10
    Membre actif

    Inscrit en
    Mai 2002
    Messages
    328
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Mai 2002
    Messages : 328
    Points : 209
    Points
    209
    Par défaut
    Autant pour moi, c'est bien 2*PI/10 !

    Par contre, je ne sais pas quel est exactement le rayon du cercle interne...

    Toine

  11. #11
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 840
    Points : 22 854
    Points
    22 854
    Billets dans le blog
    51
    Par défaut
    0 <= rint <= rext ...

    Basiquement c'est toi qui voit pour faire des étoiles avec des branches plus ou moins pointues (genre étoile de Noel vs. étoile "grasse" dans Super Mario).

    Pour avoir une étoile à 5 branche extactement similaire à l'étoile d'un pentagramme : une facon de faire est de resortir la règle, le compas et le rapporteur du cartable et de dessiner tout simplement un pentagramme à la main sur papier, puis de mesurer le rayon interne et le rayon externe et de faire le rapport des 2... et réutiliser ce rapport dans le code

    Un peu d'initiative et d'imagination que diable (sans mauvais jeu de mot)
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  12. #12
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 840
    Points : 22 854
    Points
    22 854
    Billets dans le blog
    51
    Par défaut
    es-tu sûr qu'il est décalé de 2*PI/10
    Si 2 sommets concécutifs d'une étoile à 5 branche sont espacés de 2*Pi/5 et que le point representant le creux est extactement entre 2 sommets... on peut en déduire que le point du creux est décalé par rapport au 1er sommet de (1/2) * (2*PI/5) = 2*PI/10...

    Tss je sais que y a des jours je me tape dessus car je n'ai pas toujours retenu toutes mes formules de trigo (et elle sont TOUTES fort utile quand on fait de la 2D) et ainsi que certaines équations de physique (utiles dans les animations et certains effets spéciaux), ... mais là quand même....
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  13. #13
    Membre actif

    Inscrit en
    Mai 2002
    Messages
    328
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Mai 2002
    Messages : 328
    Points : 209
    Points
    209
    Par défaut
    Merci beaucoup pour toutes les infos

    Pour le cercle intérieur, j'avais déjà trouvé un rapport convenable mais je cherchais une solution rigoureuse... M'enfin le résultat est là ! Merci beaucoup !

    Dis-moi, tu fais du dev de jeux vidéos ?

    Toine

  14. #14
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 840
    Points : 22 854
    Points
    22 854
    Billets dans le blog
    51
    Par défaut
    Hum je ne crois pas qu'y ai de normes stricte sur la maniere de faire des etoiles a 5 branches. Mais sait-on jamais, peut-etre y a t'il une norme CE, ISO ou IEEE qq part...

    Non absolument pas je fais des interfaces de visu et de parametrage pour des scientifiques ; ce qui implique parfois de faire du rendu 2D et des graphes. Et a chaque fois que j'ai essaye de faire un jeu video (allez au hasard un scroller 2D genre... Sonic) j'ai vite laisse tombe devant l'ampleur de la tache pour une seule personne...
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  15. #15
    Membre actif

    Inscrit en
    Mai 2002
    Messages
    328
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Mai 2002
    Messages : 328
    Points : 209
    Points
    209
    Par défaut
    je parlais pas de norme mais comment obtenir le même rendu que quand tu la traces à la main... Le rapport est 2.5

    Oui je sais ce que c'est pour l'ampleur des dev pour le jeu vidéo ... Je développe actuellement un jeu "dans mon garage"

    Si tu veux voir : http://www.humana-studio.com

    Toine

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

Discussions similaires

  1. [fill] Tracé d'une étoile
    Par alias2015_29 dans le forum MATLAB
    Réponses: 1
    Dernier message: 19/04/2015, 22h30
  2. VB6 , tracé d'une courbe
    Par a_adiss dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 07/11/2006, 20h22
  3. Réalisation d'une étoile Filante
    Par bibendum7302 dans le forum Flash
    Réponses: 8
    Dernier message: 02/11/2006, 23h19
  4. optimiser le tracé d'une courbe
    Par Zorgz dans le forum 2D
    Réponses: 3
    Dernier message: 04/09/2006, 16h17
  5. Algorithme de tracé d'une étoile à 5 branches
    Par onlytoine dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 14/10/2005, 17h50

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