Я пытаюсь создать цветовое колесо, но в пространстве RYB. Я успешно реализовал это в RGB. Я начинаю с Красного (255, 0, 0) и преобразую его в HSL, увеличиваю значение оттенка, а затем преобразую обратно для отображения на экране. Подробности описаны здесь: https://serennu.com/colour/rgbtohsl.php
Однако мои попытки сделать это с RYB пока не сработали.
Из того, что я прочитал, вы получаете значение в RGB, например, Red (255, 0, 0). Затем вы ПРИНИМАЕТЕ, что это RYB, и используете приведенный ниже код для преобразования этого значения «RYB» в RGB. Затем я получил это значение, преобразовал его в HSL, увеличил оттенок и затем отобразил его на экране, как и раньше.
def _cubic(t, a, b):
weight = t * t * (3 - 2*t)
return a + weight * (b - a)
def ryb_to_rgb(r, y, b): # Assumption: r, y, b in [0, 1]
# red
x0, x1 = _cubic(b, 1.0, 0.163), _cubic(b, 1.0, 0.0)
x2, x3 = _cubic(b, 1.0, 0.5), _cubic(b, 1.0, 0.2)
y0, y1 = _cubic(y, x0, x1), _cubic(y, x2, x3)
red = _cubic(r, y0, y1)
# green
x0, x1 = _cubic(b, 1.0, 0.373), _cubic(b, 1.0, 0.66)
x2, x3 = _cubic(b, 0., 0.), _cubic(b, 0.5, 0.094)
y0, y1 = _cubic(y, x0, x1), _cubic(y, x2, x3)
green = _cubic(r, y0, y1)
# blue
x0, x1 = _cubic(b, 1.0, 0.6), _cubic(b, 0.0, 0.2)
x2, x3 = _cubic(b, 0.0, 0.5), _cubic(b, 0.0, 0.0)
y0, y1 = _cubic(y, x0, x1), _cubic(y, x2, x3)
blue = _cubic(r, y0, y1)
return (red, green, blue)
Я ожидаю получить цветовое колесо RYB, как описано здесь: Вычисление аналогичного цвета с помощью python
Я следовал инструкциям в этом посте, и все еще получаю неправильные цвета. Я проверил этот алгоритм на линейном пути (не круг), чтобы получить http://prntscr.com/o3gcjr
Это похоже на цветовое колесо на том посте, на который я ссылался выше. Однако при запуске колеса из другого цвета, я получаю это http://prntscr.com/o3gp76
И, на мой взгляд, это не совсем правильно.