「Rust 行列計算」とかでググると、主に nalgebra と ndarray という Crate が引っかかる。どうやらこれが二大巨塔っぽい。
しかし、nannou が使っている Crate はこれではなく、 cgmath というやつらしい。
cgmath はコンピューターグラフィックスのための行列演算ライブラリだけど、バリバリ開発されているというよりはメンテナンスモード?的な感じになっているらしく(メンテはされているので使うのに不安があるわけではない)、
cgmath から nalgebra に乗り換えたという事例もちらほら見つかる。
が、nannou 内でそういう議論がされたことはなさそう(GitHub を見る限りは)。
nalgebra には、GLM (OpenGL Mathematics)に似せた API の nalgebra-glm という Crate もあって、「こっちの方が簡単だし GLM の資料はインターネットにいっぱい出回ってるからオススメだよ!」みたいなことが書かれている
Simplified computer-graphics API -
だがしかし。GLMと同じように書けば OK 、というばかりでコード例がなく、例えば本家 GLM では
glm::mat4(1.0f);
と書くと 4x4 の単位行列がつくれるっぽいけど、nalgebra-glm だと mat4()
には 16 個の引数を渡さないといけない、みたいな些細な点に初心者としてはけっこう躓いてしまう。。(なんかやり方あるんでしょうか)
ということで、まあドキュメントが整ってる nalgebra を使うのに気持ちが傾きつつある。実際の描画前にいったん cgmath の型に変換するというのがめんどくさくはあるけど...
追記(2020/08/15)
最近は glam という crate も人気っぽい。Rust 製のゲームエンジン Bevy も glam を使っていた。
で、結局どれを使えばいいの??となるので、mint という crate で相互変換?できるようになってるらしい。が、使い方わからない...