Я бы хотел отсортировать одномерный список цветов так, чтобы цвета, которые типичный человек воспринимал как «похожие», находились рядом друг с другом.
Очевидно, что это сложная или, возможно, невозможная проблема, чтобы получить «идеально», поскольку цвета обычно описываются в трех измерениях, но это не значит, что нет некоторых методов сортировки, которые выглядят явно более естественными, чем другие.
Например, сортировка по RGB работает не очень хорошо, так как она будет сортироваться в следующем порядке, например:
(1) R = 254 G = 0 B = 0
(2) R = 254 G = 255 B = 0
(3) R = 255 G = 0 B = 0
(4) R = 255 G = 255 B = 0
То есть он будет чередовать эти цвета: красный, желтый, красный, желтый, причем два "красных" по существу незаметно отличаются друг от друга, а два желтых также незаметно отличаются друг от друга.
Но сортировка по HLS, вообще говоря, работает намного лучше, и я думаю, что HSL даже лучше; с любым из них красные будут рядом друг с другом, а желтые будут рядом друг с другом.
Но у HLS / HSL тоже есть некоторые проблемы; вещи, которые люди воспринимают как «черные», могут быть отделены друг от друга, как и вещи, которые люди воспринимают как «белые».
Опять же, я понимаю, что я в значительной степени должен признать, что будут некоторые подобные расколы; Мне просто интересно, нашел ли кто-нибудь лучший способ, чем HLS / HSL. И я знаю, что «лучше» несколько произвольно; Я имею в виду «более естественный для типичного человека».
Например, смутная мысль, которую я имел, но еще не пробовал, - возможно, «L - это самая важная вещь, если она очень высокая или очень низкая», но в остальном это наименее важно. Кто-нибудь пробовал это? Это сработало хорошо? Что конкретно вы решили "очень низкий" и "очень высокий" означает? И так далее. Или кто-нибудь нашел что-нибудь еще, что улучшило бы HSL?
Я должен также отметить, что мне известно, что я могу определить кривую заполнения пространства через куб цветов и упорядочить их одномерно, как они будут встречаться при путешествии по этой кривой. Это устранит видимые разрывы. Однако это не совсем то, чего я хочу; Я хочу приличных больших группировок больше, чем идеальных мелких группировок.
Заранее спасибо за любую помощь.