使用C语言写一个HSV转RGB函数函数定义如下void led_strip_hsv2rgbuint32_t h uint32_t s uint32_t v uint32_t r uint32_t g uint32_t b
#include <stdint.h>
void led_strip_hsv2rgb(uint32_t h, uint32_t s, uint32_t v, uint32_t *r, uint32_t *g, uint32_t *b) { uint32_t i; uint32_t f, p, q, t;
if (s == 0) {
// achromatic (grey)
*r = *g = *b = v;
return;
}
h /= 60; // sector 0 to 5
i = h % 6;
f = h / 6;
p = (v * (255 - s)) >> 8;
q = (v * (255 - (s * f))) >> 8;
t = (v * (255 - (s * (255 - f)))) >> 8;
switch (i) {
case 0:
*r = v;
*g = t;
*b = p;
break;
case 1:
*r = q;
*g = v;
*b = p;
break;
case 2:
*r = p;
*g = v;
*b = t;
break;
case 3:
*r = p;
*g = q;
*b = v;
break;
case 4:
*r = t;
*g = p;
*b = v;
break;
default: // case 5:
*r = v;
*g = p;
*b = q;
break;
}
原文地址: https://www.cveoy.top/t/topic/g92i 著作权归作者所有。请勿转载和采集!