Reclasser des couleurs en selon leur longueur d'onde (arc en ciel)

Reclasser des couleurs en selon leur longueur d'onde (arc en ciel) - PHP - Programmation

Marsh Posté le 08-02-2007 à 11:55:05    

http://arthur.u-strasbg.fr/~ronse/TIDOC/VISU/eye-sense.jpg
 
j'ai un tableau avec des couleurs en php , j'aimerais le reclasser suivant leur longeur d'onde (ex : rouge foncé rouge clair , orange, orange clair , jaune, vert citron ,vert etc....) , le classement doit etre dynamique je ne peut le faire avant , ni prevoir les couleurs qui vont etre dans le tableau (en le generant par exemple)
 
pour cela j'ai converti ma couleur RGB vers le format HSL (Teinte Saturation  Luminosité)
 
et je les reclasse suivant la teinte, seulement voila , du rouge , du gris clair , et du gris foncé on tous la même teinte (zero), et se retrouve donc melangé entre eux.
 
Si je reclasse d'apres la teinte, puis la saturation (qui permet de distingué le rouge du gris) ca va mieux mais les gris clair  sont tjs melangé avec les autres gris.... (et teinte , saturation , luminosité ne donne rien non plus)
 
bref ca marche pas tres fort  
 
qqn  aurait des idées????


Message édité par red faction le 08-02-2007 à 12:58:01
Reply

Marsh Posté le 08-02-2007 à 11:55:05   

Reply

Marsh Posté le 08-02-2007 à 14:43:33    

Pour ton tris, tu fais quoi un tri majeur sur la teinte et un tri mineur sur la saturation (on ne tri que les couleurs dont les teintes sont égales) ou bien tu fais un tri sur la teinte suivit d'un autre tri indépendant sur la saturation?

Reply

Marsh Posté le 08-02-2007 à 14:47:18    

je calcule une valeur qui permet de trier mon tableau
 
val = teinte *100000+ luminosité
jai aussi essayé ca  
val = teinte *100000+ luminosité*100+saturation
val = teinte *100000+ saturation*100+luminosité
val = teinte *100000+ (saturation+luminosité)
 
puis je fait un asort dessus....

Reply

Marsh Posté le 08-02-2007 à 15:18:41    

De mémoire, il existe en php une fonction de tri qui prend comme paramettre un tableau et une fonction personelle.
La fonction personelle prend comme paramettre les deux valeurs à trier et donne en sortie -1, 0 ou 1 pour indiquer qu'elle est la plus petite des valeurs.
 
Si tu veux garder ton calcul, alors il faut multiplier au moins par 101 et 10201 vu que la luminosité et la saturation vont de 0 à 100 compris (donc 101 valeurs différentes)
A noter qu'avec asort, tu gardes les même index pour chaque case, (les index ne sont plus dans l'ordre de départ) peut être que ton probléme viens de la méthode de parcours du tableau.
 
PS : Pose ton code qu'on voye ça si ca ne marche toujours pas. ;)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed