जवाबों:
आधार सूत्र है:
Result := ((Input - InputLow) / (InputHigh - InputLow))
* (OutputHigh - OutputLow) + OutputLow;
आपका मुकदमा:
परिणाम: = (( इनपुट - -1 ) / ( 1 - -1 ) * ( 255 - 0 ) + 0 ;
यहां से आप रूपांतरण का अनुकूलन कर सकते हैं यदि आपके गुणांक स्थिर हैं, लेकिन संकलक संभवतः इसे स्वयं भी करेंगे।
परिणाम: = (( इनपुट - -1 ) / 2 ) * 255 + 0 ;
परिणाम: = इनपुट * 127.5 + 127.5 ;
स्केलिंग और पूर्वाग्रह की शक्ति के माध्यम से।
अपने मूल्य से, अपनी सीमा के न्यूनतम मूल्य को घटाएं। यह आपको [0..2] रेंज में एक मूल्य देगा।
विभाजित करें कि स्रोत रेंज की चौड़ाई से, आपको रेंज में एक मान दिया जाता है [0..1]।
गुणा करें कि लक्ष्य सीमा की चौड़ाई से, आपको सीमा में एक मान दिया जाता है [0..255]।
लक्ष्य श्रेणी में मान प्राप्त करने के लिए लक्ष्य श्रेणी के आधार को जोड़ें, जो इस स्थिति के लिए पिछले चरण के समान है।
संक्षेप में:
(v - (-1.0))
v' = 0 + ---------------- * (255 - 0)
(1.0 - (-1.0))
oldRange = oldMax - oldMin
newRange = newMax - newMin
newValue = ((oldValue - oldMin) * newRange / oldRange) + newMin
उम्मीद है की यह मदद करेगा।
इनपुट रेंज का अनुवाद करें ताकि हम 1 (मिनट इनपुट का ऋणात्मक मान) जोड़कर शून्य प्राप्त करें - 1 - 1 -> 0 .. 2
जैसा कि आउटपुट रेंज शून्य से शुरू होता है, उसके लिए कुछ भी न करें।
नई इनपुट रेंज को स्केल करें ताकि यह आउटपुट रेंज को फिट करे, यह आसान है क्योंकि अब वे दोनों शून्य से शुरू होते हैं: मान 255/2 0..2 * 2/255 -> 0..255 से गुणा करें
किया हुआ!
उदाहरण:
0.5 जाएगी: (0.5 + 1) * 127.5 = 191.25 -0.5 जाएगी: (-0.5 + 1) * 127.5 = 63.75
कहते हैं x
कि मूल इनपुट है और y
अपेक्षित आउटपुट है। हमारे पास कम से कम दो बिंदु हैं
(x, y) (-1, 0) (1, 255)
चूँकि हम एक रेखीय प्रक्षेप करना चाहते हैं जो हम प्रपत्र के समीकरण में देख सकते हैं
y = m*x + c
उपरोक्त दो बिंदुओं के साथ, हम हल कर सकते हैं m
औरc
एक बार यह हो जाने पर, आपको परिवर्तन समीकरण मिल जाएगा।
ध्यान दें कि यह विधि अन्य प्रकार के समीकरणों के लिए भी काम करती है। उदाहरण के लिए यदि आप एक घातीय या द्विघात प्रक्षेप चाहते हैं।
v = (1-a)*x + (a)*y
:। मैं यह नहीं देखता कि इस उत्तर में पूछे गए प्रश्न की कितनी प्रासंगिकता है क्योंकि वह जो चाहता है वह एक रेंज मैपिंग है।