Un'idea che avevo in mente da un po 'è quella di generare colori il più diversi possibile (entro i limiti) per tutti i colori necessari. La seccatura extra è che se avessi bisogno di un paio di colori extra in seguito per lo stesso grafico (forse un paio di barre extra aggiunte), devono adattarsi allo stesso schema, mantenendo gli stessi colori esistenti.
L'idea che mi è venuta in mente è un trucco complicato. Immagina un cerchio di colori (forse ognuno ha una tonalità diversa con la stessa saturazione e luminosità, anche se puoi definire qualsiasi cerchio attraverso qualsiasi spazio colore). Invece di dare un angolo in gradi per quel cerchio, avere un intervallo da zero a 255. In binario, compreso tra 00000000 e 11111111. Aggiungi uno a un 8 bit 255 e torna a zero, quindi agisce naturalmente come un "valore circolare" (in termini tecnici, addizione e sottrazione è modulo 256).
Il trucco è quando selezioni il colore zero, il colore uno ecc. Per invertire i numeri. Per farlo in C, userei ...
value = ((value & 0x0F) << 4) | ((value & 0xF0) >> 4);
value = ((value & 0x33) << 2) | ((value & 0xCC) >> 2);
value = ((value & 0x55) << 1) | ((value & 0xAA) >> 1);
Quindi la sequenza 0, 1, 2, 3, 4 viene trasformata in 0, 128, 64, 192, 32.
Il punto è che hai 256 colori distinti e i primi sono molto distanziati, con i successivi che sono meno distanziati e riempiono gli spazi vuoti (64 è a metà strada tra 0 e 128, 32 è a metà strada tra 0 e 64 ecc.).
Qualsiasi larghezza di bit per un particolare "angolo" funzionerà se si adatta il bit-reverse e, naturalmente, è possibile eseguire più cicli contemporaneamente per diversi parametri del colore (forse la tonalità gira rapidamente, ma la saturazione gira più lentamente).
Questo lascia solo la domanda su come mappare i tuoi "angoli" su particolari numeri RGB o altro, di cui non sono esperto - oh, e la domanda se ActionScript supporta i bit-fiddling.