FastLED 3.9.15
|
Functions to convert from the HSV colorspace to the RGB colorspace.
These basically fall into two groups: spectra, and rainbows. pectra and rainbows are not the same thing. Wikipedia has a good llustration that shows a "spectrum" and a "rainbow" side by side:
Source: http://en.wikipedia.org/wiki/Rainbow#Number_of_colours_in_spectrum_or_rainbow
Among other differences, you'll see that a "rainbow" has much more yellow than a plain spectrum. "Classic" LED color washes are spectrum based, and usually show very little yellow.
Take a look Wikipedia's page on HSV color space, with pseudocode for conversion to RGB color space: http://en.wikipedia.org/wiki/HSL_and_HSV
Note that their conversion algorithm, which is (naturally) very popular is in the "maximum brightness at any given hue" style, vs. the "uniform brightness for all hues" style.
You can't have both; either purple is the same brightness as red, e.g:
Where you have the same "total light" output. OR purple is "as bright
as it can be", e.g.:
Where purple is much brighter than red.
The colorspace conversions here try to keep the apparent brightness constant even as the hue varies.
Adafruit's "Wheel" function, discussed here is also of the "constant apparent brightness" variety.
Macros | |
#define | HUE_MAX 191 |
Max hue accepted for the hsv2rgb_raw() function. | |
#define | HUE_MAX_RAINBOW 255 |
Max hue accepted for the hsv2rgb_rainbow() function. | |
#define | HUE_MAX_SPECTRUM 255 |
Max hue accepted for the hsv2rgb_spectrum() function. | |
Functions | |
FASTLED_NAMESPACE_BEGIN void | hsv2rgb_rainbow (const struct CHSV *phsv, struct CRGB *prgb, int numLeds) |
Forward declaration of hsv2rgb_rainbow here, to avoid circular dependencies. | |
void | hsv2rgb_raw (const struct CHSV &hsv, struct CRGB &rgb) |
Convert an HSV value to RGB using a mathematically straight spectrum. | |
void | hsv2rgb_raw (const struct CHSV *phsv, struct CRGB *prgb, int numLeds) |
Convert an HSV value to RGB using a mathematically straight spectrum. | |
CRGB | hsv2rgb_spectrum (const struct CHSV &hsv) |
Inline version of hsv2rgb_spectrum which returns a CRGB object. | |
void | hsv2rgb_spectrum (const struct CHSV &hsv, struct CRGB &rgb) |
Convert an HSV value to RGB using a mathematically straight spectrum. | |
void | hsv2rgb_spectrum (const struct CHSV *phsv, struct CRGB *prgb, int numLeds) |
Convert an HSV value to RGB using a mathematically straight spectrum. | |
CHSV | rgb2hsv_approximate (const CRGB &rgb) |
Recover approximate HSV values from RGB. | |