じょりじょり日記

JavaScript100サイトチャレンジを記録するブログです。

Processing vol13

こんばんは~!

パーリンノイズを自分で実装してみようと考えていました。しかし、関連サイトをみてもまだ意味がわかりませんでした。

手元の書籍でパーリンノイズについてまとまっている情報を確認することは出来たのですが「改良パーリンノイズ」というネットの記事を読んで困惑…。
まだまだ自分にはレベルが高すぎたようです(;´д`)トホホ… いつか理解できるようになりたいですね。

ということでパーリンノイズについてわかっていることを列挙すると…

  • Ken Perlinさんが開発した強力なアルゴリズム
  • 雲や炎を描画する際に特に有効
  • 自然な乱数を生み出せる仕組みがある
  • processingで実装されているnouse()は0.0-1.0の乱数を返す
  • random()との違いは引数に持たせる値が振れ幅ではないこと。
  • noise()は時間を引数に取る。

ということです。もっと深く理解できるよう頑張ります:D

f:id:zyoryzyory:20170918030131p:plain

https://processing.org/examples/noise1d.html
float xoff = 0.0;
//xの増加度合い
float xincrement = 0.01;

void setup() {
  size(640, 360);
  background(0);
  noStroke();
}

void draw() {
  //fill(rgb, alpha)
  fill(0, 10);
  //1度の描写ずつリフレッシュするためにrectで上書き
  rect(0,0,width,height);

  //xoffを基準にパーリンノイズの値がnに格納
  //パーリンノイズはオーガニック的で、前後の値を考慮してより自然な値を返すもの
  //xoffの値が増加すればするほど自由に動ける範囲が広くなる?
  float n = noise(xoff)*width;

  //1秒間に60回xoffを増加させていく
  xoff += xincrement;
  
  //パーリンノイズの値に基いてx座標を操作
  fill(200);
  ellipse(n,height/2, 64, 64);
}