MayaFlux 1.0.0
Digital-First Multimedia Processing Framework
Loading...
Searching...
No Matches

◆ rgb_to_hsv()

glm::vec3 MayaFlux::Kinesis::rgb_to_hsv ( glm::vec3  rgb)
inlinenoexcept

Convert red, green and blue to hue, saturation and value.

Inverse of hsv_to_rgb. Hue is 0 for greys, where it is undefined.

Parameters
rgbRed in x, green in y, blue in z, each in [0, 1].
Returns
Hue in x, saturation in y, value in z, each in [0, 1].

Definition at line 39 of file ColorSpace.hpp.

40{
41 const float cmax = std::max({ rgb.x, rgb.y, rgb.z });
42 const float cmin = std::min({ rgb.x, rgb.y, rgb.z });
43 const float delta = cmax - cmin;
44
45 float hue = 0.F;
46 if (delta > 0.F) {
47 if (cmax == rgb.x) {
48 hue = std::fmod((rgb.y - rgb.z) / delta, 6.F);
49 } else if (cmax == rgb.y) {
50 hue = (rgb.z - rgb.x) / delta + 2.F;
51 } else {
52 hue = (rgb.x - rgb.y) / delta + 4.F;
53 }
54 hue /= 6.F;
55 if (hue < 0.F)
56 hue += 1.F;
57 }
58
59 return { hue, cmax > 0.F ? delta / cmax : 0.F, cmax };
60}

Referenced by MayaFlux::Portal::Forma::ColorPicker::place(), and MayaFlux::Kinesis::Vision::rgba_to_hsv().

+ Here is the caller graph for this function: