広告は消しゴムで消すべし

そろそろ更新しようと思う(やる気)

p5.jsでDLAクラスタを作る-プログラミングはYouTube動画で学ぶ-

f:id:yosinex:20170213043643p:plain

 今回は拡散律速凝集(かくさんりっそくぎょうしゅう:DLA)とよばれるものを作りました!ランダムに動く粒子が、核となるものに結合していった結果できる集合体(クラスタ)です。

 

制作物

重いなとかんじたら</>を押して止めること

なかなか木の形成には時間がかかるんだよねー(+o+)

拡散律速凝集:DLAについて

そもそも、粒子はランダムに動いているのに、堆積していくと毎回似たような形になってしまうというのが不思議ですよね。このDLAと似た形が放電のリヒテンベルク図形(雷が落ちてできた痕とかのやつ)に見られるそうです。確かに似てますね(゜-゜)

今回作ったコレがどういった仕組みで動いているか一度想像してみてください。

解説

基本的な仕組み

まず核となるtree、粒子となるwalkersをつくります。今回は核を左壁に設定し、粒子は右壁から発生する設定にしました。

粒子にはブラウン運動をする動くようにランダムなベクトルを与えます。もし、核に粒子が触れたらstuckというフラグを立て、その粒子も核の一部とみなします。

今回は早く反応が進むように、描画はランダムウォーク1500回に一度だけ、そして1%の左方向に行きやすくなる偏りを持たせています。

カラフルな木みたいなのは

粒子が核に変わる時にHSBカラーモデルのHue(色相)を使って、粒子の色を変えることでカラフルなグラデーションが作れます。また、粒子は一定数を保つように核となって減った分を新たに生成し、生成する際0.1%ずつ半径を縮めることで、木の枝の感じを再現することができます。

計算の工夫

計算量を少なくするため核と粒子の当たり判定は円ではなく四角で行い、粒子同士がぶつかりあう判定もありません。

今回の教材

チャンネル:The Coding Trainが出しているCoding Challengeの第34回目の動画です。

まとめ

今回でpart3まできたのですが、partが増すごとにマシンの処理が重くなっていく...

次回はもうちょっと軽いやつをやろうかと思います。

 

 関連記事

 

 

なぜYouTubeで学ぶのか

私がYouTubeで学ぶ理由は3つ

  • お金がかからない
  • 動画の方が分かりやすい
  • 熟練のプログラマが動画を出している

YouTubeで学ぶ利点

 プログラミング学習と検索すると必ずWebスクールを紹介する記事が最初にでてきますが、優れたプログラマの中にWebスクールで学んだ人なんていないと思います。優れたプログラマの人達は小さいころからPCが好きで、脳が成熟してしまう前からPCで遊んでいたので自然と知識や扱い方が身についた人たちです。私はそういう人達を自分の講師としたいと思いました。YouTubeには動画投稿で収益を稼ごうと思っている熟練のプログラマ達がいます。また、

  • 本での独学よりも動画の方が分かりやすい
  • 応用的な内容の動画が多い

というのもYouTube学ぶ理由です。

 プログラミング独学用の本だとint型の書き方とかswitch文の書き方とか、基礎的なことばかりが本の半分を占め、読んでいてまったく楽しくありませんでした。YouTubeで収入を得ると考えた時に、つまらない基礎的な内容よりも応用的な内容を扱い、なおかつ楽しく動画が見れるように工夫しようとするのが自然です。ありがたいことに、それによって私たち学習者はモチベーションを保つことができます。

YouTubeで学ぶ欠点

逆にYouTubeで学ぶ欠点としては、

  • 言語の問題
  • 実力にあった動画があるか

いいなと思った人がロシア語で動画を出していたら、大抵の日本人は字幕の英語でしか理解できないし、そもそも英語が分からなければ日本語の字幕がある動画しか教材になりません。そして、学習を進めるうえで今の実力よりちょっとだけ難しい問題を解いていくのが良いとされますが、そういう動画を探すのが難しいです。

まとめ

 今の私にできるのは、自分がスゴイと思ったプログラマ達の動画を探して紹介することであると思い、この記事を書いています。この記事が少しでもあなたの役に立てたのならうれしいです。