Я пытаюсь создать твердое тело, которое меняет оттенок с течением времени, но я немного смущен относительно того, как я должен это делать. В настоящее время я делаю попытку с модулем Tkinter в python, но он поддерживает только шестнадцатеричные и цвета, основанные на словах. В идеале я бы мог настроить значения HSV и просто добавить выражение времени к оттенку, но кажется, что это может быть сложно с учетом системы ввода цветов Tkinter. Я видел, как люди рекомендуют использовать модуль colorsys, но он медленно обрабатывается, и я не знаю, насколько он будет поддерживать смещение оттенка ~ 30 раз в секунду.Как я могу создать сплошной оттенок смены во времени в python?
1
A
ответ
0
Вам нужен способ конвертировать HSL в RGB. Вот решение, которое я нашел из другого вопроса на SO:
def hueToRgb(p, q, t):
if t < 0: t += 1
if t > 1: t -= 1
if t < 1/6: return p + (q - p) * 6 * t
if t < 1/2: return q
else: return p + (q - p) * (2/3 - t) * 6 ift < 2/3 else p
def hslToRgb(h, s, l):
r = 0
g = 0
b = 0
if s == 0:
r = g = b = l
else:
q = l < 0.5 ? l * (1 + s) : l + s - l * s
p = 2 * l - q
r = hue2rgb(p, q, h + 1/3)
g = hue2rgb(p, q, h)
b = hue2rgb(p, q, h - 1/3)
return [round(r * 255), round(g * 255), round(b * 255)]
Затем, чтобы преобразовать HSL в действительное использование шестигранной Этот код (Это мой собственный код):
def hex(num):
if num == 0: return "#"
last = num % 16
return hex((num - last)/16) + "abcdef"[int(last)]
Таким образом, вы будете использовать этот код, чтобы получить шестигранную строку для HSL кода:
rgb = hslToRgb(h, s, l)
return hex(rgb[0] * 256 + rgb[1] * 16 + rgb[0])
(Пожалуйста, исправьте ошибки синтаксиса питона, я не программирую с Python много)
+0
Модуль 'colorsys' может выполнять преобразования в/из цветовых пространств RGB и оттенков. –
Вы считали создание таблицы поиска? –