Я ищу простой алгоритм для генерации большого количества случайных, эстетически приятных цветов. Так что без сумасшедших неоновых цветов, цветов, напоминающих фекалии и т. Д.
Я нашел решение этой проблемы, но они полагаются на альтернативные цветовые палитры, чем RGB. Я бы предпочел просто использовать прямой RGB, а не отображать туда-сюда. Эти другие решения также могут генерировать не более 32 приятных случайных цветов.
Любые идеи будут великолепны.
Ответы:
Вы можете усреднить значения RGB случайных цветов со значениями постоянного цвета:
(пример на Java)
Смешивание случайных цветов с белым (255, 255, 255) создает нейтральные пастели за счет увеличения яркости при сохранении оттенка исходного цвета. Эти случайно сгенерированные пастели обычно хорошо сочетаются друг с другом, особенно в большом количестве.
Вот некоторые пастельные цвета, сгенерированные с использованием вышеуказанного метода:
Вы также можете смешать случайный цвет с постоянной пастелью, что приведет к тонированному набору нейтральных цветов. Например, использование светло-голубого создает цвета, подобные этим:
Если пойти дальше, вы можете добавить в свой генератор эвристику, учитывающую дополнительные цвета или уровни затенения, но все зависит от того, какое впечатление вы хотите получить от случайных цветов.
Некоторые дополнительные ресурсы:
источник
Я бы использовал цветовой круг и, учитывая случайную позицию, вы могли бы добавить золотой угол (137,5 градусов)
http://en.wikipedia.org/wiki/Golden_angle
чтобы каждый раз получать разные цвета, которые не перекрываются.
Регулируя яркость цветового круга, вы также можете получить различные комбинации ярких и темных цветов.
Я нашел этот пост, который очень хорошо объясняет проблему и решение с использованием золотого сечения.
http://martin.ankerl.com/2009/12/09/how-to-create-random-colors-programmatically/
ОБНОВЛЕНИЕ: я только что нашел этот другой подход:
Он называется RYB (красный, желтый, синий) и описан в этой статье:
http://threekings.tk/mirror/ryb_TR.pdf
как "Paint Inspired Color Compositing".
Алгоритм генерирует цвета, и каждый новый цвет выбирается так, чтобы максимизировать его евклидово расстояние до ранее выбранных.
Здесь вы можете найти хорошую реализацию в javascript:
http://afriggeri.github.com/RYB/
ОБНОВЛЕНИЕ 2:
Наука Po Medialb только что выпустила инструмент под названием «Я хочу Hue», который генерирует цветовые палитры для ученых данных. Использование различных цветовых пространств и создание палитр с помощью кластеризации k-средних или векторов силы (графики отталкивания) Результаты этих методов очень хорошие, они показывают теорию и реализацию на своей веб-странице.
http://tools.medialab.sciences-po.fr/iwanthue/index.php
источник
В JavaScript:
Увидел идею здесь: http://blog.functionalfun.net/2008/07/random-pastel-colour-generator.html
источник
Преобразование в другую палитру - намного лучший способ сделать это. Есть причина, по которой они это делают: другие палитры «перцептивны», то есть они помещают похожие кажущиеся цвета близко друг к другу, а настройка одной переменной изменяет цвет предсказуемым образом. Ничто из этого не относится к RGB, где нет очевидной связи между цветами, которые «хорошо сочетаются друг с другом».
источник
Я успешно использовал TriadMixing и CIE94, чтобы избежать подобных цветов. На следующем изображении используются входные цвета: красный, желтый и белый. Смотрите здесь .
источник
Ответ, который не следует упускать из виду, поскольку он прост и дает преимущества, - это выборка реальных фотографий и картин. Сэмплируйте столько произвольных пикселей, сколько вы хотите, чтобы случайные цвета отображались на миниатюрах современных художественных фотографий: Сезанн, Ван Гог, Моне, фотографии ... Преимущество заключается в том, что вы можете получать цвета по темам, и они являются органическими цветами. просто поместите 20 - 30 фото в папку и случайный образец каждый раз.
Преобразование в значения HSV является широко распространенным алгоритмом кода для психологически обоснованной палитры. HSV легче рандомизировать.
источник
В php:
источник: https://stackoverflow.com/a/12266311/2875783
источник
Вот быстрый и грязный генератор цветов в C # (используя «подход RYB», описанный в этой статье ). Это переписать с JavaScript .
Использование:
Первые два цвета имеют тенденцию быть белым и оттенком черного. Я часто пропускаю их так (используя Linq):
Реализация:
источник
Метод Дэвида Кроу в двухслойном R:
источник
Для пастели передайте более высокие светлые темные / светлые целые числа - т.е. fnGetRandomColour (120, 250)
Кредиты: все кредиты http://paulirish.com/2009/random-hex-color-code-snippets/ stackoverflow.com/questions/12043187/how-to-check-if-hex-color-is-too-black
источник
Адаптация JavaScript оригинального ответа Дэвида Кроу, включая IE и специфический код Nodejs.
Запустите функцию, используя:
источник
Используйте отличные цвета .
Написано в javascript.
Генерирует палитру визуально отличных цветов.
Отдельные цвета легко настраиваются:
источник
Вы могли бы иметь их в пределах определенной яркости. это немного контролирует количество «неоновых» цветов. например, если «яркость»
был в пределах определенной границы, он имел бы размытый, светлый цвет. И наоборот, если бы он находился в пределах определенной нижней границы, он был бы темнее. Это исключит любые сумасшедшие, выдающиеся цвета, и если вы выберете границу, очень высокую или очень низкую, все они будут достаточно близки к белому или черному.
источник
Будет сложно получить то, что вы хотите алгоритмически - люди давно изучают теорию цвета и даже не знают всех правил.
Тем не менее, есть некоторые правила, которые вы можете использовать для отбраковки плохих цветовых комбинаций (то есть есть правила для столкновения цветов и выбора дополнительных цветов).
Я бы порекомендовал вам посетить художественный раздел вашей библиотеки и проверить книги по теории цвета, чтобы лучше понять, что такое хороший цвет, прежде чем пытаться его создать - кажется, вы можете даже не знать, почему одни комбинации работают, а другие - нет. т.
-Адам
источник
Я настоятельно рекомендую использовать функцию шейдера CG HSVtoRGB, они потрясающие ... они дают вам естественное управление цветом, как у художника, а не как у монитора с ЭЛТ, что, по-видимому, не так!
Это способ сделать 1 значение с плавающей запятой. то есть серый, в 1000 ds комбинаций цвета и яркости и насыщенности и т. д .:
Результат - УДИВИТЕЛЬНАЯ ЦВЕТНАЯ РАНДОМИЗАЦИЯ! это не естественно, но использует естественные цветовые градиенты и выглядит органично и контролирует переливающиеся / пастельные параметры.
Для Perlin, вы можете использовать эту функцию, это быстрый зигзаг версия Perlin.
источник
Вот что я написал для сайта, который я сделал. Это автоматически сгенерирует случайный плоский цвет фона для любого div с классом
.flat-color-gen
. Jquery требуется только для добавления CSS на страницу; это не требуется для основной части этого, который являетсяgenerateFlatColorWithOrder()
методом.JsFiddle Link
источник