সংক্ষিপ্ত সংস্করণ
কোনও অ-ওভারল্যাপিং ফ্যাশনে যানবাহনের লেবেল বিতরণ করার জন্য, তারা যে যানবাহনটি উল্লেখ করেন তার যথাসম্ভব নিকটে রাখার জন্য কি কোনও নকশার প্যাটার্ন রয়েছে? যদি তা না হয় তবে আমি প্রস্তাবিত কোনও পদ্ধতি কি কার্যকর? আপনি কীভাবে এটি বাস্তবায়ন করবেন?
বর্ধিত সংস্করণ
গেমটিতে আমি লিখছি আমার বায়ুবাহিত যানগুলির একটি পাখির চোখ রয়েছে। আমার প্রতিটি গাড়ীর পাশে গাড়ি সম্পর্কিত কী-ডেটা সহ একটি ছোট লেবেল রয়েছে। এটি একটি আসল স্ক্রিনশট:
এখন, যেহেতু যানবাহনগুলি বিভিন্ন উচ্চতায় উড়তে পারে, তাই তাদের আইকনগুলি ওভারল্যাপ করতে পারে। তবে আমি তাদের লেবেলগুলি কখনই ওভারল্যাপিং করতে চাই না (বা যানবাহন 'এ' থেকে একটি লেবেল 'বি' যানবাহনের আইকনটিকে ওভারল্যাপ করে)।
বর্তমানে, আমি স্প্রাইটের মধ্যে সংঘর্ষগুলি সনাক্ত করতে পারি এবং আমি অন্যথায়-ওভারল্যাপেড স্প্রাইটের বিপরীত দিকে আপত্তিজনক লেবেলটি দূরে ঠেলে দিই । এটি বেশিরভাগ পরিস্থিতিতে কাজ করে, কিন্তু যখন আকাশসীমা ভিড় করে, লেবেলটি তার যানবাহন থেকে খুব দূরে ঠেলাঠেলি করতে পারে , এমনকি যদি সেখানে বিকল্প "চৌকস" বিকল্প থাকত। উদাহরণস্বরূপ আমি পেয়েছি:
B - label
A -----------label
C - label
যেখানে এটি পেতে ভাল হবে (= গাড়ির কাছাকাছি লেবেল):
B - label
label - A
C - label
সম্পাদনা: এটিকেও বিবেচনা করতে হবে যে ওভারল্যাপিং যানবাহনের ক্ষেত্রে, অন্যান্য কনফিগারেশন থাকতে পারে যাতে যানবাহনগুলি ওভারল্যাপ করতে পারে (ASCII- শিল্প উদাহরণগুলি উদাহরণস্বরূপ তিনটি খুব কাছাকাছি যানবাহন দেখায় যার লেবেলের A
আইকনটি ওভারল্যাপ করে B
এবং C
)।
বর্তমান পরিস্থিতিটি কীভাবে উন্নত করা যায় সে সম্পর্কে আমার দুটি ধারণা রয়েছে তবে সেগুলি বাস্তবায়নে সময় ব্যয় করার আগে আমি পরামর্শের জন্য সম্প্রদায়ের দিকে ফিরতে ভেবেছিলাম (সর্বোপরি এটি "সাধারণ যথেষ্ট সমস্যা" বলে মনে হচ্ছে এটির জন্য একটি নকশার প্যাটার্ন বিদ্যমান থাকতে পারে)।
এটির মূল্যের জন্য, আমি যে দুটি ধারণাটি ভাবছিলাম তা এখানে:
লেবেল জায়গার স্লট-আইসেশন
এই পরিস্থিতিতে আমি সমস্ত স্ক্রিনটি লেবেলের জন্য "স্লট" এ ভাগ করব divide তারপরে, প্রতিটি যানবাহনের সর্বদা তার লেবেলটি নিকটতম শূন্য একটিতে (ফাঁকা = কোনও স্থানে অন্য স্প্রাইটে) রাখা উচিত।
সর্পিল অনুসন্ধান
স্ক্রিনে গাড়ির অবস্থান থেকে, লেবেলটি বর্ধমান কোণে এবং তারপরে ক্রমবর্ধমান রেডিওগুলিতে রাখার চেষ্টা করব, যতক্ষণ না কোনও ওভারল্যাপিং অবস্থান না পাওয়া যায়। এর লাইনে কিছু রয়েছে:
try 0°, 10px
try 10°, 10px
try 20°, 10px
...
try 350°, 10px
try 0°, 20px
try 10°, 20px
...