2011-01-09 6 views
0

Je voudrais rendre une carte telle que: alt textRendu carte de température sans utiliser des valeurs plage

avec des couleurs différentes, et non des dégradés juste, avec une carte qui a 0 ... 1 valeur de la température, sans en utilisant des valeurs à distance, c'est, si t = 0 ... 0,2 utiliser rouge * t, si t> 0,2 et t < 0,4 utiliser orange * t, etc.

Un conseil?

EDIT: exemple de code de "gammes":

else if (layerType == "temperature") { 

    if (value <= 0.2) { 
     r = Math.round(value * 200)+100; 
     g = Math.round(value * 200)+100; 
     b = Math.round(value * 250)+150; 
     a = 1; 
    } else if (value > 0.2 && value <= 1) { 
     r = Math.round(value * 250); 
     g = Math.round(value * 250); 
     b = Math.round(value * 200); 
     a = 1; 
    } 
+0

Qu'entendez-vous exactement par 'orange * t'? –

+0

Vérifier l'édition ..... –

Répondre

4

Vous pouvez affecter des températures aux couleurs à l'aide des fonctions continues lisses avec l'espace couleur HSB (teinte, saturation et luminosité).

Hue cartographie le spectre des couleurs visibles comme ceci: hue scale

(http://en.wikipedia.org/wiki/File:HueScale.svg)

Dans votre exemple, l'image, il semble que la saturation et la luminosité peut être constante, de sorte que votre fonction pourrait simplement traduire température teinte:

hue = f(t) 

en fonction de vos besoins, f pourrait être une fonction linéaire, logarithmique, exponentielle ou tout semble le mieux.

Pour une discussion sur la façon de traduire HSB à l'espace couleur RVB, regardez par exemple à la réponse acceptée à ce sujet StackOverflow: Algorithm For Generating Unique Colors

Pour une discussion générale sur la teinte, voir par exemple cet article WikiPedia: http://en.wikipedia.org/wiki/Hue

Questions connexes