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

C++ Discussion :

dessiner triangle en c++


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2015
    Messages : 5
    Par défaut dessiner triangle en c++
    -Bonjour, je suis une étudiante et le prof nous a demande de dessiner un triangle sur l'image de Lena en c++ , je sais bien sure comment ouvrir et lire un fichier sur c++ mais pour dessiner un triangle dessus en utilisant les pixels ( bleu vert rouge ) et en demandant a l'utilisateur de fixer les 3 points du triangle j'en ai aucune idée , est ce qu'il y a quelqu'un entre vous pourrez m'expliquer ou me passer le codage nécessaire pour réussir a le faire . Merci de votre attention .

    voila l'image de lena dans le lien suivant :http://www.google.fr/imgres?imgurl=h...ed=0CDYQrQMwAQ

  2. #2
    Expert confirmé
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 771
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 771
    Par défaut
    C'est un exercice trivial ou ou

    Il faut parcourir tous les points de ton image (ligne par ligne en commençant par le coin supérieur gauche, le parcours classique) et pour chacun faire un test [d'inclusion] s'il est dans le triangle ou pas.

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    float sign (fPoint p1, fPoint p2, fPoint p3) {
        return (p1.x - p3.x) * (p2.y - p3.y) - (p2.x - p3.x) * (p1.y - p3.y);
    }
     
    bool PointInTriangle (fPoint pt, fPoint v1, fPoint v2, fPoint v3) {
        bool b1, b2, b3;
     
        b1 = sign(pt, v1, v2) < 0.0f;
        b2 = sign(pt, v2, v3) < 0.0f;
        b3 = sign(pt, v3, v1) < 0.0f;
     
        return ((b1 == b2) && (b2 == b3));
    }
    Édit: Ta photo de Lena Söderberg n'est pas complète Regarde "The Complete Lenna Story" ou

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2008
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 56
    Par défaut
    @foetus: C'est chaud ta réponse.
    Recopier un code sans ne rien n'y comprendre n'a pas grand intérêt .

    Faudrait déjà savoir si on parle d'un triangle plein ou pas !

    S'il est plein, effectivement, la solution de foetus est sans doute la plus simple, elle se base sur les algorithmes qui détectent si un point se trouve à l'intérieur d'un polygone convexe (ce qui est le cas d'un triangle).
    Cet algorithme est expliqué ici http://www.developpez.net/forums/d36...ur-d-triangle/

    Si ton triangle est vide, il faut juste tracer des droites
    l’algorithme de Bresenham est implémenté ici : http://anomaly.developpez.com/tutoriel/sdl/partie2/

    Comme quoi on trouve tout sur developpez.com

    Au final, ça serait pas mal de connaitre ton niveau !
    Savoir si t'es sensé implémenter les algorithmes ou bien utiliser une librairie.
    C'est pas si trivial que ça comme exercice en fait.

  4. #4
    Expert confirmé
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 771
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 771
    Par défaut
    Citation Envoyé par webshaker Voir le message
    Faudrait déjà savoir si on parle d'un triangle plein ou pas !
    Je me suis posé la question et j'ai préféré attendre la réaction du posteur [de la posteuse]

    Et je voyais plus un algo "Intérieur/ Extérieur" en cas de triangle vide, mais je peux me tromper
    Ton idée d'algorithme de Bresenham me plait bien

    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
    Pour chaque ligne
    Début
        booléan est_à_l'intérieur = test(0);
        booléan courant;
     
        Pour point: 1 jusqu'à X:
           courant =  test(point);
     
           if (courant != est_à_l'intérieur) {
               Afficher(point);
     
               est_à_l'intérieur = non(est_à_l'intérieur);
           }
        Fin Pour
    Fin

    Citation Envoyé par webshaker Voir le message
    @foetus: C'est chaud ta réponse.
    Recopier un code sans ne rien n'y comprendre n'a pas grand intérêt .
    Il ne faut pas être sorti de Saint-Cyr pour voir qu'on fait 3 produits vectoriels (dot product)

    Et en gros on détermine si le cosinus est positif ou négatif: mais je n'arrive jamais à retenir l'explication , mais tous les cosinus doivent être négatifs si le point est à l'intérieur et ... si on choisit le bon sens de calcul

  5. #5
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2015
    Messages : 5
    Par défaut
    bonsoir , ben pour mon niveau je suis en 2 eme année classe préparatoire dans une école d’ingénieur et en faite le prof nous a demander deux points P1 , P2 et le troisième P3 doit être perpendiculaire au segment ( P1 P2) puis dessiner un P4 Nom : lenaaa.jpg
Affichages : 1865
Taille : 103,6 Ko voila exactement ce qu'il nous demande de faire et le pire qu'on fait jusqu’à maintenant en cours que les fichiers ( lire et afficher ) je trouve que ce mini projet note est un peu difficile pour notre niveau malheureusement

  6. #6
    Membre confirmé
    Homme Profil pro
    Développeur du dimanche
    Inscrit en
    Février 2013
    Messages
    154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur du dimanche

    Informations forums :
    Inscription : Février 2013
    Messages : 154
    Par défaut
    Pourrais tu poster l'énoncé complet ?

  7. #7
    Expert confirmé
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 771
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 771
    Par défaut
    Citation Envoyé par clemence.lec Voir le message
    je trouve que ce mini projet note est un peu difficile pour notre niveau malheureusement
    Et pourtant tu es en prépa ou

    Ton problème est juste une projection orthogonale. Je pense qu'il faut passer par le produit vectoriel (dot product) pour déterminer le projeté de v3 sur [v1, v2] et ensuite utiliser l'algorithme de Bresenham pour tracer la droite/ segment [projeté, v3].

Discussions similaires

  1. dessiner triangle en c
    Par clemence.lec dans le forum C
    Réponses: 3
    Dernier message: 13/04/2015, 09h57
  2. dessiner triangle en c
    Par clemence.lec dans le forum C
    Réponses: 1
    Dernier message: 30/03/2015, 00h49
  3. Dessiner des anneaux composés des triangles adjacents
    Par fraisa1985 dans le forum Mathématiques
    Réponses: 5
    Dernier message: 02/11/2009, 09h44
  4. dessiner un triangle avec degradé de couleurs
    Par xantares dans le forum Langage
    Réponses: 2
    Dernier message: 19/03/2006, 11h59
  5. [ALGO] dessiner un triangle dans le bon sens
    Par lefait dans le forum Algorithmes et structures de données
    Réponses: 13
    Dernier message: 05/02/2005, 14h38

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