将下面的HSV转RGB函数定义修改成void led_strip_hsv2rgbuint32_t h uint32_t s uint32_t v uint32_t r uint32_t g uint32_t b并将fabsfmod函数在一个函数里实现void HSV2BGRHSV &hsv BGR &bgr int h = hsvh; double s = hsv s; doub
void led_strip_hsv2rgb(uint32_t h, uint32_t s, uint32_t v, uint32_t *r, uint32_t *g, uint32_t *b) { double s_normalized = (double)s / 255.0; double v_normalized = (double)v / 255.0; double c = v_normalized * s_normalized; double x = c * (1 - fabs(fmod(h / 60.0, 2) - 1)); double m = v_normalized - c; double r_temp, g_temp, b_temp;
if (h >= 0 && h < 60)
{
r_temp = c;
g_temp = x;
b_temp = 0;
}
else if (h >= 60 && h < 120)
{
r_temp = x;
g_temp = c;
b_temp = 0;
}
else if (h >= 120 && h < 180)
{
r_temp = 0;
g_temp = c;
b_temp = x;
}
else if (h >= 180 && h < 240)
{
r_temp = 0;
g_temp = x;
b_temp = c;
}
else if (h >= 240 && h < 300)
{
r_temp = x;
g_temp = 0;
b_temp = c;
}
else
{
r_temp = c;
g_temp = 0;
b_temp = x;
}
*r = (uint32_t)((r_temp + m) * 255);
*g = (uint32_t)((g_temp + m) * 255);
*b = (uint32_t)((b_temp + m) * 255);
原文地址: https://www.cveoy.top/t/topic/g93x 著作权归作者所有。请勿转载和采集!