Unityで数値計算ライブラリMath.NET Numericsを使う方法
Math.NETとは行列計算とかできるライブラリらしい。ゲームエンジンであるUnity上で使う用途はあまりないかもしれないが、Win8.1環境で導入できたので手順を以下にメモしとく。
まずNuGetのページでnupackファイルをダウンロードする。
Unityは.NETFrameworkのバージョンが3.5らしいので、Task Parallel Libraryもついでにダウンロードする。
nupackファイルはただのzipファイルらしいので展開する。MathNetはlib/net35に、TaskParallelはlibにあるdllをUnityのAssetsにドラッグ&ドロップする。
二つのdllのInspectorのPlatform settingsをx86_x64, winにする。
スクリプト上では
using MathNet.Numerics;
などを加えて、あとは公式サンプルなど自由にどうぞ。
もっともUnityの関数とは互換性がないので、そこを埋めるには適当に自作する必要はある。
例
var A = Matrix<double>.Build.DenseOfArray(new double[,]
{
{ 3, 2, -1 },
{ 2, -2, 4 },
{ -1, 0.5, -1 }
});
var b = Vector<double>.Build.Dense(new double[] { 1, -2, 0 });
var x = A.Solve(b);
Vector3 t;
t.x = (float)(x.ToArray())[0];
t.y = (float)(x.ToArray())[1];
t.z = (float)(x.ToArray())[2];
Debug.Log( t ); // (1.0, -2.0, -2.0)
他のdllとかも同じように使えそうね。