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

API graphiques Discussion :

[2D] Remplissage d'une zone depuis les bordures


Sujet :

API graphiques

  1. #1
    Membre expérimenté
    Profil pro
    Inscrit en
    Février 2004
    Messages
    1 824
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 1 824
    Points : 1 544
    Points
    1 544
    Par défaut [2D] Remplissage d'une zone depuis les bordures
    Bonjour à tous,

    J'ai une série de zones en 2D à afficher (cela peut-être des polygones, ou des zones un peu plus complexes, comme une espèce de lune ou un tracé linéaire avec des courbes et épaisseurs différentes selon les endroits).

    Tout ce que j'ai au départ, c'est une série de points traçant le contour, dans le même ordre que ce que l'on donne à un LineStrip.

    Pour être plus concrêt, je suis en train de faire une cartographie, les zones peuvent être des bois, des rivières, des zones commerciales / industrielles etc.

    Le soucis, c'est que je dois remplir cette zone, donc avec des triangles et non des lignes, enfin je pense, et je ne sais pas comment m'y prendre pour que cela soit performant. J'imagine qu'il y a des formules mathématiques pour ordonner les vertex afin d'ensuite faire du TriangleList ou TriangleStrip ?

    Je travail en 2D, avec DirectX9 et OpenGL sous C++, peut-être que ces API donnent des outils pour faire ça ?

    En fait c'est comme dans Paint, où on trace une forme indéterminée, fermée, puis on sélectionne le pot de peinture pour cliquer dans la zone afin de la colorer. Ca me paraît courrant comme problématique.

    Si vous avez des tutoriels, des noms d'algorithme ou des librairies pour faire ça, ça m'aiderai pas mal.

    Merci beaucoup par avance,

    A bientôt
    "Heureusement qu'il y avait mon nez, sinon je l'aurais pris en pleine gueule" Walter Spanghero

  2. #2
    Responsable Purebasic

    Avatar de comtois
    Inscrit en
    Avril 2003
    Messages
    1 261
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 1 261
    Points : 9 924
    Points
    9 924
    Billets dans le blog
    8
    Par défaut
    Pour remplir une forme quelconque j'utilise cet algo
    Vous souhaitez participer à la rubrique PureBasic (tutoriels, FAQ, sources) ? Contactez-moi par MP.

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Février 2004
    Messages
    1 824
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 1 824
    Points : 1 544
    Points
    1 544
    Par défaut
    Merci pour ta réponse.

    Si j'ai bien compris, il crée une structure de données de la ligne brisée permettant ensuite de savoir ensuite si tel coordonnée est dans le polygone ou pas, et ensuite, il colorie pixel par pixel. Est-ce bien ça ?

    Mais je pense que ça ne conviendra pas, ça ne sera pas performant à l'affichage. Pour agir sur une image ça peut le faire, mais là c'est pour envoyer à la carte graphique... si je lui envoie des millions de points qu'elle devra afficher des dizaines de fois par secondes...

    Je dois trouver un algo de triangularisation, ça doit bien exister.

    Merci
    "Heureusement qu'il y avait mon nez, sinon je l'aurais pris en pleine gueule" Walter Spanghero

  4. #4
    Responsable Purebasic

    Avatar de comtois
    Inscrit en
    Avril 2003
    Messages
    1 261
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 1 261
    Points : 9 924
    Points
    9 924
    Billets dans le blog
    8
    Par défaut
    Dans mon message précédent je te proposais de regarder aussi du côté de la triangulation de Delaunay mais comme je ne maitrise pas le sujet, je n'étais pas convaincu que ça puisse répondre à ton besoin du coup je l'ai supprimé de mon message, mais tu peux toujours y jeter un oeil.

    y'a aussi la triangulation d'un polygone c'est sûrement ce que tu recherches ?

    De mémoire il y a un tut sur DVP qui traite du sujet.
    Vous souhaitez participer à la rubrique PureBasic (tutoriels, FAQ, sources) ? Contactez-moi par MP.

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Février 2004
    Messages
    1 824
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 1 824
    Points : 1 544
    Points
    1 544
    Par défaut
    Oui j'ai regardé, mais apparemment c'est pour triangulariser un ensemble de points et non un polygone.

    Dans le tutoriel, c'est pour générer un terrain. Il génère les points, et ensuite utilise l'algo de Delaunay pour trianguler.

    Je pense que ça ne convient pas car moi j'ai juste un polygone et son contour, sans points à l'intérieur.

    Sinon j'ai trouvé ceci : http://mustapha.bismi.free.fr/dess/etude.html qui compare deux algo.

    Le premier, la méthode des oreilles, semble pas super performante. Si j'avais juste des zones industrielles / commerciales, ça conviendrai, mais pour un cours d'eau par exemple, ça sera pas assez performant.

    Le second, la méthode de seidel semble plus approprié, mais il va falloir que je gère des cas particuliers je pense.
    "Heureusement qu'il y avait mon nez, sinon je l'aurais pris en pleine gueule" Walter Spanghero

  6. #6
    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
    Citation Envoyé par mister3957 Voir le message
    Oui j'ai regardé, mais apparemment c'est pour triangulariser un ensemble de points et non un polygone.
    Ca revient au même... un polygone peut se voir comme une suite de segments, ou comme une suite de points.


    Citation Envoyé par mister3957 Voir le message
    Dans le tutoriel, c'est pour générer un terrain. Il génère les points, et ensuite utilise l'algo de Delaunay pour trianguler.

    Je pense que ça ne convient pas car moi j'ai juste un polygone et son contour, sans points à l'intérieur.
    L'algorithme de delaunay fonctionne très bien même sans points intérieurs. D'ailleurs il ne fait pas la distinction entre points intérieurs et extérieurs, il triangule en injectant les points un par un. Le résultat ne respecte que rarement le contour du polygone, c'est pour quoi il est nécessaire de faire une passe ensuite pour recréer le contour (en recombinant les triangle, en faisant de la découpe, etc etc).

    A mon avis, quelque soit l'algo que tu vas utiliser, tu n'auras pas ton résultat brut de décoffrage, il y aura toujours un peu de pre/post-traitement pour avoir ce que tu veux.
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  7. #7
    Membre expérimenté
    Profil pro
    Inscrit en
    Février 2004
    Messages
    1 824
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 1 824
    Points : 1 544
    Points
    1 544
    Par défaut
    Je crois que j'ai trouvé mon bonheur ici :
    http://www.cgal.org/Manual/last/doc_...pter_main.html

    Je testerai ça cette semaine sûrement.
    "Heureusement qu'il y avait mon nez, sinon je l'aurais pris en pleine gueule" Walter Spanghero

Discussions similaires

  1. Réponses: 8
    Dernier message: 26/04/2008, 13h24
  2. accès a un attribut d'une mdi depuis les forms filles
    Par Taaroa dans le forum Windows Forms
    Réponses: 7
    Dernier message: 27/06/2007, 16h20
  3. Charger une image depuis les ressources projets
    Par Flackou dans le forum DirectX
    Réponses: 2
    Dernier message: 04/06/2007, 14h34
  4. [VB]Remplissage d'une zone précise de la Picture Box
    Par Tyrael62 dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 21/01/2006, 19h11
  5. Remplissage d'une zone d'un canvas
    Par ulysse66x dans le forum Composants VCL
    Réponses: 5
    Dernier message: 31/01/2004, 12h41

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