Для этого может быть действительно классный метод, но если никто не найдет его, вы, вероятно, сможете легко его перебить. Что-то, что вы можете попробовать, это просто разместить как можно больше значений RGB. Единственным недостатком является то, что вы, вероятно, получите некоторые яркие цвета. Я думаю, что вы можете обойти это, немного сместив, но вам понадобится немного тестирования.
Например ....
8 широко расположенных цветов могут выглядеть следующим образом. Обратите внимание, что D0 и 50 разделены на 80 или настолько широки, как вы можете получить в 8-битном пространстве, но задайте параметры, отличные от 00 и 80, что для IMO ужасные цвета.
D0D0D0
50D0D0
D050D0
D0D050
5050D0
50D050
D05050
505050
Если вам нужно больше цветов, вы можете уменьшить интервал. Все перестановки с 3 8-битными значениями вместо 2 для каждого слова дадут вам 27 вариаций (3 ^ 3), которых должно быть достаточно в большинстве случаев. В этом случае расставьте числа примерно на 55 (шестнадцатеричное) друг от друга. 4 8-битные значения доходят до 64 цветов (4 ^ 3), что, безусловно, подойдет.
Единственная другая проблема, которую я вижу, заключается в том, что некоторые из более темных цветов будет трудно различить, поэтому вы можете захотеть обмануть свои ценности в сторону более светлого конца. Но вместо этого я думаю, что если вы просто пропустите самый темный цвет (который будет темно-серым), все остальные должны работать и быть различимыми друг относительно друга.
Алгоритм генерации цветов должен быть довольно простым, если вы решите, какие значения вращать среди трех слов.
Последнее замечание: я повторяю, что это быстро и грязно, и я полагаюсь на любой существующий метод, на который кто-то может указать. Просто пытаюсь дать ОП вариант, которого может быть достаточно.