এলোমেলো মানচিত্র জেনারেশন - এলোমেলো নোডগুলি ছড়িয়ে / বিচ্ছিন্ন করার কৌশল gies


10

আমি স্পেসে একটি সাধারণ 4 এক্স কৌশল গেমটি করছি যেখানে প্রতিটি নোড পয়েন্ট-অফ-ইন্টারেস্ট (একটি গ্রহ, গ্রহাণু ইত্যাদি)।

এলোমেলোভাবে একটি মানচিত্র তৈরি করতে, আমি নীচের পদক্ষেপগুলি অনুসরণ করব

  1. মানচিত্রে প্রতিটি নোডের কত প্রকার থাকবে তা সিদ্ধান্ত নিন (সম্ভবত, বলুন, 5 পৃথিবীর মতো গ্রহ, 10 বন্ধ্যা গ্রহ ইত্যাদি)

  2. প্রতিটি ধরণের নোড মানচিত্রে রাখুন।

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

বিভিন্ন গ্রাফ ফাংশন বা শোর ফাংশন ব্যবহার করার মতো কোনও পদ্ধতি রয়েছে যা একে অপরের থেকে ছড়িয়ে থাকা (x, y) স্থানাঙ্কের ক্রম তৈরি করতে পারে। তেমনি, একে অপরের নিকটে থাকা স্থানাঙ্ক উত্পন্ন করার কোনও উপায় আছে কি?


1
উত্তরটি গ্রহণযোগ্য হিসাবে চিহ্নিত করুন, তা সে আমার হোক বা অন্য কারও। ধন্যবাদ।
ইঞ্জিনিয়ার

উত্তর:


8

আপনি যে সমস্যার মুখোমুখি হচ্ছেন তা হ'ল এলোমেলো নির্বাচন কোনও বৈষম্যমূলক আচরণ করে না এবং এর অর্থ এই হতে পারে যে আপনার যা করা দরকার তা এটি আদর্শের তুলনায় কম আদর্শ fit তবে, এটিকে ঘিরে কাজ করার জন্য কমপক্ষে একটি সহজ উপায় রয়েছে:

  1. আপনার স্থানগুলিকে সেক্টরগুলিতে বিভক্ত করুন (উদাহরণস্বরূপ, যদি আপনার ক্ষেত্রটি 100 বাই 100 হয় এবং আপনার যদি 100 টি সৌরজগত তৈরি করতে হয় তবে আপনার অঞ্চলটি 10 ​​সেক্টরের 10 গ্রিডে বিভক্ত করুন)

  2. প্রতিটি সেক্টর দিয়ে লুপ করুন এবং 3 ধাপটি পুনরাবৃত্তি করুন (যা পরিবর্তে, বহুবার বার 4 ধাপ পুনরুদ্ধার করবে)

  3. বর্তমান সোলার সিস্টেমের জন্য এলোমেলোভাবে গ্রহগুলির সংখ্যা নির্ধারণ করুন (উদাহরণস্বরূপ, 3 থেকে 7 গ্রহের পরিসরের জন্য, কেবল 0 থেকে 4 অবধি একটি এলোমেলো সংখ্যা অর্জন করুন এবং 3 যোগ করুন) যদি আপনার একাধিক সৌর থাকে একটি সেক্টরে সিস্টেম, এটি যেখানে আপনি অন্য লুপ সেট আপ করবেন)

  4. এলোমেলোভাবে আপনার লুপ দ্বারা চিহ্নিত বর্তমান সৌরজগতের মধ্যে আপনার গ্রহগুলি বরাদ্দ করুন (গ্রহগুলির মধ্যে ন্যূনতম দূরত্ব বাড়ানোর জন্য আপনি এলোমেলো সংখ্যাও ব্যবহার করতে পারেন); এটিই যেখানে আপনি গ্রহের প্রকারগুলি স্থির করতে চান, যা বিভিন্ন ওজন বা আপনি যে পদ্ধতি ব্যবহার করতে পছন্দ করেন তা এলোমেলোভাবে নির্ধারণ করা যেতে পারে

