ماذا يعني هذا اللون غامضة طريقة عمله ؟ ما هو المقابل ؟

StackOverflow https://stackoverflow.com/questions/589145

  •  09-09-2019
  •  | 
  •  

سؤال

ربما كان لدي الكثير من القهوة ، ربما كنت أعمل منذ فترة طويلة جدا ، بغض النظر أنا في حيرة ما هذا الأسلوب, أو بالأحرى لماذا و كيف يفعل ذلك, يمكن لأي شخص أن يلقي بعض الضوء على لي ؟ ما هو nextColor?

public Color nextColor() {
   int max = 0, min = 1000000000, cr = 0, cg = 0, cb = 0;
   for (int r = 0; r < 256; r += 4) {
      for (int g = 0; g < 256; g += 4) {
         for (int b = 0; b < 256; b += 4) {
            if (r + g + b < 256 || r + g + b > 512) {
               continue;
            }
            min = 1000000000;
            for (Color c : colorTable) {
               int dred   = r - c.getRed();
               int dgreen = g - c.getGreen();
               int dblue  = b - c.getBlue();
               int dif = dred * dred + dgreen * dgreen + dblue * dblue;
               if (min > dif) {
                  min = dif;
               }
            }
            if (max < min) {
               max = min;
               cr  = r;
               cg  = g;
               cb  = b;
            }
         }
      }
   }

   return new Color(cr, cg, cb, 0x90);
}

التحديث

شكرا لردود الجميع.ابحث في سياق الأسلوب داخل البرنامج فمن الواضح أن القصد منها كان في الواقع إلى العودة لون جديد هو "أبعد" من مجموعة من الألوان الموجودة.

شكرا Sparr على طرح متابعة على هذا السؤال, أنا سوف بالتأكيد كتابة أعلاه مع تقديم المشورة الخاصة بك في الاعتبار.

أنا لست ضليعا جدا في لون RGB نطاق واسع.معرفة القصد من فوق طريقة لاسترداد "مجانية ؟" الألوان الموجودة في مجموعة من الألوان ، قدمت الحل في 1 في الواقع تكون مجانية بمعنى كيف نتصور اللون ؟ هل هناك أبسط طريقة لاختيار اللون الذي سوف تكمل مجموعة ، أو التحليل العددي RGB مكونات الواقع العائد المناسب اللون ؟

هل كانت مفيدة؟

المحلول

النظر في القضية التي يكون فيها الصلبة الزائفة - الصلبة التي تحددها النقاط في Colardable لها "جوفاء" كبيرة في الداخل، بحيث يختار NextColor النقطة الموجودة في وسط تلك المجوفة باسم NextColor. اعتمادا على ما تعرفه عن المتقلب، قد تكون هذه الحالة نادرة للغاية. إذا كان من المتوقع أن تكون نادرا بما فيه الكفاية، وأنت على استعداد لقبول حل أقل من الأمثل (على افتراض أننا نأخذ إخراج NextColor لتكون مثالية) في تلك الحالات، فإن التحسين الهام يعرض نفسه.

في جميع الحالات باستثناء واحد الموصوف أعلاه، سيكون اللون المحدد بواسطة NextColor في مكان ما على سطح الحد الأدنى من بدن محدب الحد الأدنى الذي أرفق جميع النقاط في الفضاء 1/64-الكثيف المحدد بواسطة حلقاتك. إن توليد قائمة النقاط على هذا السطح معقدة أكثر بساغة قليلا من الحلقات البسيطة التي تولد قائمة جميع النقاط، ولكنها ستقلل مساحة البحث عن طريق عامل 25.

في الغالبية العظمى من الحالات، ستكون نتيجة تلك البحث المبسطة نقطة على واحدة من زوايا تلك بدن محدب. بالنظر إلى فقط يقلل من مساحة البحث الخاصة بك إلى قائمة تافهة (24 مرشحا، إذا كانت هندسي العقلي يخدمني جيدا) يمكن أن يتم تخزينها ببساطة في وقت مبكر.

إذا كان NextColor المحدد من هؤلاء "قريب جدا" إلى Colortable، فيمكنك العودة إلى تشغيل النوع الأصلي للبحث عن آمال العثور على نوع "جوفاء" المذكور أعلاه. يمكن تكييف كثافة هذا البحث بناء على مدى إغلاق المرة الأولى، وتضاقى من هناك. وهذا هو، إذا كان البحث السريع الفائق يجد بعد 8 وحدات 8 وحدات بعيدا عن أقرب جارتها Colardable، ثم القيام بعمل أفضل مما كنت يتعين عليك العثور على جوفاء 16 وحدة على الأقل في الداخل. قم بتشغيل البحث الأصلي بخطوة من 8 وتخزين أي مرشحين أكثر من 4 وحدات بعيدة (من غير المحتمل أن يكون الجوف من غير المرجح أن يتماشى مع شبكة البحث الخاصة بك)، ثم قم بمركز RADIUS-12 بحثا عن كثافة أعلى على كل من هؤلاء المرشحين.

يحدث لي أن الطبيعة 1/64-كثيفة (كل مضاعفات 4) من ربما تم تأسيس مساحة البحث الخاصة بك من قبل المؤلف الأصلي لغرض تسريع البحث في المقام الأول. بالنظر إلى هذه التحسينات، يمكنك القيام بهذه التسوية.

كل هذا يفترض أنك تريد التمسك بالتحسينات في هذه الطريقة السذاجة لإيجاد لون متناقض. هناك بالتأكيد طرق أفضل، تعطى متساوية أو أكثر (أي الألوان في Colortable هي الأكثر انتشارا في استخدامك؟ ما هي الألوان التي تظهر المزيد من النقيض من العيون البشرية؟) معلومات.

نصائح أخرى

يبدو أن لديك colortable وهي تخزين قائمة بالألوان.

ثم لديك هذا colorpace الكبير الغريب من

الألوان التي تحتوي على مكونات متعددة من 4 و "ليست مشرقة للغاية" ولكن ليس "مظلمة للغاية إما".

يبدو أن هذه الوظيفة تعطيك اللون في الأخير الذي "يتناقض" الأفضل مع طاولة الألوان الخاصة بك.

عندما أقول التباين، يتم تعريف هذا عن طريق اختيار اللون الذي هو قدر الإمكان من جدول اللون باستخدام المعيار 2.

بالنظر إلى مجموعة عالمية من لون الكائنات اسمه colorTable هذه الوظيفة سوف تجد لون من colorspace هذا هو الأقرب* إلى كل واحد في مجموعة ، ثم واحد من تلك الألوان التي كان أبعد:

أحمر, أخضر, أزرق مكونات متعددة من 4 أحمر+أخضر+أزرق بين 256 و 512

*:"الأقرب" بأنها أقل مجموع مربعات فارق لكل لون العنصر.

كما تحدد بول, هذا يبدو معقولا ، إذا بجنون بكفاءة تنفيذ السذاجة نهج العثور على لون واحد التي توفر عالية التباين مع محتويات colorTable.نفس النتيجة يمكن العثور عليها مع مرور واحد من خلال colorTable وأكثر قليلا من الرياضيات بدلا من 5 مليون يمر colorTable, و هناك طرق أفضل بكثير للعثور على الألوان المختلفة التي توفر أعلى بكثير من متوسط التباين.

إنه يحاول أن يحصل لك لون آخر

أ) ترميز اللون الخاطئ مجموعة البيانات.

ب) رسم خط آخر على الرسم البياني.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top