ベクトルのクラスってみなさん作ってますけど私にとって決定的なものが無いので私も作る。まあようするに for ループで x,y,z を回したいというのと、値コピーしたい、という欲求が叶えば良い。前者は union を使えば良く、後者は struct を使えば良い。
http://shinh.skr.jp/d/vector.d
使い方は unittest部分を見て下さい。 foreach ができたりまあそれなり。ループ中で += とかが、
Vec3 v1, v2; for (int i = 0; i < 3; i++) { v1._[i] += v2[i]; }
となってしまうのが少しいやなところ。 opIndex を左辺値として扱うことはサポートされてません、って書いてあるということはいずれなんとかしてくれるんだろう。たぶん現状ではなんともならない、よね。まあ foreach (inout ... を使えば良いことが多い。あと、コンストラクタが無いから、 Vec3.create とタイプするのは少し長くていやだ。 Vec という global 関数で誤魔化すことに…