প্রতিবেশী খাত থেকে গ্রহদের একে অপরের সাথে সরাসরি যোগাযোগ করতে বাধা দেওয়ার জন্য আপনি প্রতিটি সেক্টরের প্রান্তের আশেপাশের একটি "সীমার বাইরে" অঞ্চলটি সংজ্ঞায়িত করতে পারেন (কেবলমাত্র যদি তারা কার্যকরভাবে এলোমেলোভাবে পাশাপাশি থাকতেন), বা। ..

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


আপনাকে স্বাগতম! এবং আপনার সমস্যা কী সমাধান করেছে সে সম্পর্কে কিছু ফলোআপ পোস্ট করার জন্য +1। =)
র্যান্ডল্ফ রিচার্ডসন

8

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

স্পষ্টতই আপনি বর্গাকার বিমানের প্রান্ত থেকেও কিছু প্রকার বাহিনী প্রয়োগ করতে চাইতে পারেন, নাহলে আপনি "তীরে ধুয়ে" অনেকগুলি কণা পেতে পারেন। বিকল্পভাবে আপনি আপনার প্রয়োজনের তুলনায় অনেক বড় একটি ক্ষেত্র তৈরি করতে পারেন, তারপরে একটি ছোট অংশের একটি স্ন্যাপশট নিন - এটি পূর্বোক্ত সমস্যাটিকে এড়িয়ে চলে।

আপনি বিপরীত, অর্থাৎ যে ক্লাস্টারিং নিশ্চিত করার চান, তখন নেই ঘটে, তারপর "মান" বা "গসিয়ান" ডিস্ট্রিবিউশন দেখব। এ কারণেই এলোমেলোভাবে উত্পাদিত স্টারফিল্ডগুলি প্রায়শই ভুয়া দেখায়; তারা আরও প্রাকৃতিক বিতরণ মডেলের চেয়ে খাঁটি এলোমেলো বিতরণ ব্যবহার করে।


1
আপনি "পদার্থবিজ্ঞান" মডেল থেকেও গুচ্ছ আচরণ পেতে পারেন, আপনাকে কেবল একটি আকর্ষণীয় এবং ঘৃণার মিশ্রণ ব্যবহার করে একটি আলাদা রোলসেট ব্যবহার করতে হবে। বিকল্পগুলি সীমাহীন, সকলকেই সঠিক মডেলটি খুঁজে বের করতে হবে।
অআআআআআআআআআআআআআআআআআআআআআআআআআআ

6

"নীল আওয়াজ" বিতরণ পেতে আপনি একটি সাধারণ পয়েসন-ডিস্ক বিতরণ অ্যালগরিদম ব্যবহার করতে পারেন । বিমানের পয়েন্টগুলির ফলস্বরূপ একে অপরের থেকে প্রায় সমান দূরত্বে রয়েছে। এটি কেবল আপনার 2 ডি উদাহরণে নয়, ত্রিপি তেও এবং ইউক্লিডিয়ানহীন স্পেসেও কাজ করে, তবে গণনাগুলি খুব শীঘ্রই অনর্থক হয়ে উঠতে পারে।

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

2D এরকম শব্দ উত্পন্ন করার জন্য একটি দ্রুত এবং মার্জিত বিকল্প অ্যালগরিদম, পাশাপাশি এর বৈশিষ্ট্যগুলির একটি সংক্ষিপ্ত আলোচনা, বিশ্ববিদ্যালয়ের ড্যানিয়েল ডানবার এবং গ্রেগ হামফ্রেসের " অ্যা স্পেসিয়াল ডেটা স্ট্রাকচার ফর ফাস্ট পয়েসন-ডিস্ক স্যাম্পল জেনারেশন " -তে পাওয়া যাবে ভার্জিনিয়ার


2
পইসন-ডিস্ক বিতরণ কখনও শুনেনি - ভাল লিঙ্ক!
tenpn
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.