Algoritmus náhodného generování esteticky příjemné palety barev

Algorithm Randomly Generate An Aesthetically Pleasing Color Palette



Řešení:

Hodnoty RGB náhodných barev byste mohli průměrovat hodnotami konstantní barvy:

(příklad v Javě)



public Color generateRandomColor (Color mix) {Random random = new Random (); int červená = random.nextInt (256); int zelená = random.nextInt (256); int modrá = random.nextInt (256); // míchat barvu if (mix! = null) {red = (red + mix.getRed ()) / 2; zelená = (zelená + mix.getGreen ()) / 2; modrá = (modrá + mix.getBlue ()) / 2; } Barva barvy = nová Barva (červená, zelená, modrá); vrátit barvu; }


Míchání náhodných barev s bílou (255, 255, 255) vytváří neutrální pastely zvýšením světlosti při zachování odstínu původní barvy. Tyto náhodně generované pastely obvykle dobře ladí, zejména ve velkém počtu.



Zde jsou některé pastelové barvy generované výše uvedenou metodou:



za prvé


Můžete také míchat náhodné barvy s konstantním pastelem, což má za následek tónovanou sadu neutrálních barev. Například použitím světle modré barvy se vytvoří tyto barvy:

Druhý




Když půjdete dále, můžete do svého generátoru přidat heuristiku, která zohlední doplňkové barvy nebo úrovně stínování, ale vše závisí na dojmu, kterého chcete svými náhodnými barvami dosáhnout.

Některé další zdroje:

  • http://en.wikipedia.org/wiki/Color_theory
  • http://en.wikipedia.org/wiki/Complementary_color

Použil bych barevné kolečko a vzhledem k náhodné poloze byste mohli přidat zlatý úhel (137,5 stupňů)

http://en.wikipedia.org/wiki/Golden_angle

za účelem získání různých barev pokaždé, když se nepřekrývají.

Úpravou jasu pro barevné kolečko můžete získat také různé kombinace jasných/tmavých barev.

Našel jsem tento blogový příspěvek, který opravdu dobře vysvětluje problém a řešení pomocí zlatého řezu.

http://martin.ankerl.com/2009/12/09/how-to-create-random-colors-programmatically/

AKTUALIZACE: Právě jsem našel tento další přístup:

Říká se tomu metoda RYB (červená, žlutá, modrá) a je popsána v tomto článku:

http://threekings.tk/mirror/ryb_TR.pdf

jako „Skládání barev inspirované barvou“.

Algoritmus generuje barvy a každá nová barva je vybrána tak, aby maximalizovala svou euklidovskou vzdálenost k dříve vybraným.

Zde můžete najít dobrou implementaci v JavaScriptu:

http://afriggeri.github.com/RYB/

AKTUALIZACE 2:

Vědy Po Medialb právě vydaly nástroj nazvaný 'I want Hue', který generuje barevné palety pro datové vědce. Použití různých barevných prostorů a generování palet pomocí k-means klastrování nebo silových vektorů (odpuzovací grafy) Výsledky z těchto metod jsou velmi dobré, ukazují na své webové stránce teorii a implementaci.

http://tools.medialab.sciences-po.fr/iwanthue/index.php


V javascriptu:

funkce pastelColors () {var r = (Math.round (Math.random ()* 127) + 127) .toString (16); var g = (Math.round (Math.random ()* 127) + 127) .toString (16); var b = (Math.round (Math.random ()* 127) + 127) .toString (16); vrátit '#' + r + g + b; }

Tu myšlenku jsem viděl zde: http://blog.functionalfun.net/2008/07/random-pastel-colour-generator.html