হীরা স্কোয়ার অ্যালগরিদম হ'ল একটি ফ্র্যাক্টাল টেরিন (হাইটম্যাপ) উত্পাদিত অ্যালগরিদম। এটি এখানে কীভাবে কাজ করে তা আপনি একটি সুন্দর বর্ণনা পেতে পারেন:
http://www.gameprogrammer.com/fractal.html (একটি রেফারেন্স হিসাবে ব্যবহৃত হয়।)
http://www.playfuljs.com/realistic-terrain-in-130-lines/ (গ্রেট জেএস বাস্তবায়ন, সম্ভবত আপনি তাঁর রেন্ডারার চুরি করতে চাইতে পারেন this এই অ্যালগরিদমটি http: // ডেমোতে সক্ষম কি তা এখানে একবার দেখুন । playfuljs.com/terrain/ ।)
সাধারণ ধারণাটি হ'ল আপনার কাছে 4 টি কোণ বীজ হিসাবে রয়েছে (ক), এবং এই চারটি কোণার গড় গড় করে এবং এলোমেলো মান যেমন -0.5 এবং 0.5 (খ) এর মধ্যে যুক্ত করে কেন্দ্র বিন্দুর উচ্চতা গণনা করুন। আপনি যদি গ্রিডে এটি প্রয়োগ করেন তবে আপনি আবার হীরার গ্রিড পাবেন (বর্গক্ষেত্র 45 °) এবং আপনি একই (সি, ডি) পুনরাবৃত্তি করতে পারেন, তবে এলোমেলো পরিসীমা আরও ছোট হয়ে যায়, যেমন -0.125 থেকে 0.125 ইত্যাদি
আপনার প্রোগ্রামটি অবশ্যই বেশ কয়েকটি ইনপুট গ্রহণ করবে:
- একটি পূর্ণসংখ্যা
l=1,2,3,...
যা পাশের দৈর্ঘ্য সহ বর্গাকার গ্রিডের আকার নির্ধারণ করে2^l+1
। এl=10
আপনার সম্পর্কে এক মিলিয়ন নম্বর সংরক্ষণ করতে হবে। - প্রতিটি কোণার জন্য চারটি বীজ (ভাসমান পয়েন্ট)
- একটি প্যারামিটার
0<h<1
যা রুক্ষতা নির্ধারণ করে (H
লিঙ্কে) যার অর্থ এলোমেলো পরিসীমা শুরুতে কত বড় - প্যারামিটারগুলি
a,b
যা এলোমেলো ব্যাপ্তির জন্য প্রাথমিক নিম্ন এবং উচ্চতর সীমাকে উপস্থাপন করেh
এবং প্রতিটি পরিশোধক পদক্ষেপে গুণিত হয় । (এলোমেলো সংখ্যাটিa
এবং এর মধ্যে সমানভাবে চয়ন করা হয়b
।
আউটপুট অবশ্যই 2 ডি গ্রিড সমাপ্ত হতে হবে।
সুতরাং রুক্ষ অ্যালগরিদমটি দেখতে এটির মতো হবে:
Create a square grid with sidelength 2^l+1
Place seed values in the corners
Repeat:
| Perform square steps
| Refine Range: a = a*h; b=b*h;
| Perform diamond steps
| Refine Range
আপনার একটি সচেতন হওয়া উচিত এমন একটি বিবরণ রয়েছে: গ্রিডের সীমানায়, আপনার কাছে হীরাটির কেবল তিনটি শীর্ষবিন্দু থাকবে , সুতরাং আপনার কেবল তিনটি পয়েন্টের গড় গণনা করা উচিত।
কিছু উদাহরণের ভিজ্যুয়ালাইজেশন (দয়া করে আপনি কী প্যারামিটার ব্যবহার করেছেন তা আমাদের বলুন) optionচ্ছিক তবে প্রশংসাযোগ্য, এবং অবশ্যই বাইট গণনায় যুক্ত হয় না।
এই অ্যালগরিদমের সামান্য বৈচিত্রময় বাস্তবায়ন এখানে পাওয়া যাবে: সমান্তরাল অভিক্ষিপ্ত ভক্সেল ভূখণ্ড জেনারেটর
গ্রেস্কেল চিত্র হিসাবে 2 ডি তে উচ্চতা ম্যাপগুলি বিভক্ত করার জন্য আমি জাভাস্ক্রিপ্টে একটি ছোট অঙ্কন ফাংশন তৈরি করেছি। http://jsfiddle.net/flawr/oy9kxpsx/
যদি আপনার মধ্যে কেউ যদি অভিনব 3 ডি হয় এবং 3 ডি তে মানচিত্র দেখতে স্ক্রিপ্ট তৈরি করতে পারেন তবে আমাকে জানান! =)