Comment affecter une couleur a un vecteur en fonction de sa norme ?

Signaler
Messages postés
34
Date d'inscription
mercredi 9 mars 2005
Statut
Membre
Dernière intervention
29 octobre 2009
-
Messages postés
341
Date d'inscription
jeudi 3 avril 2003
Statut
Membre
Dernière intervention
17 juin 2008
-
Salut a tous !

Je suis en train de developper un petit soft et il m est pose le probleme suivant :
je dois afficher a l ecran une discretisation de courbe en vecteurs et j aimerais lier la norme de ces vecteurs a une couleur de l arc en ciel (norme nulle bleu norme maxi rouge). J ai deja essaye de faire une variation lineaire de rgb mais le resultat n est pas tres satisfaisant (pas de cyan ni de jaune ...). Existerait il une fonction Open Gl qui permette de gerer ca ? ou qqn peut il m aiguiller sur la maniere de developper une petite fonction qui puisse gerer ca ?

merci bcp !

a plus

Serialtom

1 réponse

Messages postés
341
Date d'inscription
jeudi 3 avril 2003
Statut
Membre
Dernière intervention
17 juin 2008
2
vu comment tu as posé tes contrainte, en effet l'interpolation linaire ne suffit pas mais tu peux faire par exemple:

pour une norme(0.0 à 1.0):

0.0 -> bleu

0.5 -> vert

1.0 -> rouge



comme çà si la norme fait entre 0.0 et 0.5 tu interpole en bleu et vert

et si elle fait entre 0.5 et 1.0 tu interpole entre vert et rouge .

Là il te manqueras encore quelque nuance par contre .



Sinon je vois cette solution:

pour la composante R:

à 0.0(normale nulle) elle vaut 0.0

à 1.0(norme maxi) elle vaut 1.0

il suffit ensuite d'interpoler ou même de faire un petit calcul tout bête:

couleurR=norme



pour le composante B:

à 0.0(normale nulle) elle vaut 1.0


à 1.0(norme maxi) elle vaut 0.0


il suffit ensuite d'interpoler ou même de faire un petit calcul tout bête:


couleurB=1.0-norme



pour la composante G:

à 0.0(normale nulle) elle vaut 0.0

à 0.5(normale moyenne) elle vaut 1.0



à 1.0(norme maxi) elle vaut 0.0

pour calculer tu fais:

couleurG=1.0-abs(1.0-2*norme)



NOTE: la norme doit être entre 0.0 et 1.0(vecteur normalisé donc) .

Sinon tu peux éventuellement utiliser cos et sin .

Mais là encore il te manqueras des couleurs .

A m a u r y