প্রক্রিয়াজাত নদী বা অসীম অঞ্চলগুলির জন্য রাস্তা উত্পাদন


28

আমি আরও মধ্যযুগের মতো ভাবছি বলে রাস্তা নয়, আমার রাস্তা বলা উচিত। এছাড়াও, বাস্তববাদ খুঁজছেন না। আমি যে উত্তরটির সন্ধান করছি তা হ'ল বাস্তববাদের চেয়ে আমি যে ছাঁচে বর্ণনা করেছি তাতে ফিট হয়ে যাবে।

আমি একটি বক্র ধরণের ফ্যাশনে প্রক্রিয়াভিত্তিক রাস্তা / নদী উত্পন্ন করার জন্য একটি পদ্ধতির সন্ধান করছি, তবে আমি অসীম ভূখণ্ডের ধরণের সিস্টেমের জন্য এটি করতে চাই। পার্লিন শব্দটি কীভাবে ব্লব উত্পন্ন করে, ঠিক তেমনই আমি এলোমেলো দৈর্ঘ্যের রেখাংশ (সম্ভবত অসীম দৈর্ঘ্য) তৈরি করতে চাই।

আমি এখানে প্রস্তাবিত উত্তরের মতো কৌশলগুলি সম্পর্কে সচেতন , তবে এটি কাজ করার জন্য একটি নির্দিষ্ট শুরু এবং শেষ পয়েন্টের উপর নির্ভর করে, আমার একটি নির্দিষ্ট শুরু এবং শেষ পয়েন্ট নেই। আমি স্বেচ্ছাচারিত স্থানাঙ্কগুলি ব্যবহার করে কোনও ফাংশন কল করতে এবং নির্দিষ্ট স্থানাঙ্কগুলি নদী / রাস্তার অংশ কিনা তা ফেরত দিতে চাই return

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

এমন কোনও অ্যালগরিদম বা শোনার অ্যালগরিদমকে টুইট করা হয়েছে যা আমি ব্যাখ্যা করতে চাইছি তা সম্পাদন করার জন্য কেউ জানতে পারে?

আমি এখন পর্যন্ত সবচেয়ে কাছাকাছি এসেছি মাল্টি-রিজেড ফ্র্যাক্টাল, যদি আমি নামটি সঠিকভাবে ব্যবহার করি। আমি কেবল মান শব্দের নিখুঁত মান নিচ্ছি (ধরে নিলাম এটি -1 থেকে +1 করা হয়) এবং একটি থ্রেশহোল্ড সেট করে নিচ্ছি। এটির সাথে আমার প্রাথমিক সমস্যাটি লাইনগুলি প্রায়শই ওভারল্যাপ হয়ে যায়, বেশিরভাগ ক্ষেত্রে বিজ্ঞপ্তি হয়, কখনও কখনও বড় বড় হ্রদগুলি রূপান্তরিত করে যা ঝরঝরে তবে অবাঞ্ছিত often

2 ডি তে এখনও অবধি আমার যা আছে তার একটি চিত্র এখানে দেওয়া হয়েছে, তবে আরও বিশদটি দেখানোর জন্য খুব উচ্চ ফ্রিকোয়েন্সি এ:

এখানে চিত্র বর্ণনা লিখুন


যেহেতু নদীগুলি "প্রবাহিত হয়" উত্সের বিন্দুটি নির্ধারণ করার জন্য কেবল শব্দগুলি ব্যবহার করে নদীগুলি নির্ধারণ করা সহজ হতে পারে, তারপরে পথটি নির্ধারণ করার জন্য কেবল আপনার কাঁচা উচ্চতা ম্যাপের ডেটা ব্যবহার করুন।
যুদ্ধ

রাস্তা যদিও কিছুটা চ্যালেঞ্জের হতে পারে তবে আমি ব্যবহারের ভিত্তিতে রাস্তা তৈরির বিষয়টি বিবেচনা করেছি, যদি কোনও খেলোয়াড় / সমস্ত খেলোয়াড় নিয়মিত কোনও কোনও অঞ্চলে হাঁটেন তবে এটি পথ হয়ে যাবে।
যুদ্ধ

1
@ ব্যবহারকারী19142 ঠিক আছে, তার পরে সদৃশ নয়। আপনি এই প্রশ্ন / উত্তর থেকেও কিছুটা ব্যবহার পেতে পারেন: গেমদেব.স্ট্যাকেক্সেঞ্জার / প্রশ্নস / ৫৪৪০০ / And এবং আমি পূর্ববর্তী লিঙ্কগুলিকে আবার "সম্পর্কিত" গেমদেব.স্ট্যাকেক্সেক্সঞ্জ / প্রশ্নগুলি / 45403 /… গেমদেব হিসাবে অন্তর্ভুক্ত করব । stackexchange.com/questions/29044/... gamedev.stackexchange.com/questions/31263/...
MichaelHouse

