nature of code

the nature of code を読み終えて

1年と半年かかった「the nature of code」の最後の課題が終わったところで、(正確には終わってないんですが・・最終課題の生態系プロジェクトがまだノータッチ)、 いままで書いたブログ記事へのリンク、課題を作って知って楽しかったこと・さっぱりわから…

nature of code : 今日の練習「ネットワークのアニメーション」

the nature of code 10章最後の課題 これまで読んできたニューラルネットワークのさわりの部分を可視化したアニメーション See the Pen ネットワークのアニメーション by kanaparty (@kanaparty) on CodePen. 2016年にギリギリ間に合った・・・!

nature of code : 今日の練習「ビークルの訓練」

前回作成したのは教師あり学習(正解があって、結果と正解から誤差を計算し重みを調整する)だったが 今回は簡易的な強化学習(結果から誤差を計算し、環境に対応する)を作ってみる練習。 今回のビークルにはbrainプロパティがあって、操舵力を決めるときに…

nature of code : 今日の練習「選択的遺伝」

See the Pen 選択的遺伝 by kanaparty (@kanaparty) on CodePen. 9章でやり残してしまっていた課題。 自分で適応度を変更して次の世代のパターンを作る。 例は顔みたいな図形だったけど、タータンチェックのパターンで作ってみた。

nature of code : 今日の練習「単純なパーセプトロン」

ニューラルネットワークとは 脳に基づいて特定の問題を解決するための計算モデル。複雑系の一種 ニューラルネットワーク - Wikipedia ニューロン...細胞網に存在している単一細胞で、入力を受け取り、処理し、出力を生成する。 コネクショニスト計算系...情…

nature of code:今日の練習「餌を食べるのに最適な大きさに進化する」

See the Pen PzJZNz by kanaparty (@kanaparty) on CodePen. あとで

nature of code:今日の練習「障害物を避けて獲物に向かうように進化するビークル」

See the Pen 障害物を避けて進化 by kanaparty (@kanaparty) on CodePen. 前回 tuitui.hatenablog.com のコードをベースに、障害物を設置してそれを避けて通るように進化させる課題。 前回のコードとの大きな違いは、ビークルの表現のクラスのなかの、適応度…

nature of code:今日の練習「獲物に向かうように進化するビークル」

See the Pen 獲物に向かうように進化するビークル by kanaparty (@kanaparty) on CodePen. 久しぶりにnature of codeの課題! 前回の進化の課題の表現を文字列から運動に変えて、 解を「獲物(画面右端の丸)にたどり着くこと」とした。 はじめはてんでバラ…

nature of code:今日の練習「遺伝的アルゴリズム」

See the Pen Genetic Algorithms(遺伝的アルゴリズム) by kanaparty (@kanaparty) on CodePen. 遺伝的アルゴリズムを使ってランダムな文字列から「音はしぐれか」 種田山頭火 - Wikipediaへ進化させる。 遺伝的アルゴリズム ステップは大きく分けて3つ 集…

nature of code:今日の練習「木(L-systemを使って)」

See the Pen tree(L-system) by kanaparty (@kanaparty) on CodePen. L-systemを使って、藻みたいな描写をする課題。 L-system - Wikipedia フラクタル構造を管理するメカニズム。必要な要素は3つあって、 アルファベット 公理(初期状態) 規則 作ったL-sy…

nature of code:今日の練習「枝」

See the Pen tree(2) by kanaparty (@kanaparty) on CodePen. 木っぽいやつ コッホ曲線を書いた時のようにベクトルオブジェクト(とそれをまとめるarraylist)でつくってみたのは↓ こっちは枝の長さが一定に短くなるようにしてます。 See the Pen tree by ka…

nature of code:今日の練習「コッホ曲線」

See the Pen KochLine(コッホ曲線) by kanaparty (@kanaparty) on CodePen. これ コッホ曲線 - Wikipedia 今までは回転をさせる時、rotateでcanvasを回転させて描く、みたいなことばかりしかやっていなかったが 今回のをつくるのにあたって自作ベクトルクラ…

nature of code:今日の練習「再帰関数」

See the Pen Recursive(再帰) by kanaparty (@kanaparty) on CodePen.

nature of code:今日の練習「ライフゲーム」

See the Pen life game by kanaparty (@kanaparty) on CodePen. ライフゲーム ライフゲーム - Wikipedia 複雑系の特徴をもった セルの系 セルオートマトンのときは 一つの世代を一つの列として表現し、次の世代を下二追加していったけれど ライフゲームのと…

nature of code:今日の練習「セルオートマトン」

See the Pen cellular automaton by kanaparty (@kanaparty) on CodePen. セルオートマトン セルオブジェクトで構成された系のモデル グリッド状になっていて、状態、近傍がある。そして時間の経過(=世代)がある。 一番簡単なセルオートマトン 世代を一列…

nature of code:今日の練習「群れ(2)」、大量のオブジェクトを動かすときに考えたこと(5)

