Для перевода цвета из HSV в RGB-представление, воспользуйтесь следующей функцией: void HSV2RGB (unsigned char &r, unsigned char &g, unsigned char &b, unsigned int i_hue, unsigned char sat, unsigned char val) /* Вход: * 0 <= hue < 360 градусов - оттенок. Основные цвета: * 0 - красный, 60 - желтый, * 120 - зеленый, 180 - голубой * 240 - синий, 300 - пурпурный * hue == 360 - неопределён !!! * Остальные цвета между ними * 0 <= sat <= 255 - Saturation - насыщенность * 0 <= val <= 255 - Value - светлота * * Выход: * 0 <= r,g,b <= 255 - значения красного, зеленого, синего */ { int ii; double fr, hue; unsigned char c1, c2, c3; if (!sat) r = g = b = val; else { /* Хроматический цвет */ while (i_hue >= 360) i_hue -= 360; hue = i_hue; ii = (int)(hue /= 60.0); fr = hue - ii; c1 = (val * (255 - sat)) / 255; c2 = (val * (255 - sat * fr)) / 255; c3 = (val * (255 - sat * (1.0 - fr))) / 255; switch (ii) { case 0: r = val; g = c3; b = c1; break; case 1: r = c2; g = val; b = c1; break; case 2: r = c1; g = val; b = c3; break; case 3: r = c1; g = c2; b = val; break; case 4: r = c3; g = c1; b = val; break; case 5: r = val; g = c1; b = c2; break; } // switch } // if (!sat) } // HSV 2 RGB |