मान लिया जाये कि आप इस तरह से एक संरचना है:
typedef struct LabColor {
uint8_t L;
uint8_t a;
uint8_t b;
} LabColor;
और उनमें से 4 की एक सरणी:
LabColor colors[4];
getMeSomeColors (colors);
और वज़न:
float weights[4];
getMeSomeWeights (weights);
एक संभव सम्मिश्रण विधि यह होगी:
float LSum = 0.0;
float aSum = 0.0;
float bSum = 0.0;
float weightSum = 0.0;
for (int i = 0; i < 4; i++)
{
LSum += ((float)colors [ i ].L * weights [ i ]);
aSum += ((float)colors [ i ].a * weights [ i ]);
bSum += ((float)colors [ i ].b * weights [ i ]);
weightSum += weights[i];
}
LabColor result;
result.L = (uint8_t)(LSum/weightSum);
result.a = (uint8_t)((aSum/weightSum) + 127);
result.b = (uint8_t)((bSum/weightSum) + 127);
यह मानता है कि वजन 0 और 1 के बीच हैं। यदि नहीं, तो आपको कुछ क्लैंपिंग करना होगा। यदि वजन 1 तक है, तो आप विभाजन चरण को छोड़ सकते हैं।
अन्य तरीकों से रंग मिश्रण करने के लिए की एक अनंत संख्या में हैं। यदि यह वही नहीं करता जो आप चाहते हैं, तो आपको जो कुछ भी चाहिए, उसके बारे में अधिक विशिष्टता देना होगा।
आप इस मिश्रण को उत्पादन करने की क्या उम्मीद करते हैं? वजन घटाने के साथ आप 4 रंगों को घटक-दर-घटक के साथ औसत कर सकते हैं, और आपको वैध रंग मिलेंगे। लेकिन क्या वे आपके द्वारा अपेक्षित रंग होंगे या अधिक जानकारी के बिना कहना मुश्किल नहीं होगा। क्या आपने बस अपने संबंधित वजन से प्रत्येक को गुणा करने की कोशिश की है, फिर उन्हें घटक-वार और 4 से विभाजित कर रहे हैं? यदि वह आपको वह नहीं देता है जो आप उम्मीद करते हैं, तो क्या आप उम्मीद कर सकते हैं कि आप क्या उम्मीद करते हैं? यदि आप एक तस्वीर पोस्ट करते हैं, तो इससे मदद मिलेगी। – user1118321
क्या आपने प्रोग्रामिंग भाषा टैग का एक गुच्छा शामिल किया है, जितना संभव हो उतने संभावित दर्शक आकर्षित करने की उम्मीद है? – DavidO
@ डेविडो - मैंने उन प्रोग्रामिंग भाषा को शामिल किया जो मैं 10+ सालों से काम करता हूं। –