Ajoutez raphaeljs sur votre page et collez les fonctions estimateColorForValue()
et toHex()
quelque part dans votre code. estimateColorForValue(hue, value, darkestValue, brightestValue)
calcule une couleur pour une certaine valeur, interpolant la couleur en voyant où est dans la plage [darkestValue-brightestValue]
value
est. hue
est dans la plage [0-1]
: 0.1
pour orange-browny, 0.4
pour le vert, 0.8
pour le rose, et beaucoup plus de couleurs entre les deux. De petits changements de teinte modifient radicalement la couleur visuelle.
Par exemple: estimateColorForValue(.1, 15, 1, 20)
, peut être expliqué comme, pour les données allant de 1 à 20, calculer la couleur pour la valeur 15, dans l'espace orangé.
toHex(estimateColorForValue(.1, 15, 1, 20)) ==> "#cf8415"
code:
<script src="https://raw.github.com/DmitryBaranovskiy/raphael/master/raphael.js"></script>
<script>
function toHex(hsb) {
return Raphael.hsb2rgb(hsb.h, hsb.s, hsb.b).hex;
}
function estimateColorForValue(hue, value, darkestValue, brightestValue) {
// Constants to determine saturation and brightness
var darkBrightness = 0.6;
var brightBrightness = 1;
var darkSaturation = 0.3;
var brightSaturation = 1;
// Compute saturation and brightness:
var gradient = (value - darkestValue)/(brightestValue - darkestValue);
var saturation = darkSaturation + gradient * (brightSaturation - darkSaturation);
var brightness = darkBrightness + gradient * (brightBrightness - darkBrightness);
return {h: hue, s:saturation, b:brightness};
}
</script>
Merci pour les upvotes - Honnêtement, c'est un tout beaucoup plus facile que cela puisse paraître, esp. si vous vous souvenez même d'une petite algèbre de lycée. Je suis vraiment stupide et j'ai mis en œuvre et ré-implémenté une douzaine de fois au cours des 20 dernières années. – Pointy
Oh, et si ce n'est pas clair: le "nombre entier" correspondrait au coefficient paramétrique ("* t *") dans les formules. En d'autres termes, cette valeur «se déplace le long de la courbe», pour ainsi dire. Les points de contrôle sont en groupes de quatre, donc vous allez quatre à la fois à travers les points de génération. – Pointy
très très précis! je vais jeter un oeil;) –