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

serialtom Messages postés 34 Date d'inscription mercredi 9 mars 2005 Statut Membre Dernière intervention 29 octobre 2009 - 20 juin 2005 à 09:26
Pamaury Messages postés 341 Date d'inscription jeudi 3 avril 2003 Statut Membre Dernière intervention 17 juin 2008 - 20 juin 2005 à 12:34
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

Pamaury Messages postés 341 Date d'inscription jeudi 3 avril 2003 Statut Membre Dernière intervention 17 juin 2008 3
20 juin 2005 à 12:34
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
0
Rejoignez-nous