元Webデザイナー兼コーダーの備忘録

ウェブデザインやプログラミング、ブログのカスタマイズなどについてアウトプットしています。

 メニュー

» HTML入門のまとめはこちらです。

Processing:2次元ノイズ

The Nature of Code(PDF版)から2次元ノイズについて取り上げます。乱数を2次元に割り当てて、画像を作ります。Processingでプログラムを書いて、動作を確認します。動作を確認できるところがProcessingの楽しいところです。

パーリンノイズ

パーリンノイズによる2次元ノイズを見ていきます。

//2D Perlin noise
void setup(){
  size(640, 180);
}

void draw(){
  loadPixels();
  float xoff = 0.0;
  for (int x = 0; x < width; x++) {
    float yoff = 0.0;
    for (int y = 0; y < height; y++) {
      float bright = map(noise(xoff,yoff),0,1,0,255);
      pixels[x+y*width] = color(bright);
      yoff += 0.01;
    }
    xoff += 0.01;
  }
  updatePixels();
  noLoop();
}

  • メモ
    • noise(ノイズ空間におけるx軸の値, ノイズ空間におけるy軸の値);
    • pixels[]:表示ウィンドウ内の全てのピクセルの値が格納されている
    • loadPixels():現在の表示ウィンドウのピクセルデータをpixels[]配列に読み込む
    • updatePixels():表示ウィンドウをpixels[]のデータで更新

ランダムノイズ

ランダム関数によるノイズは、以下のようになります。

//ランダムノイズ
void setup(){
  size(640, 180);
}

void draw(){
  loadPixels();
  for(int x = 0; x < width; x++){
    for(int y = 0; y < height; y++){
      float gs = random(255);
      pixels[y*width+x] = color(gs);
    }
  }
  updatePixels();
  noLoop();
}

砂嵐のような画像になりました。

  • メモ
    • color(int型の値);
      • デフォルトでは0~255までのRGB値

まとめ

The Nature of Code(PDF版)から2次元ノイズについて取り上げました。乱数の違いにより、生成される画像に異なる特徴が現れました。引き続き、The Nature of Code(PDF版)の内容を勉強します。

参考サイト

» HTML入門のまとめはこちらです。