Saya telah mengimplementasikan fungsi-fungsi yang dapat menggambar bentuk poligonal apa pun, namun saya tidak dapat menghasilkan bentuk halus yang meniru tepi-tepi bulat sebuah danau. Saya mencoba membuat dua lingkaran dan menggabungkan ujung-ujungnya tetapi tidak ada cukup variasi atau kehalusan untuk itu. Adakah yang punya petunjuk atau ide yang dapat menghasilkan bentuk seperti ini?
algorithm
procedural-generation
terrain
Manderin87
sumber
sumber
Jawaban:
alwynd menyebut Perlin noise. Inilah cara saya membuat bentuk pulau untuk generator peta poligon:
(x, y)
di bitmap suara, menghitung jarak dari pusat, dinormalisasi sehingga bitmap adalah 2x2:(dx, dy) = (2 * x / width - 1, 2 * y / height - 1); d = sqrt(dx*dx + dy*dy)
.(x, y)
adalah bagian dari pulau jikanoise[x, y] > 0.3 + 0.4*d*d
. Langkah ini berupaya membuat bentuk bundar dengan memotong area yang jauh dari pusat.Kepulauan sedikit lebih kasar daripada danau, jadi saya tidak yakin apakah bentuk ini sesuai dengan keinginan Anda. Saya telah memasang demo dari algoritma di atas , dengan tombol di bagian bawah untuk mengontrol dua angka ajaib. Mungkin ada nilai yang berbeda dari angka ajaib 0,3 dan 0,4 yang menghasilkan bentuk yang Anda suka.
sumber
Anda dapat menggunakan algoritme Perlin Noise untuk menghasilkan danau untuk Anda, jika Anda menggunakan tampilan atas ke bawah (bentuk poligon, seperti Anda), orang dari Stanford ini melakukan hal itu.
http://www-cs-students.stanford.edu/~amitp/game-programming/polygon-map-generation/
sumber
Salah satu caranya adalah memulai dengan poligon dasar, mungkin pendekatan 2 lingkaran Anda.
Pertama-tama, atur semua titik secara acak, jadi tidak terlihat seperti lingkaran, lalu untuk setiap sisi, bagi menjadi 2 dan offset titik tengah dengan sedikit jumlah acak. Terus lakukan ini sampai Anda memiliki detail yang diperlukan.
Ini mirip dengan apa yang dilakukan saat membuat garpu petir.
sumber