2011-01-20 19 views
6

के बीच एक रंग का प्रतिशत मान ज्ञात सबसे अच्छा तरीका क्या दिए गए दो मूल्यों के बीच एक रंग का प्रतिशत मूल्य निर्धारित करने के लिए है। दूसरे शब्दों में, रंग सी की% स्थिति की गणना करने का सबसे अच्छा तरीका क्या है?दो ज्ञात रंग

रंग एक - 0x0000FF रंग बी - 0x00CCFF रंग सी - 0x00FFFF

धन्यवाद!

+0

वहाँ भी इस है: https://code.google.com/p/mojocolors/ – Daniel

उत्तर

6

अच्छी तरह से यह है कि सीधे आगे नहीं है, क्योंकि यह है कि कैसे आप रंग quantize करने का फैसला पर निर्भर करता है।

आप HSB, जो मेरी राय में अधिक सही तरीका क्या है (हालांकि जरूरी नहीं एक तथ्य है) या बस हेक्स मान का उपयोग के माध्यम से यह कर सकता है।

तेज शायद यह hax का उपयोग कर को महत्व देता है क्या करना है

var colour:uint = 0x9900CC; 
var r:uint = colour >> 16; 
var g:uint = colour >> 8 & 0xFF; 
var b:uint = colour & 0xFF; 

.इस आप प्रत्येक चैनल (ग) (एबीसी रंग किया जा रहा है)

तो प्रत्येक के लिए गणित का मूल्य दे देंगे चैनल (ग)

(cB - cA)/(cC - cA) 

तो एक बार आप इन chanels में से प्रत्येक के लिए, आप उन्हें एक साथ 3.

से जोड़ सकते हैं और विभाजित कर सकते हैं

एक समस्या हालांकि वहाँ है, अगर रंग ए और सी कभी भी किसी भी चैनल के लिए ही कर रहे हैं, तो आप अपवाद (क्योंकि सीसी और सीए शून्य कर रहे हैं और आप शून्य से विभाजित नहीं कर सकते हैं) को जोड़ने के लिए, उस समय आप भी जरूरत पर की जरूरत है यह तय करने के लिए कि उस अंतर को कैसे संभालें।

+0

धन्यवाद डैनियल में देख लायक हो सकता है, यह पूरी तरह से काम किया। – Andrei

+1

मैं निश्चित रूप से एचएसएल, एचएसएल, या अन्य बेलनाकार रंग प्रणालियों में से एक का उपयोग करके भी कोशिश करता हूं। आपके आवेदन के आधार पर, आप बेहतर (या अधिक सार्थक) परिणाम प्राप्त कर सकते हैं। – mpdonadio

+0

फिर भी मुझे आश्चर्य है कि क्या एक मामले के बीच अलग है, गणितीय अंतर अनंत है, जहां दो नंबर में एक ही और और संख्या में हैं से निपटने का सबसे उपयुक्त तरीका। यह एचएसवी (एचएसबी, एचएसएल) से निपटने के साथ भी वही होगा – Daniel

संबंधित मुद्दे