আমি ভেরোনাই চিত্রের দুটি পাস দিয়ে এই সমস্যাটি সমাধান করব:
প্রথম পাস: অঞ্চল বিভাজন
দ্বীপটিকে অঞ্চলগুলিতে মোটামুটি বিভক্ত করতে প্রথম পাসটি পয়েন্টগুলির কিছুটা বিচ্ছিন্ন বিতরণ (যেমন পয়েন্টগুলির মধ্যে দূরত্ব তুলনামূলকভাবে বড় হওয়া উচিত) ব্যবহার করবে (পয়েন্ট জেনারেশন সম্পর্কে নীচের নোটটি দেখুন)। পরবর্তী এই পয়েন্টগুলির উপর ভিত্তি করে একটি ভোরোনাই চিত্র তৈরি করুন। এটি দ্বীপটিকে প্রতিটি পয়েন্টের চারপাশে বহুভুজ অঞ্চলে বিভক্ত করবে নীচের মত:
দ্বিতীয় পাস: সীমান্ত র্যান্ডমাইজেশন
এখন যে দ্বীপটি অঞ্চলগুলিতে বিভক্ত হয়ে গেছে, তারপরে পরবর্তী পদক্ষেপটি তাদের মধ্যকার সীমানা 'রুট আপ' করা। এটি করার জন্য, পয়েন্টগুলির আরও কমপ্যাক্ট বিতরণ ব্যবহার করে পয়েন্টগুলির একটি নতুন স্তর তৈরি করুন (অর্থাত পয়েন্টগুলির মধ্যে দূরত্বটি ছোট হওয়া উচিত) এবং আবার এই পয়েন্টগুলি ব্যবহার করে অন্য ভোরোনাই চিত্রটি তৈরি করুন। প্রতিটি ছোট অঞ্চলের জন্য, এর 'বীজ' বিন্দুটি পরীক্ষা করে এটি একটি বৃহত্তর অঞ্চলে নির্ধারণ করুন। এর ফলে বৃহত্তর মহকুমার মধ্যে আরও কৌটা সীমানা তৈরি হবে। উভয় জায়গায় ভোরোনাই চিত্রের সাথে দেখতে দেখতে এটির কাছাকাছি অবস্থান রয়েছে:
এবং এখানে একই ক্ষেত্রটি কেবল চূড়ান্ত সীমানা দেখায়:
পয়েন্ট জেনারেশন সম্পর্কে মন্তব্য
পয়েন্ট জেনারেশন সম্পর্কিত, আমি তুলনামূলকভাবে সুন্দর এবং পয়েন্ট বিতরণ করতে পইসন ডিস্ক বিতরণ ব্যবহার করতে চাই । অন্যান্য সাধারণ বিকল্পটি একইভাবে বিতরণ পাওয়ার জন্য লয়েডের অ্যালগরিদম ব্যবহার করা 'নিয়মিত' এলোমেলো পয়েন্টের সেটটিতে । এলয়েড এর কোড করা সহজ, তবে পছন্দসই ফলাফল দেওয়ার জন্য কতগুলি পাসের প্রয়োজন তা নির্ধারণ করতে কিছু পরীক্ষা এবং ত্রুটি নিতে পারে।
এই পদ্ধতির সাথে একটি সম্ভাব্য সমস্যা হ'ল প্রথম পাস পার্টিশনটি কিছু খুব ছোট অঞ্চল তৈরি করতে পারে। যদি আপনি তাদের আপনার চূড়ান্ত ফলাফলে না চান তবে আমি কেবল এগুলি এলোমেলো সংলগ্ন অঞ্চলে একীভূত করব।
চূড়ান্ত নোটস
আমি যে চিত্রগুলি সরবরাহ করেছি তা রাস্টার ইমেজ হতে পারে তবে এই কৌশলটি বহুভুজ / ভেক্টর উপস্থাপনার পাশাপাশি কাজ করে।