Сортировка предметов по цвету - PullRequest
1 голос
/ 30 января 2011

У меня есть корзина цветов, и я хочу, чтобы они помечали и сортировали по цвету.Любые идеи о том, как это можно сделать, будут очень полезны.

Большое спасибо за ваше время.

Ответы [ 5 ]

5 голосов
/ 30 января 2011

Самым очевидным решением кажется упорядочение по оттенку.

Это даст вам стабильный оператор сравнения сортировки, который сортирует ваш массив в следующем порядке: enter image description here

Обратите внимание, что некоторые цвета RGB вырождены в том смысле, что они не имеют единой формы HLS. Белый такой пример. Вам решать, как вы с ними справитесь.

1 голос
/ 27 июля 2016

Вы можете попробовать взять главные компоненты дисперсии, а затем проецироваться на эту ось. (Таким образом, если все цвета имеют оттенки красного, красный не равен нулю, зеленый и синий оба равны нулю, и алгоритм скажет, что ось равна 1,0, 0,0, 0,0. Затем он сортирует по красному. Если они все оттенки желтый, то эта ось - корень (0,5), корень (0,5), 0,0, он усредняет красный и зеленый, и сортирует по ним). Это не будет хорошо работать, если цвета образуют три или более отдельных "облака".

0 голосов
/ 04 ноября 2012

Вы можете сравнить цвета в Java см. это

0 голосов
/ 04 ноября 2012

Вы можете сделать это, используя концепцию Лексикографическое упорядочение .

В основном, с учетом представлений HSL 2 цветов (скажем, C1 = (H1, S1, L1) и C2 = (H2, S2, L2)), мы можем определить C1 < C2 тогда и только тогда, когда ((H1 < H2) || (H1 == H2 && S1 < S2) || (H1 == H2 && S1 == S2 && L1 < L2)), и C1 == C2 тогда и только тогда, когда H1 == H2 && S1 == S2 && L1 == L2.Аналогично для C1>C2.

Сначала цвета будут упорядочены по оттенку;затем путем насыщения разрешать конфликты оттенков;и, наконец, с помощью легкости разрешить конфликты оттенка и насыщенности.

В этом примере я использовал порядок старшинства H > S > L, но вы также можете легко использовать другой порядок в соответствии с вашими потребностями или, может быть, даже другойцветопередача (например, RGB).

0 голосов
/ 30 января 2011

Если вы хотите отсортировать его по фактическому цвету, а не по алфавиту по названию цвета, то решение не очень очевидно. Сортировка обычно выполняется на объектах, где можно определить четкую семантику «больше чем» и «меньше чем». У цветов, однако, нет такой семантики, потому что они обычно представлены 3 числами (или RGB или HSV). Вы должны были бы произвольно определить свой собственный «порядок», а затем отсортировать по нему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...