Tutti i colori saranno sulla superficie del cubo RGB, a meno che non mi sbagli, per lo stesso motivo per cui tutta la carica elettrica appare sulla superficie dei conduttori elettrici. Questo suggerisce il seguente metodo per determinare i colori:
- interpretare lo spazio colore RGB come uno spazio cartesiano XYZ;
- interpretare i colori candidati come particelle cariche, ad esempio elettroni;
- trovare lo stato a bassa energia del sistema attraverso, ad esempio, ricottura simulata;
Per , una simulazione altamente accurata dovrebbe essere abbastanza rapida; potresti usare una tecnica di Runge Kutta, o anche il metodo di Euler con un piccolo passo potrebbe probabilmente farlo (molto più facile da implementare / capire). Potrei suggerire la serie "Ricette numeriche" per l'integrazione numerica / tecniche di quadratura di interesse.n∼15
Una volta che le particelle convergono, hai la disposizione dei colori interpretando i punti come colori. Inizialmente, le particelle possono essere disposte in modo casuale sulla superficie del cubo, con una piccola spaziatura (aiuta i problemi di convergenza e stabilità). Mettere piccoli gruppi sulle facce del cubo dovrebbe funzionare.
Per evitare di rimanere bloccati in un minimo locale (piuttosto che globale), è possibile "pulsare" un piccolo campo elettrico casuale dopo la convergenza e vedere se il sistema torna alla stessa configurazione o in uno diverso. È alquanto improbabile che particelle posizionate casualmente lo facciano in questo scenario, ma possibile.
MODIFICARE:
Come sottolineato nei commenti, il presupposto che le soluzioni ottimali dovrebbero trovarsi solo sulla superficie probabilmente non vale per tutte le geometrie nel caso discreto.
Fortunatamente, questo ha poco a che fare con il resto della tecnica sopra descritta. Le particelle possono essere inizialmente posizionate ovunque; basta lasciare un po 'di spazio tra le coppie di particelle per stabilità e coprenza, quindi iterare il sistema alla convergenza, quindi pulsare alcune volte (possibilmente con intensità crescente) per vedere se riesci a far convergere il sistema in una configurazione diversa (forse migliore) .
Inoltre, credo che questo metodo massimizzerà qualcosa come "(armonica?) Distanza media tra coppie di particelle". Se vuoi massimizzare la distanza minima tra le coppie di particelle, o qualche altra media (geometrica?) Tra le coppie di particelle, questo potrebbe non darti la soluzione migliore.
In ogni caso, credo che questa tecnica ti fornirà un modo semplice per trovare buoni set di colori approssimativamente ottimali ... Ottenere soluzioni "ottimali" reali non è probabilmente necessario per il tuo caso d'uso. Naturalmente, se si desidera una soluzione esatta e decisamente ottimale, la simulazione numerica non è probabilmente il modo migliore di procedere.