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 | |
CRGB | hsv2rgb_fullspectrum (const struct CHSV &hsv) |
version of hsv2rgb_fullspectrum which returns a CRGB object. | |
void | hsv2rgb_fullspectrum (const struct CHSV &hsv, struct CRGB &rgb) |
Converts an HSV value to RGB using the algorithm from here: https://en.wikipedia.org/wiki/HSL_and_HSV#HSV_to_RGB_alternative By Shawn Silverman. | |
void | hsv2rgb_fullspectrum (const struct CHSV *phsv, struct CRGB *prgb, int numLeds) |
CRGB | hsv2rgb_rainbow (const struct CHSV &hsv) |
void | hsv2rgb_rainbow (const struct CHSV &hsv, struct CRGB &rgb) |
void | hsv2rgb_rainbow (const struct CHSV *phsv, struct CRGB *prgb, int numLeds) |
void | hsv2rgb_raw (const struct CHSV &hsv, struct CRGB &rgb) |
void | hsv2rgb_raw (const struct CHSV *phsv, struct CRGB *prgb, int numLeds) |
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) |
CHSV | rgb2hsv_approximate (const CRGB &rgb) |
Recover approximate HSV values from RGB. | |