2025/01/24 冬休みに読む本
t6o_o6t.icon
かならず読む(クラウドネイティブ関連)
期間
たぶん丸4日間
目的
Kubernetesの関連技術(CI / CDやHelmなどを含め)まとめておさらいしたい
この本で行うのは、手を動かすだけ。細かい情報は都度ドキュメントを読みながら学んでいく
期間
たぶん丸5日間
目的
Kubernetesコミュニティで培われてきたプラクティスを学習する
特に読む順序は決まっていないので、必要だと思った部分を重点的に読む。面白そうな部分も適宜読んでいく
期間
だらだらと3日くらい(変動あり)
読まないかもt6o_o6t.icon
かならず読む(回路設計関連)
期間
不明
かならず読む(ゲーム関連)
目標設定
1. 書籍で扱われているすべての内容を説明できるようになる。
2. 書籍で扱われている計算をできるようにする。
3. 書籍で扱われているプログラムをRustで実装する。
目的
数学で頭の体操をしたい
ゲームプログラミングに必要な数学知識を学習する
期間
不明(何もタスクがないなら1週間くらい)
2章
2.2.4
✅慣性空間は、次の性質を持つ座標空間である。
軸はワールド空間の軸と並行
しかし、原点はオブジェクト空間と同じ
この事実はしっかり覚えておく必要がある。9.3.1でまた使います
3章から4.10までは、基本的なベクトル演算の説明である
線形代数学を履修したのなら、読み飛ばしてよいだろう
6章
6.2.2
行列が座標空間上で点を表すものとして考えると上手く視覚化できる
7章
✅️任意の軸での回転
軸に水平な成分は回転しなくてOK
なので証明の前提として、vを軸nに水平な成分と垂直な成分に分ける
分けて計算したあと、基底ベクトル3つを式に代入して回転行列完成
✅️任意の軸でのスケーリング
軸に水平な成分だけ拡縮する
正投影 → n = 0
リフレクション → n = -1
✅せん断
行列との関係があまり分かっていない → 分かった
本文中にあるように、単位行列と異なる行を確認すると良い
8章
8.2.1
余因子行列の計算
随伴行列の計算
行列式の計算
逆行列の計算
逆行列は逆変換を表すので非常に重要なようだ
8.3.2
行列の直交性の条件について
行が単位ベクトルでなければならないのは、$ \bold r_k\cdot \bold r_k=r_k=1からいえる
行が互いに直交しなければならないのは、$ \bold r_n\cdot \bold r_m=0\quad(n\neq m)からいえる
8.4.1
同次座標行列
4x4行列が$ w=1のとき、同次座標という
4x4行列であれば、行列の掛け算で回転と平行移動の両方を表現できる
9章
向きと方向の違いが分からない
2方向の差が回転、角変位
電位の差が電圧、のような関係と理解した
回転の表現方法
行列 → 2座標空間の間の回転行列として表現
冗長度が高く不正な行列が発生しやすい
人間の目では分かりにくい
オイラー角 → 3つの軸からのそれぞれの角度で表現
ヘディング・ピッチ・バンクという言葉は深く考えない方が良いかもt6o_o6t.icon
Y-X-Zの順で回すという事実の方が、実用上は重要だと思われる
HPBでのオイラー角を見て、どのように回したのかを再現できれば実用上問題ないと思う
エイリアシングについては正準オイラー角を使うことで対処可能
ジンバルロックの対処は難しい
四元数 → 1つの実数と3つの虚数を使うことで、複素平面上での回転を自然に3D空間に応用した表現
演習問題を解こう!
□ 7章
□ 8章
□ 9章
期間
不明(冬休み期間が余ったら頑張って読む)
その他
目的
CLIアプリを書くときの引き出しの手前側にRustを置いておきたい
Effective Rust
Rustを書くときに手元に置いておけばアンチパターンを踏みにくくなるだろう
クレート作者視点の話は体験していなかったので分からなかった
ポインタという視点からBoxやVec、RC、dynといった概念が紐解かれていくのが非常にわかりやすかった。
これらのコンセプトをあらためて復習するのに本書は有効である。
トレイトオブジェクトとvtableの関係はまた忘れそうなので復習したい。
テストの項目について
fuzzingがスムーズに導入できるのは面白いと感じた。使ってみたい
マクロについて
宣言的マクロは安全かつ多くのケースに適合しそう。
手続きマクロは、関数的マクロなどやや低レイヤなものが多いと感じた。
もしRustの文法を根本から拡張することがあれば、そのときは手続きマクロの出番だろう
Clippyなどのlint系ツールは積極的に採用していきたい
Don't panicの項目は重要だと感じた。
ジェネリクスとトレイトオブジェクトのトレードオフ
ジェネリクス → わずかに高速だが、C++のような単相化が入るのでコード量が大きくなる。それに付随してコンパイル時間も長くなる。
トレイトオブジェクト → 関数のインスタンスは一つでいいので、上記の問題は解消される。
この項目はもう少ししっかり読みたい
次世代AIモデルプログラミング
LLMを使ったプログラミング、おもしろそうだった
iNoma.icon
自分のレポジトリを改修しながら実践的に読み進めたい
通読したい