Ana içerik
Bilgisayar Programlama
İki boyutlu gürültü
Gürültü değerlerinin tek boyutlu uzayda yaşamasıyla ilgili bu fikir önemlidir, çünkü bizi iki boyutlu uzay tartışmasına götürür. Bunu bir dakikalığına düşünelim. Bir boyutlu gürültüde, herhangi bir değerin komşusuyla benzer olduğu bir değer dizisi bulunmaktadır. Bu değer tek boyutta olduğundan, sadece iki komşusu vardır: ondan önce gelen bir değer (grafiğin solunda) ve ondan sonra gelen bir değer (sağında).
Kodun Niteliği Görüntüsü
İki boyutlu gürültü, kavramsal olarak aynı şekilde davranır. Aradaki fark, tabii ki, değerlere doğrusal bir yol boyunca değil, bir ağda durdukları şekliyle bakmamızdır. Her hücresine sayıların yazılı olduğu bir kareli kağıt parçasını düşünün. Belirli bir değer, tüm komşularınınkiyle benzer olacaktır: üstte, altta, sağda, solda ve herhangi bir köşeden boyunca.
Kodun Niteliği Görüntüsü
Bu kareli kağıdı, her değer bir rengin parlaklığıyla eşleşecek şekilde görselleştirseydik, bulut gibi görünen bir şey elde ederdiniz. Beyaz açık grinin yanında durur, o da grinin, gri siyahın, siyah da koyu grinin yanında durur.
Kodun Niteliği Görüntüsü
Gürültünün ilk icat edilme nedeni budur. Sonuçtaki görüntüyü mermer veya ahşap veya herhangi başka bir organik dokuya çevirmek için parametrelerle oynarsınız veya renkle oynarsınız.
ProcessingJS'de iki boyutlu gürültüyü uygulamaya hızla bir göz atalım. Bir pencerenin her bir pikselini rastgele boyamak isteseydik, her piksele erişen ve rastgele bir parlaklık seçen iç içe bir döngü gerekirdi.
Her pikseli
noise()fonksiyonuna göre renklendirmek için tamamen aynı şeyi yapacağız, ancak
random()yerine
noise()çağıracağız.
var bright = map(noise(x,y), 0, 1, 0, 255);
Kavramsal olarak bu iyi bir başlangıçtır - size iki boyutlu uzayımızdaki her (
x,
y) konumu için bir gürültü değeri verir. Problem, bunun istediğimiz kaliteyi vermeyecek olmasıdır. Seste 200 pikselden 201 piksele geçmek, büyük bir sıçramadır. Unutmayın, tek boyutlu gürültüyle ilgilendiğimizde, zaman değişkenimizi her karede 1 değil, 0,01 artırdık! Bu problem için gayet iyi bir çözüm, gürültü argümanları için farklı değişkenler kullanmak olur. Örneğin, iç içe döngülerde yatay olarak her hareket ettiğimizde
xoffadlı bir değişkeni ve düşey olarak her hareket ettiğimizde
yoffadlı değişkeni artırabiliriz.
Bu derste, Perlin gürültüsünün pek çok geleneksel kullanımını inceledik. Tek boyutlu gürültüyle, dolaşma görüntüsünü vermek için bir nesnenin konumu için düz değerler kullandık. İki boyutlu gürültüde, piksel düzleminde düzeltilmiş değerlerle bulutlu bir örüntü oluşturduk. Perlin gürültü değerlerinin sadece adı gibi ''değer'' olduğunu hatırlamak önemlidir. Bunlar doğal olarak piksel konumlarına veya renge bağlı değildir. Bu derslerde, değişkeni olan herhangi bir örnek Perlin gürültüsüyle kontrol edilebilir. Bir rüzgar kuvvetini modellediğimizde, gücü Perlin gürültüsüyle kontrol edilebilir. Fraktal ağaç örüntüsündeki dalların arasındaki açılar için de aynı şey söylenebilir veya bir ağ boyunca akış alanı simülasyonunda hareket eden nesnelerin hızı ve yönü için, aşağıdaki programda olduğu gibi.
Son derse rastgeleliğin nasıl bir değnek olacağı hakkında konuşarak başladık. Pek çok yolla, bu sürekli olarak sorduğumuz türden sorular için en bariz cevaptır. Bu nesne nasıl hareket etmelidir? Hangi renkte olmalıdır? Ancak, bu bariz cevap, en tembelce olanı da olabilir.
Bu dersi bitirirken, Perlin gürültüsünü koltuk değneği olarak kullanma tuzağına da düşebileceğimize dikkat çekelim. Bu nesne nasıl hareket etmelidir? Perlin gürültüsü! Hangi renkte olmalıdır? Perlin gürültüsü! Hangi hızla büyümelidir? Perlin gürültüsü!
Bütün bunların belirtmeye çalıştığı şey, rastgeleliği kullanmanız veya kullanmamanız gerektiğini söylemek değildir. Veya Perlin gürültüsünü kullanmanız veya kullanmamanız gerektiğini söylemek de değildir. Buradaki önemli nokta, sisteminizin kurallarının sizin tarafınızdan tanımlandığıdır ve alet kutunuz ne kadar büyükse, bu kuralları uygularken o kadar fazla seçeneğe sahip olursunuz. Bu derslerin hedefi alet kutunuzu doldurmaya yardımcı olmaktır. Sadece bir tür rastgelelik biliyorsanız, o zaman tüm tasarımlarınız sadece bir tür rastgelelik içerir. Perlin gürültüsü, programlarınızda kullanabileceğiniz başka bir rastgelelik aracıdır. Perlin gürültüsüyle ilgili biraz pratikten sonra, başka bir tür araca geçeceğiz - vektörler!
Bu "Doğal Simülasyonlar" dersi, Daniel Shiffman'ın"Kodun Doğası"'nın bir türevidir ve Creative Commons Yüklemesi-Ticari Olmayan 3,0 Dağıtıma Açık Lisansla kullanılmaktadır.
Tartışmaya katılmak ister misiniz?
İngilizce biliyor musunuz? Khan Academy'nin İngilizce sitesinde neler olduğunu görmek için buraya tıklayın.
Henüz gönderi yok.