1D, 2D ve 3D Noise (Noise Dimensions)

Perlin noise farklı boyutlarda kullanılabilir. Her boyut farklı kullanım alanlarına sahip:

1D Noise: noise(t)
Tek boyutlu - zaman içinde değişen değerler. Hareket, salınım için.
2D Noise: noise(x, y)
İki boyutlu - yüzey dokuları, arazi yükseklikleri için.
3D Noise: noise(x, y, z)
Üç boyutlu - animasyonlu dokular, hacimsel veriler için.

Noise Artış Değeri (Noise Step / Increment)

Noise fonksiyonuna verdiğimiz değeri ne kadar hızlı artırdığımız, çıktının yumuşaklığını belirler:

Noise artış değeri karşılaştırması
Şekil 0.5: Noise artış değeri küçükken (sol) yumuşak, büyükken (sağ) daha keskin değerler üretir
Küçük artış (0.01)
Çok yumuşak, yavaş değişen değerler. Sakin hareketler için.
Orta artış (0.05)
Dengeli yumuşaklık. Çoğu uygulama için ideal.
Büyük artış (0.1+)
Daha hızlı değişim, random()'a yaklaşır. Detaylı dokular için.

💡 Altın Kural

Artış değerini çok büyük yaparsanız (1.0 gibi), noise neredeyse random() gibi davranır. Yumuşak geçişler için 0.01-0.05 arası değerler kullanın.

2D Noise: Arazi ve Doku (2D Noise Landscape)

noise(x, y) ile 2 boyutlu deseni oluşturabiliriz. Her piksel için (x, y) konumuna göre gri değeri hesaplıyoruz:

2D Noise Nasıl Çalışır:

Her piksel için
(x, y) koordinatını noise'a ver, 0-255 arası gri değer al
Ölçekleme (0.01)
Piksel koordinatları çok büyük, küçük faktörle çarpıyoruz

🔬 Deneyin:

  1. Satır 11: Ölçeği 0.05 yapın Beklenti: Daha büyük, daha az detaylı desenler
  2. Satır 11: Ölçeği 0.005 yapın Beklenti: Daha küçük, daha detaylı desenler

Animasyonlu 2D Noise (Animated Noise)

3. parametre olarak zamanı ekleyerek animasyonlu doku oluşturabiliriz: noise(x, y, t)

💡 Performans İpucu

Her pikseli her frame hesaplamak yavaş olabilir. Daha düşük çözünürlük (pixelDensity(1)) veya daha büyük bloklar kullanabilirsiniz.

Arazi Oluşturma (Terrain Generation)

2D noise ile yükseklik haritası oluşturup, 3D arazi çizebiliriz:

noiseDetail() - Detay Seviyesi (Noise Detail)

noiseDetail(octaves, falloff) ile noise'un karmaşıklığını ayarlayabiliriz:

// Varsayılan
noiseDetail(4, 0.5);

// Daha detaylı (daha fazla oktav)
noiseDetail(8, 0.5);

// Daha yumuşak (düşük falloff)
noiseDetail(4, 0.3);
octaves (oktav)
Kaç katman noise üst üste bindirilsin. Fazla = daha detaylı, ama daha yavaş.
falloff (düşüş)
Her katmanın etkisi ne kadar azalsın. 0-1 arası. 0.5 = her katman yarı etkili.

Noise Kullanım Alanları

🗺️ Prosedürel Dünya
Minecraft, No Man's Sky gibi oyunlarda sonsuz dünya oluşturma
☁️ Atmosfer Efektleri
Bulut, sis, duman simülasyonu
🌊 Su Yüzeyi
Dalga hareketi, yansımalar
🎨 Prosedürel Dokular
Ahşap, mermer, taş dokuları
🦠 Organik Hareket
Sürü davranışı, parçacık sistemleri

📝 Bu Bölümün Özeti

🚀 Sonraki Adım: Vektörler

Rastgelelik bölümünü tamamladınız! Sonraki bölümde (Vectors) hareketin matematiksel temellerini öğreneceksiniz: konum, hız, ivme ve vektör matematiği.