Sebuah ide yang ada dalam pikiran saya untuk sementara waktu adalah untuk menghasilkan warna (dalam batas) sebanyak mungkin untuk warna sebanyak yang diperlukan. Kerumitan tambahannya adalah jika saya membutuhkan beberapa warna tambahan nanti untuk grafik yang sama (mungkin beberapa bar tambahan ditambahkan), mereka perlu masuk ke dalam skema yang sama, menjaga warna yang ada tetap sama.
Gagasan yang saya buat adalah trik yang agak rumit. Bayangkan sebuah lingkaran warna (mungkin masing-masing rona berbeda dengan saturasi dan kecerahan yang sama, meskipun Anda bisa mendefinisikan lingkaran apa pun melalui ruang warna apa pun). Alih-alih memberikan sudut dalam derajat untuk lingkaran itu, miliki rentang nol hingga 255. Dalam biner, itu 00000000 hingga 11111111. Tambahkan satu ke 8 bit 255 dan itu meluap kembali ke nol, sehingga ia bertindak secara alami sebagai "nilai melingkar" (dalam istilah teknis, penambahan dan pengurangan adalah modulo 256).
Caranya adalah ketika Anda memilih warna nol, warna satu dll, untuk sedikit-membalikkan angka-angka itu. Untuk melakukannya di C, saya akan menggunakan ...
value = ((value & 0x0F) << 4) | ((value & 0xF0) >> 4);
value = ((value & 0x33) << 2) | ((value & 0xCC) >> 2);
value = ((value & 0x55) << 1) | ((value & 0xAA) >> 1);
Jadi urutan 0, 1, 2, 3, 4 ditransformasikan menjadi 0, 128, 64, 192, 32.
Intinya adalah bahwa Anda memiliki 256 warna yang berbeda, dan yang paling awal sangat banyak spasi, dengan yang kemudian semakin kurang lebar dan mengisi celah (64 adalah setengah jalan antara 0 dan 128, 32 adalah setengah jalan antara 0 dan 64 dll).
Lebar bit apa pun untuk "sudut" tertentu akan berfungsi jika Anda mengadaptasi bit-reverse, dan tentu saja Anda dapat menjalankan beberapa siklus sekaligus untuk parameter warna yang berbeda (mungkin rona berputar cepat, tetapi saturasi berputar lebih lambat).
Itu hanya meninggalkan pertanyaan tentang bagaimana Anda memetakan "sudut" Anda ke nomor RGB tertentu atau apa pun, yang saya tidak ahli di - oh, dan pertanyaan apakah ActionScript mendukung bit-fiddling.