LoginSignup
2
2

More than 3 years have passed since last update.

計算知能WolframAlphaからアメーバーのような幾何学系生物を作成

Last updated at Posted at 2019-03-01

計算機科学専用の検索エンジンWolframAlphaをご存知だろうか。私はこのWolframAlphaという存在を、2017年のSXSWでどこかのセッションで登壇者の方が説明しているときに知ったが、その時は何に使うんだろーと思っていた。それ以来忘れていたが、つい最近日本語版が公開されたという情報を偶然目にして、少し興味を持って調べてみた。。。のはこちらに書きました。

面白そうな図形

walframAlphaで面白そうな図形を発見したので、それをJavaScriptでうまく生成できないか試行錯誤してみました。こんな図形です。

スクリーンショット 2019-03-01 16.05.24.png

r = 4 + 0.5 * sin( 8 theta)

半径Rを割り出す式ですが、Θの角度に応じて円形を歪めています。
この式の構造としては以下の感じかと思います。

半径 = 半径の大きさ + 振幅 * sin( 周波数 * theta)

この式を元にp5.jsを使って描画してみます。

p5.js
    const radius = 150;
    const amplitude = 12;

    const frequency = 12;
    translate(width / 2, height / 2)
    for (let i = 0; i < 360; i++){    
      const r = radius + amplitude * sin( radians(frequency * i ))              
      const x = cos(radians(i)) * r
      const y = sin(radians(i)) * r
      point(x, y);
    }

スクリーンショット 2019-03-01 16.17.29.png

周波数12に設定したので、12個の山が出来ています。周波数や振幅ドットの数や半径、Θの角度の間隔など、パラメータを変更するだけで、実に様々な形状を作ることができます。

これを基本原理として、アメーバージェネレーターを作りました。アメーバーに見えないかもしれないけど。。。
GitHubに置いておきます。
また、OpenProcessing上でも試すことができます。

Gellery

sample01.png sample02.png sample03.png sample04.png
sample05.png sample06.png sample07.png sample08.png
sample09.png sample10.png sample11.png sample12.png
sample13.png sample14.png sample15.png sample16.png
sample17.png sample18.png sample19.png sample20.png
2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2