See the Pen 群れ(2) by kanaparty (@kanaparty) on CodePen. boid関連の練習問題、これで最後! 大量ものを動かすときにどうするか悩んだシリーズはこれで最後にしたい・・・! 前回書いたboid群れ これはせいぜい30個のビークルを生成するところでカクカ…

boidについて

複雑系とは 複数の単純な個体が狭い範囲の関係を持つ 複数の個体は平行して動作する(同じアニメーションフレームの中ですべての個体の動きがある) 系全体でみると創発具象を見せる 複雑系の特徴 バタフライ効果 - Wikipedia 競争と協力 生命の複雑系にしか見…

nature of code:今日の練習「群れ」

See the Pen 群れ by kanaparty (@kanaparty) on CodePen. 一気に生物っぽくなった・・・。 あとでboidについて書く

nature of code:今日の練習「マウスとたわむれるビークル」

See the Pen マウスとたわむれるビークル by kanaparty (@kanaparty) on CodePen. 今日覚えたこと 小数点の計算がたまに変になるときがある(なんでだろう??)参考↓ blog.asial.co.jp pc.nikkeibp.co.jp (全くわからない・・・!いつかまた読みたい) キ…

大量のオブジェクトを処理するときに考えた事(4)(インスタンス化と処理速度について)

前回大量のオブジェクトを処理するときに考えた事(3)(連結リストについて) - kkana's blogもうこれでいいかなぁと思っていたところ 「粒子ごとに距離を測って加える力を計算するところ(連結リストをwhile文で回しているところ)でnew演算子を使わないよう…

大量のオブジェクトを処理するときに考えた事(3)(連結リストについて)

大量のオブジェクトを処理するときに考えた事(1)(イテレーターパターンについて) - kkana's blogこれを書いているときに勘違いしていたこと2つめは イレテータパターンと連結リストは同じものだと思っていたこと。 前回 tuitui.hatenablog.com これでイテ…

大量のオブジェクトを処理するときに考えた事(2)(イテレーターパターンについて)

大量のオブジェクトを処理するときに考えた事(1)(イテレーターパターンについて) - kkana's blogこれを書いているときに勘違いしていたこと1つめ itpro.nikkeibp.co.jp このページで イテレーターパターンとは「オブジェクトの持つデータ構造を非公開にし…

大量のオブジェクトを処理するときに考えた事(1)(イテレーターパターンについて)

追記: 後日 この記事を書いた時点でイテレーターパターンと連結リストを混同していた事がわかりました・・・ 最初の様子を残しておきたいのでこのままにしておきます 笑 tuitui.hatenablog.com このコードを書いているときにイテレーターパターンというもの…

nature of code:今日の練習「仲間とぶつからないように動こうとする粒子」

See the Pen ぶつからないように動くビークル by kanaparty (@kanaparty) on CodePen. あとでイテレータについて書く

nature of code:今日の練習「道に沿って動くビークル(曲がり角では曲がる)」

See the Pen 流れに沿おうとするビークル(曲がり角では曲がる) by kana (@kanaparty) on CodePen. 前回 tuitui.hatenablog.com との違いは 曲がり角の数だけ法線を求める記述が増える 進行方向上の予測ポイントと道の法線の接点(距離を測るときに使う)が道の…

nature of code:今日の練習「流れに沿おうとするビークル」

See the Pen 流れに沿おうとするビークル by kana (@kanaparty) on CodePen. ビークル(流れている点)は毎フレームごとに、今進んでいる進路上の点が道幅からでてしまうようであれば、 その進路上の点から道の真ん中と垂直に交わる点のちょっと先を目標に動…

2つのベクトルから角度を求めるとき

tuitui.hatenablog.comのときのメモ 2つのベクトルから角度を求めるとき A⃗ · B⃗ = ∥∥A⃗ ∥∥ * ∥∥B⃗ ∥∥ * cos(θ) と A⃗ · B⃗ = axbx+ayby から θ = cos−1 ( ( A⃗ · B⃗ ) / ( ∥∥A⃗ ∥∥ * ∥∥B⃗ ∥∥ ) ) なので、ベクトルでよく使う関数をいつも使いまわしている…

nature of code:今日の練習「風の吹く流れ場」

See the Pen 風の吹く流れ場 by kana (@kanaparty) on CodePen. またパーリンノイズに頼ってしまった

nature of code:今日の練習「流れ場」

See the Pen 流れ場 by kana (@kanaparty) on CodePen. canvas30pxごとにパーリンノイズでつくった方向の情報を持たせ、 ビークルが上を通るたびにその情報を渡して加速させる。 パーリンノイズ便利すぎる ついついなんでもパーリンパーリンしてしまうので気…

nature of code:今日の練習「マウスを追いかけようとするビークル」

See the Pen マウスを追いかけてくるビークル by kana (@kanaparty) on CodePen. いつも配列やオブジェクトは参照だってことを忘れてしまう