Một ý tưởng tôi đã có trong một thời gian là tạo ra các màu càng khác nhau càng tốt (trong giới hạn) cho càng nhiều màu càng cần thiết. Rắc rối thêm là nếu tôi cần thêm một vài màu sau cho cùng một biểu đồ (có thể thêm một vài thanh bổ sung), chúng cần phải phù hợp với cùng một sơ đồ, giữ nguyên các màu hiện có.
Ý tưởng tôi nghĩ ra là một mẹo nhỏ. Tưởng tượng một vòng tròn màu sắc (có thể mỗi màu là một màu khác nhau với cùng độ bão hòa và độ sáng, mặc dù bạn có thể xác định bất kỳ vòng tròn nào qua bất kỳ không gian màu nào). Thay vì đưa một góc theo độ cho vòng tròn đó, có phạm vi từ 0 đến 255. Trong nhị phân, đó là 00000000 đến 11111111. Thêm một vào 8 bit 255 và nó tràn về 0, do đó, nó hoạt động tự nhiên như một "giá trị tròn" (về mặt kỹ thuật, phép cộng và phép trừ là modulo 256).
Mẹo nhỏ là khi bạn chọn màu 0, màu một, v.v., để đảo ngược các số đó. Để làm điều đó trong C, tôi sẽ sử dụng ...
value = ((value & 0x0F) << 4) | ((value & 0xF0) >> 4);
value = ((value & 0x33) << 2) | ((value & 0xCC) >> 2);
value = ((value & 0x55) << 1) | ((value & 0xAA) >> 1);
Vì vậy, chuỗi 0, 1, 2, 3, 4 được chuyển thành 0, 128, 64, 192, 32.
Vấn đề là bạn có 256 màu riêng biệt, và những màu đầu tiên được phân chia rất rộng rãi, với những màu sau được phân tách ít hơn và điền vào các khoảng trống (64 là một nửa giữa 0 và 128, 32 là một nửa từ 0 đến 64, v.v.).
Bất kỳ độ rộng bit nào cho một "góc" cụ thể sẽ hoạt động nếu bạn điều chỉnh đảo ngược bit và tất nhiên bạn có thể chạy nhiều chu kỳ cùng một lúc cho các thông số khác nhau của màu sắc (có thể là màu sắc quay nhanh, nhưng độ bão hòa quay chậm hơn).
Điều đó chỉ để lại câu hỏi về cách bạn ánh xạ "các góc" của mình với các số RGB cụ thể hoặc bất cứ điều gì, mà tôi không phải là chuyên gia - ồ, và câu hỏi liệu ActionScript có hỗ trợ tính năng bit không.