Вы можете сделать это, используя концепцию Лексикографическое упорядочение .
В основном, с учетом представлений 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).