यादृच्छिक ताल या झील बनाना


9

मैंने ऐसे कार्य लागू किए हैं जो किसी भी बहुभुज आकार को आकर्षित कर सकते हैं, हालांकि मैं एक चिकनी आकृति उत्पन्न करने में असमर्थ रहा हूं जो एक झील के गोल किनारों की नकल करता है। मैंने दो मंडल बनाने और किनारों से जुड़ने की कोशिश की लेकिन इसमें पर्याप्त भिन्नता या चिकनाई नहीं है। क्या किसी के पास कोई संकेत या विचार है जो इस तरह एक आकृति उत्पन्न कर सकता है?


मैं bezier घटता में देख रहा हूँ, ऐसा प्रतीत होता है कि मैं इससे एक झील उत्पन्न करने में सक्षम हो सकता हूँ। किसी को भी 2d सरणी पर उनके साथ कोई अनुभव है?
मंडेरिन87

जवाबों:


8

अल्विंद ने पर्लिन शोर का उल्लेख किया। यहां बताया गया है कि मैंने बहुभुज मानचित्र जनरेटर के लिए द्वीप आकार कैसे उत्पन्न किया:

  1. पेरेलिन शोर उत्पन्न करें।
  2. (x, y)शोर बिटमैप में प्रत्येक स्थान के लिए, केंद्र से दूरी की गणना करें, सामान्यीकृत करें ताकि बिटमैप 2x2 हो (dx, dy) = (2 * x / width - 1, 2 * y / height - 1); d = sqrt(dx*dx + dy*dy):।
  3. स्थान (x, y)द्वीप का हिस्सा है अगर noise[x, y] > 0.3 + 0.4*d*d। यह कदम केंद्र से दूर रहने वाले क्षेत्रों को काटकर आकार को गोल बनाने का प्रयास करता है।

द्वीप हालांकि झीलों की तुलना में थोड़े अधिक चीर-फाड़ वाले हैं, इसलिए मुझे यकीन नहीं है कि ये आकार आपकी पसंद के होंगे। मैंने ऊपर दिए गए एल्गोरिदम का एक डेमो डाला है , दो मैजिक नंबरों को नियंत्रित करने के लिए नीचे बटन के साथ। मैजिक नंबर 0.3 और 0.4 के अलग-अलग मूल्य हो सकते हैं, जो आपके आकार को पसंद करते हैं।


2
आपका काम एक बड़ी प्रेरणा है, अमित। 5 साल या आश्चर्य और आनंद के लिए अगर मैं कर सकता था तो 10k, मैं आपके ब्लॉग को पढ़ने से बाहर हो गया हूं।
इंजीनियर

4

आप अपने लिए झीलों को उत्पन्न करने के लिए एक पेरलिन शोर एल्गोरिथ्म का उपयोग कर सकते हैं, यदि आप एक शीर्ष डाउन व्यू (बहुभुज आकार, लगता है कि आप जैसे हैं) का उपयोग कर रहे हैं, तो स्टैनफोर्ड के इस आदमी ने बस यही किया।

http://www-cs-students.stanford.edu/~amitp/game-programming/polygon-map-generation/


1
"स्टैनफोर्ड का वह आदमी" इस साइट, FYI पर एक उपयोगकर्ता भी है।
इंजीनियर

कौन नहीं है =) मैं कुछ शोर (पेर्लिन, फ्रैक्टल) से शुरू कर सकता हूं, लेकिन कम "जग्गी" परिणामों के लिए धुंधला कर सकता हूं। महान लेख, btw - प्यार करता हूँ कि वह कैसे नदियों करता है।
जरी कोमप्पा

0

एक तरीका मूल बहुभुज के साथ शुरू करना होगा, शायद आपके 2 सर्कल दृष्टिकोण।

सबसे पहले सभी बिंदुओं को बेतरतीब ढंग से ऑफसेट करें, इसलिए एक सर्कल की तरह बहुत ज्यादा नहीं दिखता है, फिर प्रत्येक किनारे के लिए, इसे 2 में विभाजित करें और बीच के बिंदु को कुछ छोटे यादृच्छिक राशि से ऑफसेट करें। जब तक आपके पास आवश्यक विवरण न हो, तब तक ऐसा करते रहें।
यह वैसा ही है जैसा बिजली के कांटे पैदा करते समय किया जाता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.