4
আমি মনে করি যদি শব্দ দিয়ে উত্পন্ন হয় তবে রাস্তাগুলি খুব বিশ্বাসযোগ্য হবে না। রাস্তাগুলি পদার্থবিদ্যা এবং সময়ের পরিবর্তে বুদ্ধি দ্বারা তৈরি করা হয়। তারা মাঝে মাঝে একে অপরের সাথে সাদৃশ্যপূর্ণ থাকতে পারে তবে এগুলি যথেষ্ট আলাদা যে আপনি উভয়ের জন্য একই অ্যালগরিদম ব্যবহার করতে পারেন না।
মাইকেলহাউস

1
এই প্রকল্পের রাস্তাগুলি কনট্যুর লাইনগুলি ছিল যা নির্দিষ্ট উচ্চতা অনুসরণ করেছিল, সুতরাং আপনি সম্ভবত এগুলি স্থানীয়ভাবে তৈরি করতে পারেন। এটি সেখানে কাজ করেছে তবে উচ্চতার মানচিত্রগুলি পার্লিনের শব্দে উত্পন্ন হয়নি
amitp

উত্তর:


11

আপনি যা চান তা (অনেক) পূর্বনির্মাণ এবং অসীম বিশ্বের সম্ভাবনা ছাড়াই এটি সংরক্ষণাগারভুক্ত করার জন্য আমার ধারণা।

অ্যালগরিদমের প্রথম পাইস হ'ল ভোরোনাই-ডায়াগ্রাম ব্যবহার । আপনি আপনার বিশ্বকে গ্রিডে বিভক্ত করেছেন, প্রতিটি গ্রিডের ফর্মের একটি ঠিকানা রয়েছে (এক্সগ্রিড, ইগ্রিড)। প্রতিটি কক্ষের জন্য যেখানে আপনাকে রাস্তা তৈরি করতে হবে আপনি এক্সগ্রিড এবং ইগ্রিড ভেরিয়েবলগুলিকে একটি হ্যাশ ফাংশনে রেখেছেন যা একটি নম্বর সেলসিড দেয় । আপনি সেলসিডটি একটি এলোমেলো সংখ্যার জেনারেটরের জন্য বীজ হিসাবে ব্যবহার করেন যা ভোরোনাই ডায়াগ্রামের জন্য পয়েন্টগুলির স্থানাঙ্ক তৈরি করে।

এখন আপনাকে চিত্রের কিনারা এবং নোডগুলি সন্ধান করতে হবে যেখানে একাধিক প্রান্ত সংঘর্ষিত হয়। আরও সহজ অ্যাক্সেসের জন্য আপনি তথ্য গ্রাফের মধ্যেও সংরক্ষণ করতে পারেন।

এই পদক্ষেপের পরে আপনি বৈধ যে নেটওয়ার্কের মাধ্যমে পাথ অনুসন্ধান করতে পারেন।

বৈধ পাথের জন্য আপনি এখন রাস্তা তৈরি করতে পারেন (তাদের তীক্ষ্ণ প্রান্ত রয়েছে)।

দ্রষ্টব্য : আপনার সমস্ত নেবারবার কোষের জন্য ভোরনিও ডায়াগ্রামের স্থানাঙ্কগুলিও তৈরি করতে হবে যাতে আপনার ঘরের প্রান্তে সীমানা না থাকে।

আপনি যদি শার্ফ প্রান্তগুলি না চান তবে আপনি প্রতিটি সংযোগের মধ্যবিন্দু গণনা করতে পারেন এবং গ্রাফের দুটি প্রান্তের মধ্যে বেজিয়ার ইন্টারপোলেশনটির জন্য একটি স্পর্শক হিসাবে দিকটি ব্যবহার করতে পারেন।

ভোরোনাই-ডায়াগ্রামের ব্যবহার সম্পর্কে

রাস্তার কাঠামোর মতো শহর সংরক্ষণাগারবদ্ধ করার জন্য সিউডো এলোমেলো ফাংশন থেকে পয়েন্টগুলি একটি গ্রিডের সাথে সংযুক্ত করা যায়, সুতরাং উপায়গুলি আয়তক্ষেত্রাকার আকারযুক্ত।

রাস্তার মতো আরও কাউন্টির জন্য পয়েন্টগুলিকে আরও আনর্ডর্ড করা উচিত।

উইকিপিডিয়া থেকে ডায়াগ্রাম

ভেরোনাই-ডায়াগ্রামের পয়েন্টগুলির অবস্থান তৈরি করতে সিউডো র্যান্ডম ফাংশন সম্পর্কে

এটি একটি সাধারণ র্যান্ডম ফাংশন বা পয়েন্টগুলির আরও অভিন্ন অ-কুঁচকিত বিতরণের জন্য একটি হ্যামারস্লে সেট হতে পারে ।


আপনার কাছে কি হ্যাশ ফাংশনের কোনও উদাহরণ রয়েছে? আমি একই লক্ষ্য পেয়েছি (অনন্ত বিশ্ব যা রাস্তাগুলির জন্য ভোরোনাই ব্যবহার করে) তবে কীভাবে এটি করা উচিত সে সম্পর্কে আমি কোনও হ্যান্ডেল পেতে পারি না বলে মনে হয়। প্রতি ভোরোনাই লাইব আমি খুঁজে পেতে পারি এমন একটি বাউন্ডিং বক্সের স্থানাঙ্কের প্রত্যাশা যা অবিলম্বে উদ্দেশ্যকে পরাস্ত করে।
বটস্কোনেট

