العثور على نطاق الألوان
سؤال
أريد أن أجد مجموعة من الألوان من قيمة قيمة RGB واحدة
إذا تم إعطائي RGB (0،100،200) على سبيل المثال ، فسوف يعطيني كل شيء بين RGB (0،0،255) و RGB (0،255،255). ومع ذلك ليس RGB (255،0،255).
بالمثل RGB (150،50،0). العودة: RGB (255،0،0) و RGB (255،255،0). ليس RGB (255،0،255).
منطقي؟
أنا أستخدم PHP
المحلول
الخوارزمية التي تشرحها هي بشكل أساسي: "يتكون اللون من مكونين من RGB. دع مكون RGB الأقوى هو S والمكون الآخر O. إنشاء 255 اختلافات حيث تدع S (255) و O تتراوح من 0 إلى 255."
على سبيل المثال كل المثال أدناه ، يعطي نفس النتيجة:
a) rgb(0,100,200)
b) rgb(0,199,200)
c) rgb(0,254,255)
d) rgb(0,1,2)
Result: rgb(0,[0-255],255)
هذا يعني أن لديك فقط 6 اختلافات.
- الأحمر هو أكبر مكون ، الأخضر التالي الأكبر => RGB (255 ، [0-255] ، 0)
- الأحمر هو أكبر مكون ، الأزرق التالي الأكبر => RGB (255،0 ، [0-255])
- Green هو أكبر مكون ، باللون الأحمر التالي الأكبر => RGB ([0-255] ، 255،0)
- الأخضر هو أكبر مكون ، الأزرق التالي الأكبر => RGB ([0-255] ، 0،255)
- الأزرق هو أكبر مكون ، أحمر التالي الأكبر => RGB ([0-255] ، 0،255)
- Blue هو أكبر مكون ، الأخضر التالي الأكبر => RGB (0 ، [0-255] ، 255)
إن نية الخوارزمية الخاصة بك ليست واضحة ، لذلك أعتقد أن حالة الاستخدام الخاصة بك تختلف في الواقع عما تشرحه. لا يتعامل مع الألوان مع مكونات واحدة أو 3 (معظم الألوان في الواقع).
إذا كان هدفك هو العثور على ألوان مماثلة (مثل اللون في مسافة معينة) ، فهناك طرق أفضل. على سبيل المثال ، يمكنك تحويل الألوان الخاصة بك إلى مساحة ألوان HSV (Hue ، التشبع ، القيمة) ، ثم قل أن اللون متشابه إذا كان أي من المكونات H أو S أو V هي +/- 10 خطوات من الأصل.
على سبيل المثال:
RGB (255،100،0) => HSV (24،100،100)
ثم هو HSV ([14-34] ، [90-110] ، [90-110])
نصائح أخرى
HM ، لست متأكدًا من أنني أفهم ذلك بشكل صحيح ، لكنني أعتقد أنك تقول أن أحد الأرقام أعلى من الاثنين الآخرين ، وواحدة من القيم دائمًا صفر. إذا كان هذا هو الحال ، فيجب أن تكون قادرًا على استخدام عبارة بسيطة if-else مشابهة لـ
if (r > g && r > b) {
if (g > 0) {
color1 = rgb(255, 0, 0);
color2 = rgb(255, 255, 0);
}
else {
color1 = rgb(255, 0, 0);
color2 = rgb(255, 0, 255);
}
}
else if (r < g && g > b) {
.
.
.
}
آمل أن يساعدك ذلك في مشكلتك.