Posted on 2014/10/13, 9:24 PM By admin22
Processingというグラフィックアート、デザインでよく使われるプログラム言語&ツールがあります。
データビジュアライゼーションの分野でも、積極的に使われています。
これにはパーリンノイズという、でたらめでもなく、規則的でもなく、自然に見せる乱数を発生する関数(noise())がありますが、前回の1/fノイズの続きで、その性質を調べてみました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
PrintWriter writer = createWriter("noise.csv"); background(0); size(512, 512); float n1 = 0; float n2 = 0; float n3 = 0; for(int x = 0 ; x < 512 ; x += 1){ float p1 = noise(n1); float p2 = noise(n2); float p3 = noise(n3); n1 += 2; n2 += 0.1; n3 += 0.003; writer.println(p1 + "," + p2 + "," + p3); noStroke(); fill(255,0,125); ellipse(x, p1 * height, 5, 5); fill(0,255,0); ellipse(x, p2 * height, 5, 5); fill(0,255, 255); ellipse(x, p3 * height, 5, 5); } writer.flush(); writer.close(); |
noiseのパラメータn1,n2,n3の増加量で、滑らかさを変えることができます。でたらめ、自然ぽい、その中間、といった意図で、パラメータを調節してみました。
そして3つの乱数列をcsvファイルの出力して、Excelで読み込みます。
前回と同様、パワースペクトルをとりました。
1/fにそっているように見えます。
またこのバーリンノイズは、2次元、3次元にも適用できるところが面白いです。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
float d = 100; size(512, 512); noStroke(); background(0); loadPixels(); for(int y = 0; y < height; y++){ for(int x = 0; x < width; x++){ float g = noise(x / d, y / d) * 255; pixels[y * width + x] = color(g); } } updatePixels(); |
Categories: 未分類 タグ: Excel, Processing