|
发表于 2022-2-24 10:24:44
|
显示全部楼层
给你个HSV转RGB的算法,你看看
- void led_strip_hsv2rgb(uint32_t h, uint32_t s, uint32_t v, uint32_t *r, uint32_t *g, uint32_t *b)
- {
- h %= 360; // h -> [0,360]
- uint32_t rgb_max = v * 2.55f;
- uint32_t rgb_min = rgb_max * (100 - s) / 100.0f;
- uint32_t i = h / 60;
- uint32_t diff = h % 60;
- // RGB adjustment amount by hue
- uint32_t rgb_adj = (rgb_max - rgb_min) * diff / 60;
- switch (i) {
- case 0:
- *r = rgb_max;
- *g = rgb_min + rgb_adj;
- *b = rgb_min;
- break;
- case 1:
- *r = rgb_max - rgb_adj;
- *g = rgb_max;
- *b = rgb_min;
- break;
- case 2:
- *r = rgb_min;
- *g = rgb_max;
- *b = rgb_min + rgb_adj;
- break;
- case 3:
- *r = rgb_min;
- *g = rgb_max - rgb_adj;
- *b = rgb_max;
- break;
- case 4:
- *r = rgb_min + rgb_adj;
- *g = rgb_min;
- *b = rgb_max;
- break;
- default:
- *r = rgb_max;
- *g = rgb_min;
- *b = rgb_max - rgb_adj;
- break;
- }
- }
复制代码 |
|