Как лучше кодировать комплексное число в пиксель RGB и наоборот?
Вероятно, (логарифм) абсолютного значения переходит в яркость, а аргумент - в оттенок.
Ненасыщенные пиксели должны получить рандомизированный аргумент в обратном преобразовании.
Something like:
0 -> (0,0,0)
1 -> (255,0,0)
-1 -> (0,255,255)
0.5 -> (128,0,0)
i -> (255,255,0)
-i -> (255,0,255)
(0,0,0) -> 0
(255,255,255) -> e^(i * random)
(128,128,128) -> 0.5 * e^(i *random)
(0,128,128) -> -0.5
Есть ли готовые формулы для этого?
Редактировать: Похоже, мне просто нужно конвертировать RGB в HSB и обратно.
Редактировать 2: Существующий RGB -> фрагмент конвертера HSV:
if (hsv.sat == 0) {
hsv.hue = 0; // !
return hsv;
}
Я не хочу 0. Я хочу случайно. И не только если hsv.sat==0
, но если оно ниже, чем должно быть («должно быть» означает максимальное насыщение, насыщение, которое следует после преобразования из комплексного числа).