एक विचार जो मैंने कुछ समय के लिए ध्यान में रखा है, वह है विभिन्न रंगों के लिए अलग-अलग-से-संभव (सीमा के भीतर) रंगों को उत्पन्न करने के लिए। अतिरिक्त परेशानी अगर मुझे एक ही चार्ट के लिए बाद में रंगों की एक अतिरिक्त जोड़ी की आवश्यकता होती है (शायद अतिरिक्त बार जोड़े जा रहे हैं), तो उन्हें उसी योजना में फिट होने की आवश्यकता है, जो मौजूदा रंगों को समान रखते हैं।
मैं जिस विचार के साथ आया था, वह एक कठिन-सी चाल है। रंगों के एक चक्र की कल्पना करें (हो सकता है कि प्रत्येक समान संतृप्ति और चमक के साथ एक अलग रंग हो, हालांकि आप किसी भी रंगक्षेत्र के माध्यम से किसी भी चक्र को परिभाषित कर सकते हैं)। उस सर्कल के लिए डिग्री में एक कोण देने के बजाय, एक सीमा शून्य से 255 है। बाइनरी में, कि 00000000 से 11111111 है। एक को 8 बिट 255 में जोड़ें और यह शून्य पर वापस आ जाता है, इसलिए यह स्वाभाविक रूप से "परिपत्र मान" के रूप में कार्य करता है (तकनीकी शब्दों में, जोड़ और घटाव modulo 256 है)।
चाल जब आप रंग शून्य, रंग एक आदि का चयन करते हैं, तो उन नंबरों को बिट-रिवर्स करने के लिए। सी में ऐसा करने के लिए, मैं उपयोग करूँगा ...
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 आदि)।
किसी विशेष "कोण" के लिए कोई भी बिट-चौड़ाई काम करेगा यदि आप बिट-रिवर्स को अनुकूलित करते हैं, और निश्चित रूप से आप रंग के विभिन्न मापदंडों के लिए एक ही बार में कई चक्र चला सकते हैं (शायद जल्दी से घूमता है, लेकिन संतृप्ति अधिक धीरे-धीरे घूमती है)।
यह केवल इस सवाल को छोड़ देता है कि आप अपने "एंगल्स" को विशेष रूप से आरजीबी नंबरों या जो भी हो, जो कि मैं कोई विशेषज्ञ नहीं हूं, ओह पर और एक्शनस्क्रिप्ट बिट-फ़िडलिंग का समर्थन करता है या नहीं का सवाल छोड़ देता है।