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 :

fonctions et couleurs


Sujet :

C++

  1. #1
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Espagne

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 25
    Par défaut fonctions et couleurs
    hello,
    me voici avec une petite question. Qui d'ailleurs ne devrait peut-être pas être dans ce forum mais bon...
    J'ai une classe ressort dans laquelle est définie une méthode qui retourne son énergie potentielle (scalaire) . Le but est que quand j'affiche le ressort, plus son énergie est grande plus ça couleur tend ver le rouge en passant par le bleu puis le vert. Il faut que cela se face progressivement. Il faudrait donc des fonction qui retournent les valeurs en double pour le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    double e(r.Energie());
    dessineTrait (matrice, r.A(), r.B(), R, V, B);
    Pour vous donner un exemple, voici ce que j'ai fait pour les couleurs des masses (les masses et les ressorts sont connectés) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
        QMatrix4x4 matrice;
        glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
        Vecteur3D p (a_dessiner.Position());
        matrice.translate(p[0], p[1], p[2]);
        matrice.scale(0.25);
        double x (p[2]);
        double v((cos(x-1.5)+1)/5);
        dessineSphere(matrice,1.0 ,v, 0.0);
    Si vous avez des idées merci d'avance ça fait un moment que je tâtonne et je ne trouve rien d’intéressant.

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 502
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 502
    Par défaut
    C'est fonction de votre encodage des couleurs.
    Si vous êtes en encodage RGB, vos couleurs sont circonscrits dans un cube avec les valeurs en R en G et en B comme axe.
    "Dessinez" une courbe dans cet espace pour qu'elle suive les variations de couleurs voulues en fonction d'un paramètre.
    Vous en déduisez une courbe paramétrique dans l'espace R^3.
    Avec cette fonction, vous passez l'énergie et elle vous donnera les valeur R, G, et B pour l'encodage de la couleur.
    Si vos contraintes de couleur ne sont pas très strictes, l'utilisation d'un simple gradient devrait faire l'affaire.
    http://www.perbang.dk/rgbgradient/

  3. #3
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Espagne

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 25
    Par défaut pas trop compris
    Je ne suis pas sûr d'avoir compris ta réponse Bacelar... Ma question ne portait pas tellement sur comment cela fonctionne ( je le sais déjà )
    Quoi qu'il en soit, j'ai finalement trouvé une solution. Je met la réponse dans le cas ou un jour ceci soit utile à qquun.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    QMatrix4x4 matrice;
     
    double e(ressort.Energie());
     
    double r((tanh(e- valmoyenne)+1)/2.0) ;
    double v((tanh(valmoyenne - e )+1)/2.0);
    double b(1.0/pow((1+(e-valmoyenne)),2));
     
    dessineTrait (matrice, ressort.A(), ressort.B(), r, v, b);
    Les fonctions utilisées sont dans l'intervalle [0,1]. On nécessite la valeur moyenne de tous les ressorts pour pouvoir fixer un milieu. (je vais tester avec la médiane voir si c'est mieux)

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

Discussions similaires

  1. fonction changer couleur de fond sur onclick
    Par eddflo dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 23/01/2012, 22h31
  2. [XL-2007] comment faire pour Formater cellule en fonction choix couleur
    Par chris09300 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 15/12/2011, 14h28
  3. [XL-2007] Copie de ligne en fonction de couleur de cellule dans d'autre feuille
    Par stephadm dans le forum Macros et VBA Excel
    Réponses: 23
    Dernier message: 30/09/2011, 07h43
  4. fonction affichage couleur
    Par dark0502 dans le forum C
    Réponses: 2
    Dernier message: 02/12/2007, 10h30

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