Распределение цветов
Господа программисты, кто может посоветовать удачный алгоритм?
Задача:
Есть Х высших слоёв.
"Под каждым" из них есть Yx низших слоёв.
Надо распределить цвет всем Yx слоям.
Условия распределения:
Нельзя чтобы у слоёв Z и W был одинаковый цвет если они "принадлежат" к разным высшим слоям.
Нежелательно чтобы у слоёв Z и W был одинаковый цвет даже если они "принадлежат" к одному высшему слою.
Можно "похожий".
Если цвета низших слоёв принадлежащих к одному высшему слою могут быть похожи, то тогда обязательно чтобы "разница" цветов между низшими слоями принадлежащих к разным высшим слоям была "велика".
Вроде всё.
Естественно, я понимаю что цвета конечны и если дать тысячу высших слоёв и тысячу низших под каждым из них, то многие будут выглядеть похоже.
Как мне видится, средние величины будут, как правило :
5-50 высших слоёв
Под каждым из них от 1 до 6 низших слоёв.
Моё решение это всякие игры наподобие таких:
Итерируем на высшие слои:
Умножаем текущий номер высшего слоя на первичное число .
L = (6329 * текущий номер высшего слоя) mod 8000
Находим Х (расстояние на "кубике" цветов по оси Х)
X = L mod 20
Находим Y (расстояние на "кубике" цветов по оси Y)
L2 = (L – X) / 20
Y = L2 mod 20
Находим Z (расстояние на "кубике" цветов по оси Z)
Z = (L2 - Y) /20
Переводим X,Y,Z в цвета RGB:
R0 = X * 11 + 46
G0 = Y * 11 + 46
B0 = Z * 11
Итерируем на низшие слои принадлежащие к данному высшему слою :
N - текущий низший слой
RN = R0 – ((N-1)*2)
GN = round (G0 – ((N-1)*2.5))
BN = B0 + ((N-1)*3)
Примерно так.
Сейчас я играюсь со разными константами (20,46 ,6329, 8000,2.5) и смотрю что получается. Но если у кого-то есть работающая вещь или хорошая идея, с радостью возьму