読者です 読者をやめる 読者になる 読者になる

kkana's blog

新米コーダーの忘れそうなことメモ

the nature of code を読み終えて

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

英語版はこちら

The Nature of Code

で読めます。

日本語版はこれ

Nature of Code -Processingではじめる自然現象のシミュレーション-

Nature of Code -Processingではじめる自然現象のシミュレーション-

私はどちらも読みつつやりました。

はぁ楽しい本だった! すごくすごく! 帯に「一番簡単な世界の作り方」と書いてあるんですが、言いえて妙。
canvas(sketch)の中で自分の書いたルールが、いきいきと、動く!

そしてシフマン先生が大好きになりました。
↓シフマン先生(この動画の最初で拾い上げているのがthe nature of codeです)

次はcoding rainbowやろうかなぁ。 ・・今見たらcoding[Undefined]になってる!商標権の問題だそうな。笑ってしまった

読んでいた時の自分なりのルール

  • 本を読んで、そのあとprocessingのサンプルコードを読んで、課題はjavascriptで書く、p5.jsは使わない。

これは単に「書いたことがあるのがjavascriptしかないから」という理由なので特に大した意味はない縛りだったのですが、 おかげでprocessingは描画に特化した言語なんだと気づいたり・processingにある機能を使いたいなぁ〜と思ったら自分で書くしかなく、その結果ES2015を知ったりするきっかけになったりして振り返ると結構よかったかも。

  • わからなかったらやめる・脱線する

「高校生や大学生はお休み中にさくっとやってしまってもいいですね」的な紹介をどこかでされていたため、さくっとできるかと思ったら、 全然そんなことはなく・・・。特に序盤よくつまずき、もう軽い気持ちでやることにしました。

課題のリンクとメモ

1~4章をやっていた頃はブログを書いてなかったので課題のリンクなしです。

無生物編

物体が動くのをシュミレートできるようになる

Chapter 0 はじめに

  • アニメーションはパラパラ漫画みたいにちょっと動かして・消してを繰り返すと作れる
  • 「ちょっと動かして」のルールをどう定義するかが大事
  • random()に頼ることは有機的なデザインの解決にはならない。
  • 擬似ランダムに偏りを持たせる方法
    • 格率を高くしたい数値を多めに用意してそこから選ぶ
    • 最初に選択肢を決めるランダム値の範囲を偏りのある状態で定義しておく
    • ランダム値を2つ使う(1つ目はただのランダム値・二つ目は1つ目を使うか破棄するかの判別用)
  • 平均値付近に多く分布させたい時はガウス分布が使える
  • より自然なランダム値を生成するパーリンノイズというものがある

Chapter 1 ベクトル

Chapter 2 力

  • オブジェクトに力を適用(積算・すべての力を合計)するには 質量で割って、加速度のベクトルに力を加算する。 このときの加速度は瞬間ごとなので、フレームを次に進める前に0にする必要がある
  • 物理の公式を使ってシミュレーションしたいとき
    • 力の方向をどう計算するか?
    • 力の大きさをどう計算するか? のふたつに分けて考えてコードに書き直す。
    • 扱っている対象がベクトルなのか・スカラー浮動小数点数)なのかに注意する。
  • 2章では摩擦や抵抗や重力をやってみた
  • 重力の課題でオブジェクト間の対話についてでてくる。どっちに力を計算する機能をもたせるか?で結構迷った。
  • 割り算の記号(/)を見たら0で割ることがないように注意する

Chapter 3 振動

  • radian(孤の長さ = 半径のときの角度) = 2 * PI * (度数 / 360)
  • 角度 = 角度 + 角速度
  • 三角関数をつかってベクトルの大きさや方向などを調べたりできる
  • 極座標デカルト座標の変換は結構でてくる
  • 単振動などは三角関数を使うと簡単に再現できる
  • 波は単振動をずらしてアニメーションさせると作れる
  • 波は足すことができる

Chapter 4 粒子系

Chapter 5 物理ライブラリ

・・・の途中で脱落。

あとで読む


生物編

環境に応じて動きを決められるようになる

Chapter 6 自律エージェント

複雑系のルールベースの技法を学んで、複雑な動きをつくれるようになる

  • 自律エージェント = 環境ないでどう行動するかをリーダーや全般的な計画を受けずに自分で選択すること
  • 自律エージェントの構成要素
    • 環境を認識する「限られた」能力がある
    • 環境からの情報を処理して行動を計算する
    • リーダーを持たない
  • 課題ででてくる「vehicle」は「模型は心を持ちうるか」という論文から。

模型は心を持ちうるか―人工知能・認知科学・脳生理学の焦点

模型は心を持ちうるか―人工知能・認知科学・脳生理学の焦点

Chapter 7 セル・オートマトン

Chapter 8 フラクタル


知能編

生物の進化の法則を使ってオブジェクトを進化させる

Chapter 9 遺伝と進化

Chapter 10 ニューラルネットワーク


脱線して読んだ(読むつもり)の本

形の美とは何か (NHKブックス)

形の美とは何か (NHKブックス)

自然物の美しさはフラクタルの美しさだった・・・!おまけに黄金比フラクタルの美しさ。ああフラクタル

読書メモ:形の美とは何か(5) - kkana's blog

[普及版]ジェネラティブ・アート―Processingによる実践ガイド

[普及版]ジェネラティブ・アート―Processingによる実践ガイド

  • 作者: マット・ピアソン,Matt Pearson,久保田晃弘,沖啓介
  • 出版社/メーカー: ビー・エヌ・エヌ新社
  • 発売日: 2014/11/21
  • メディア: 単行本(ソフトカバー)
  • この商品を含むブログ (1件) を見る
the nature of code の前に読んで、nature of code読むきっかけになった本。これはいつかメモに起こしたい

複雑系入門―知のフロンティアへの冒険

複雑系入門―知のフロンティアへの冒険

複雑系のところを読んでいて、こんなことどうやって思いつくのかなと気になって。でもまだ未読。

プログラマの数学

プログラマの数学

1章をやっているときに高校数学の記憶がきれいさっぱり消えてることに気づいてあわてて読むことにした。読み途中。

波紋と螺旋とフィボナッチ

波紋と螺旋とフィボナッチ

この本はめっちゃおもしろかった・・!
アンモナイトも、結晶の螺旋も、しましま模様も、なんでできるか解説がわかりやすく書かれててスッキリとした気持ちに。 植物の茎の先端の「中央部分の連続した拡大と周囲の相似形の構造」が黄金比の長方形そのものだ! コッホ曲線を単なる座標を再帰関数で扱う書き方からクラスを使う書き方へ変換する課題をやっていたときに、この本を思い出したりした。 あと後ろの方の自伝が胸熱。

www.google.com

私は美術館とかにいったら絵画の細部を眺めるのが好きで、 直線を描いてる部分だったらマスキングテープの剥がれる部分のちょっと絵の具が引っ張られて固まった感じとかすごく綺麗だなって見てしまうんですが、 それって8章に出てきた自己相似性のある形が好きとも言える。 このサイトはかなり高解像度の作品が収容されてるので信じられないくらい拡大できて細部が眺められる。あぁ欲が満たされる・・。