ความคิดที่ฉันมีอยู่ในใจเป็นระยะเวลาหนึ่งคือการสร้างสีที่แตกต่างกันเท่าที่จะทำได้ (ภายในขีด จำกัด ) สำหรับสีได้มากเท่าที่ต้องการ ความยุ่งยากเป็นพิเศษหากฉันต้องการสีเพิ่มเติมสองสามอันในภายหลังสำหรับแผนภูมิเดียวกัน (อาจเพิ่มแท่งพิเศษสองสามอัน) พวกเขาจำเป็นต้องปรับให้เข้ากับรูปแบบเดียวกันทำให้สีที่มีอยู่เดิมเหมือนกัน
ความคิดที่ฉันคิดขึ้นมาเป็นเคล็ดลับที่เล่นซอ ลองจินตนาการถึงวงกลมของสี (อาจเป็นสีที่ต่างกันโดยมีความอิ่มตัวและความสว่างเท่ากัน แต่คุณสามารถกำหนดวงกลมใด ๆ ผ่าน colourspace ใดก็ได้) แทนที่จะให้มุมเป็นองศาสำหรับวงกลมนั้นให้มีช่วงศูนย์ถึง 255 ในเลขฐานสองนั่นคือ 00000000 ถึง 11111111 เพิ่มหนึ่งใน 8 บิต 255 และมันล้นกลับเป็นศูนย์ดังนั้นมันจึงทำหน้าที่เป็น "ค่าวงกลม" โดยธรรมชาติ (ในด้านเทคนิคการบวกและการลบคือโมดูโล 256)
เคล็ดลับคือเมื่อคุณเลือกศูนย์สี, สีหนึ่ง ฯลฯ เพื่อบิตย้อนกลับตัวเลขเหล่านั้น ในการทำเช่นนั้นใน C ฉันจะใช้ ...
value = ((value & 0x0F) << 4) | ((value & 0xF0) >> 4);
value = ((value & 0x33) << 2) | ((value & 0xCC) >> 2);
value = ((value & 0x55) << 1) | ((value & 0xAA) >> 1);
ดังนั้นลำดับ 0, 1, 2, 3, 4 จึงถูกแปลงเป็น 0, 128, 64, 192, 32
ประเด็นก็คือคุณมี 256 สีที่แตกต่างกันและสีที่เก่าที่สุดจะถูกเว้นระยะห่างกันมากโดยที่สีที่ใหม่กว่านั้นจะถูกเว้นระยะห่างกันน้อยมากและเติมในช่องว่าง (64 คือครึ่งทางระหว่าง 0 และ 128, 32 คือครึ่งทาง ระหว่าง 0 ถึง 64 และอื่น ๆ )
ความกว้างบิตใด ๆ สำหรับ "มุม" ที่เฉพาะเจาะจงจะใช้งานได้หากคุณปรับบิตกลับด้านและแน่นอนว่าคุณสามารถเรียกใช้หลาย ๆ รอบในคราวเดียวสำหรับพารามิเตอร์ที่แตกต่างกันของสี (อาจจะเว้หมุนเร็ว แต่ความอิ่มตัวหมุนช้ากว่า)
นั่นทำให้คำถามของวิธีที่คุณแมป "มุม" ของคุณไปยังหมายเลขเฉพาะ RGB หรืออะไรก็ตามที่ฉันไม่มีความเชี่ยวชาญ - โอ้และคำถามที่ว่า ActionScript รองรับการเล่นบิตฟิลลิ่งหรือไม่