Rastgele Havuzlar veya Göller Üretme


9

Herhangi bir çokgen şekli çizebilen fonksiyonlar uyguladım, ancak bir gölün yuvarlak kenarlarını taklit eden pürüzsüz bir şekil oluşturamadım. İki daire oluşturmayı ve kenarları birleştirmeyi denedim, ancak yeterli varyasyon veya pürüzsüzlük yok. Herkes böyle bir şekil oluşturabilecek herhangi bir işaret veya fikir var mı?


Bezier eğrilerine bakıyordum, ondan bir göl üretebileceğim anlaşılıyor. Herkes onlarla bir 2d dizi deneyimi var mı?
Manderin87

Yanıtlar:


8

Alwynd Perlin gürültüsünden bahsetti. Çokgen harita oluşturucu için ada şekillerini şu şekilde oluşturdum:

  1. Perlin gürültüsü üretin.
  2. Her konum için (x, y)gürültü biteşleminde, bitmap 2x2 olacak şekilde normalize merkezden mesafe, hesaplamak: (dx, dy) = (2 * x / width - 1, 2 * y / height - 1); d = sqrt(dx*dx + dy*dy).
  3. Yer (x, y)adanın bir parçası ise noise[x, y] > 0.3 + 0.4*d*d. Bu adım, merkezden uzaktaki alanları keserek şekli yuvarlaklaştırmaya çalışır.

Adalar göllerden biraz daha düzensiz, bu yüzden bu şekillerin beğeninize göre olup olmadığından emin değilim. Yukarıdaki algoritmanın bir demosunu koydum , iki sihirli sayıyı kontrol etmek için alttaki düğmelerle. Sevdiğiniz şekilleri üreten 0,3 ve 0,4 sihirli sayılarının farklı değerleri olabilir.


2
İşiniz büyük bir ilham kaynağı, Amit. + 10 bin yapabilseydim, 5 yıl boyunca merakınızı ve eğlencenizi blogunuzu okudum.
Mühendis

4

Yukarıdan aşağıya bir görünüm (çokgen şekli, sizin gibi geliyor) kullanıyorsanız, gölleri oluşturmak için bir Perlin Gürültü algoritması kullanabilirsiniz, Stanford'dan bu adam bunu yaptı.

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


1
"Stanfordlu o adam" da bu sitede bir kullanıcı, FYI.
Mühendis

kim değil? =) Biraz gürültü (perlin, fraktal) başlayabilir, ancak daha az "jaggy" sonuçları için sonuçları bulanık olabilir. Harika makale, btw - nehirleri nasıl yaptığını seviyorum.
Jari Komppa

0

Bunun bir yolu, temel bir çokgenle başlamak olabilir, belki de 2 çember yaklaşımınız.

Öncelikle tüm noktaları rastgele kaydırın, bu yüzden bir daire gibi görünmüyor, sonra her kenar için 2'ye bölün ve orta noktayı küçük bir rastgele miktarla kaydırın. Gerekli ayrıntıyı elde edene kadar bunu yapmaya devam edin.
Bu, yıldırım çatalları üretirken yapılanlara benzer.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.