Здравствуйте.
Есть массив цветов типа цвет. Знаю, что у цвета есть хар-ки RGB.
Есть ли какая-нибудь функция, которая бы упорядочивала (сортировала) автоматически произвольный набор цветов (например все веб.цвета) как в радуге?
То есть, чтобы близкие по цвету цвета были рядом?
---
Решение в гугле есть - конвертировать RGB в HSL, затем из HSL собрать некоторый ключ для сортировки, например так H*256*256+S*256+L

Математика: http://www.rapidtables.com/convert/color/rgb-to-hsl.htm

Код на C http://stackoverflow.com/questions/2353211/hsl-to-rgb-color-conversion

```1c
    /**
    * Converts an RGB color value to HSL. Conversion formula
    * adapted from http://en.wikipedia.org/wiki/HSL_color_space.
    * Assumes r, g, and b are contained in the set [0, 255] and
    * returns h, s, and l in the set [0, 1].
    *
    * @param {number} r The red color value
    * @param {number} g The green color value
    * @param {number} b The blue color value
    * @return {Array} The HSL representation
    */
    function rgbToHsl(r, g, b){
    r /= 255, g /= 255, b /= 255;
    var max = Math.max(r, g, b), min = Math.min(r, g, b);
    var h, s, l = (max + min) / 2;

    if(max == min){
    h = s = 0; // achromatic
    }else{
    var d = max - min;
    s = l > 0.5 ? d / (2 - max - min) : d / (max + min);
    switch(max){
    case r: h = (g - b) / d + (g < b ? 6 : 0); break;
    case g: h = (b - r) / d + 2; break;
    case b: h = (r - g) / d + 4; break;
    }
    h /= 6;
    }

    return [h, s, l];
    }
```
---
Посмотрите на любой диалог выбора произвольного цвета, в графических редакторах и т.д. Вы поймете, что все диалоги двумерные или трёхмерные. На линейное пространство, разве что яндекс пытался цвета отложить. И то у него не получилось.
---
Ясно. Спасибо. Придется "руками" веб.цвета сортировать.
---
Зачем так? Попытайтесь придумать алгоритм, который разложит цвета в спектр "КОЖЗГСФ", реализуйте его и выложите здесь. Исходную точку Вы сами назвали: для любого цвета можно получить его составляющие R,G,B.
---
Решение в гугле есть - конвертировать RGB в HSL, затем из HSL собрать некоторый ключ для сортировки, например так H*256*256+S*256+L

Математика: http://www.rapidtables.com/convert/color/rgb-to-hsl.htm

Код на C http://stackoverflow.com/questions/2353211/hsl-to-rgb-color-conversion

```1c
    /**
    * Converts an RGB color value to HSL. Conversion formula
    * adapted from http://en.wikipedia.org/wiki/HSL_color_space.
    * Assumes r, g, and b are contained in the set [0, 255] and
    * returns h, s, and l in the set [0, 1].
    *
    * @param {number} r The red color value
    * @param {number} g The green color value
    * @param {number} b The blue color value
    * @return {Array} The HSL representation
    */
    function rgbToHsl(r, g, b){
    r /= 255, g /= 255, b /= 255;
    var max = Math.max(r, g, b), min = Math.min(r, g, b);
    var h, s, l = (max + min) / 2;

    if(max == min){
    h = s = 0; // achromatic
    }else{
    var d = max - min;
    s = l > 0.5 ? d / (2 - max - min) : d / (max + min);
    switch(max){
    case r: h = (g - b) / d + (g < b ? 6 : 0); break;
    case g: h = (b - r) / d + 2; break;
    case b: h = (r - g) / d + 4; break;
    }
    h /= 6;
    }

    return [h, s, l];
    }
```
---
Во во!
Именно что-то такое и думал.
Спасибо.
Время будет - попробую.