1225

Twitter:@dn0t_ GitHub:@ogrew

【週刊p5js】work07

var h = 0.002;
var a = 3;
var xs = 14;
var ys = 3;

var iters = 3000;
  let cnt = 4000;
var pi = 3.141592;

function popcorn(x, y) {
  for (i = 0; i < iters; i++) {
    var xx = x;
    
    x = xx - h * tan(y/8  + cos(6*y));
    y = y  - h * tan(10*xx + 5*sin(pi*xx));
    
    point(
      map(xs+x, xs-a, xs+a, 0, width),
      map(ys+y, ys-a, ys+a, height, 0)
    );
  }
}

function setup() {
  createCanvas(windowWidth, windowHeight);
  background(240);
}

function draw() {
  let X, Y;
  let k = frameCount % cnt;

  X = random(-a, a);
  Y = random(-a, a);

  let r = map(k, 0, cnt, 0, 255);
  let g = random(50,90);
  let b = 180;

  stroke(r, g, b, 20);
  popcorn(X, Y);
}

f:id:taiga006:20200314165200j:plain

今週の作品メモ

  • 今回使ったのはPopcornアルゴリズムというやつです。
  • こちらのサイトで存在を知って、ここなどを見てコードを書きました。
  • Popcornアルゴリズムは、Cliff Pickover(Clifford Pickover?)氏が考案した定常速度場のモデルのシミュレーションを利用したアルゴリズムです。
  • 1991年に発表されたアルゴリズムらしいです。僕が生まれるよりも前ですね。
  • 二次元で表現すると、以下のようになります。面白いのはf(X,Y) g(X,Y) は自由に決められる点です。(hは極小時間。)
Xn+1 = Xn + h * f(X,Y)
Yn+1 = Yn + h * g(X,Y)
  • ちなみに最初に考案された際のf,gの関数はこれが使われていました。 f:id:taiga006:20200314180326p:plain
  • すでに発見されているアルゴリズムを応用してp5jsに落とし込むというのは面白いですね。OpenProcessingなんかで「は?どうやってこの式思いついたの?」みたいになるときは既存の有名なアルゴリズムが使われているのかどうか疑ってみることをおすすめします。(たまに、ガチで独創的な式でやってるんだろうなー、って作品もあるけど。)
  • あまりに良すぎてTwitterのヘッダーを変えた。思えば前のヘッダーはBlenderを勉強しているときに偶然できた作品で、時の流れを感じる。

今週の雑談

  • 腰やっちゃった☆
  • レントゲンじゃわからないって言われて大学生の頃の治験バイト以来のMRI検査を受けてきました。検査技師さんがイケメソだった。
  • 一番下の椎間板がちょっとヘタっててそこに水分性の突起ができててそれが神経にあたって痛くなってるってことらしい。
  • わからない人に説明するなら定期的に足がつる、みたいな感じ。
  • (足がつるときの原理わかってないけど。)
  • 彼女の誕生日プレゼントを考えている。物欲のあんまりない人だから、余計悩む。夜中、寝る前に「お!』と思ってネットで買うみたいなのを3回した。量でセンスに勝ろうとするセンスの無さ。
  • 会社の後輩?が僕の書いたC#コードにバンバン指摘してくれるので勉強が捗る。
  • とはいえ、やりたかったシェーダーの勉強は全然進んでない。やや焦燥感。
  • 来週締切の映像作品の進捗が芳しくない。なんやかんやと、最終的にいろんな人が関わってくれているのでなんとかいいものにしたい。
  • そういう状況に置かれているだろう、KANA-BOONの「マーブル」のPVがめっちゃ刺さった。まりっか
youtu.be

参考

www.iquilezles.org

www.reddit.com

www.harrykurz.de

paulbourke.net

www.pickover.com