না, হ্যাশ ফাংশনটি কেবল একটি ঘরে স্টার্টসিড নির্ধারণের জন্য। X * prime1 + y * prime2 + z * prime3 এর মতো তুচ্ছ কিছু হতে পারে। যেখানে প্রাইমগুলি একে অপরের সাথে অসম এবং আদর্শভাবে বড়, আপনার এখানে 64 বিট ইন্টিজার / স্বাক্ষরযুক্ত না করে গণনা করা উচিত। লিব একটি বাউন্ডিং বাক্স ব্যবহার করে তবে এটি কোনও সমস্যা নয়, কারণ প্রতিটি কক্ষের জন্য আপনাকে কেবলমাত্র ঘরের সমস্ত পয়েন্ট এবং পার্শ্ববর্তী কোষের সমস্ত পয়েন্ট (যা 8 পাড়ার কোষ) ব্যবহার করতে হবে।
Quonux

যদি লিবিব একক নির্ভুলতা ব্যবহার করে বা আপনি যদি একক নির্ভুলতা ব্যবহার করেন তবে আপনি সম্ভবত একক নির্ভুলতার সাথে নির্ভুলতার সমস্যাগুলিতে চলে যাবেন। সমস্যাটি বাইপাস করতে যদি লিবটি কেবলমাত্র একক নির্ভুলতা ব্যবহার করে এবং আপনি নীচের মতো না করেন: অবস্থানগুলি একক নির্ভুলতায় রূপান্তরিত করার আগে সেগুলি থেকে কেন্দ্রের ঘরের বিশ্বব্যাপী অবস্থানটি বিয়োগ করুন, তারপরে এটিকে লিবিতে ভাসমান হিসাবে রাখুন, তারপরে রূপান্তর করুন ফলাফল ফিরে।
Quonux

আমি আসলে এই অ্যালগরিদমটি কখনই বাস্তবায়ন করি নি তবে হ্যাশ ফাংশনটি অবশ্যই একটি তুচ্ছ কাজ হতে পারে।
Quonux

8

রাস্তা (এবং শহর) তৈরির জন্য, আমি যে সেরা কাগজটি পেয়েছি তা হ'ল এটি:

ওয়াই প্যারিশ এবং পি মুলার দ্বারা শহরগুলির কার্যনির্বাহী মডেলিং

এটি এল-সিস্টেম ব্যবহার করে এবং এটি মার্কিন যুক্তরাষ্ট্র এবং ইইউ সড়কের নিদর্শন তৈরি করতে পারে। আপনি যদি পুরো শহরটির জন্য রাস্তা তৈরি করতে না চান তবে আপনি কেবল প্রধান রাস্তাগুলি তৈরি করতে পারেন। এটি একটি উচ্চতার মানচিত্র, জলের মানচিত্র এবং ইনপুটটিতে জনসংখ্যার ঘনত্বের মানচিত্র নিতে পারে।


আমি কাগজটি পছন্দ করেছি বলে +1 করেছি। আমি কীভাবে রাস্তাঘাট / পথ / নদী গতিশীলভাবে ভূখণ্ড তৈরির চেষ্টা করতে চাই তার সাথে এটি খাপ খায়নি।
পৌরাণিক গল্প

6

http://vterrain.org/ সংস্কৃতি / রোডস / বিভাগ "3 ডি রোড উত্পাদন করা " রাস্তা উত্পাদন সম্পর্কে কিছু তথ্য রয়েছে

রাস্তাগুলির সমস্যা হ'ল তারা ল্যান্ডমার্কগুলি সংযুক্ত করে (যদিও তারা প্রায়শই ভূখণ্ড অনুসরণ করে এ থেকে বি তে সরাসরি যাওয়ার পরিবর্তে )।

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

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


4

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

এটি সুস্পষ্ট বলে মনে হতে পারে তবে গুগল মানচিত্রগুলি বিভিন্ন ধরণের অঞ্চল এবং রাস্তাগুলিতে দেখুন; তাদের চেহারাটি কেমন হওয়া উচিত সে সম্পর্কে আপনি আরও ভাল ধারণা পাবেন।


1
আমি প্রশ্নটি আবার সংশোধন করে আরও বুঝতে পেরেছিলাম যে অ্যালগরিদমটি যেভাবে কাজ করতে হবে সেভাবেই আমি যতটা কাছে আছি ততই বাস্তবত্বে আগ্রহী নই। যদিও আমি বেশিরভাগ ব্যবহৃত শর্তাদির জন্য উত্তরটির প্রশংসা করি। আমার ইচ্ছা সম্পর্কে আরও চিন্তা করার চেষ্টা করুন অনন্য এলোমেলো দৈর্ঘ্যের স্কুইগলসের মতো প্রয়োজনীয় ন্যূনতম ডেটা (যেমন উচ্চতার মানচিত্রের) সহ উত্পন্ন হতে পারে।
পৌরাণিক গল্প
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.