#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;
}
使用C语言写一个HSV转RGB函数函数定义如下void led_strip_hsv2rgbuint32_t h uint32_t s uint32_t v uint32_t r uint32_t g uint32_t b

原文地址: https://www.cveoy.top/t/topic/g92i 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录