UnityでVisual C#用の数値計算ライブラリMath.NET Numericsを使う(6) ルンゲクッタ法でAizawa Atractorを計算して、その軌道通りに球を3D画面で動かし、そこに軌跡が残るようにする。さらにカメラも回転させる。
さて前回はルンゲクッタ法でローレンツ方程式を描いて動かしてみた。
今回はAizawa Atractorを産む方程式でやってみよう。
dx/dt = (z-b)*x - d*y
dy/dt = d*x+(z-b)*y
dz/dt = c+a*z-(z^3)/3 - (x^2 +y^2)*(1+e*z)+f*z*x^3
https://analog-ontology.blogspot.com/2015/06/the-aizawa-attractor-iv.html
前回と違うのは関数だけ。
Vector<double>Aizawa(double t, Vector<double> x) { double a = 0.95, b = 0.7, c = 0.6, d = 3.5, e = 0.25, f = 0.1; double x_dot = (x[2] - b) * x[0] - d * x[1]; double y_dot = d * x[0] + (x[2] - b) * x[1]; double z_dot = c + a * x[2] - (x[2] * x[2] * x[2]) / 3 - (x[0] * x[0] + x[1] * x[1]) * (1 + e * x[2]) + f * x[2] * x[0] * x[0] * x[0]; return Vector<double>.Build.DenseOfArray(new double[] { x_dot, y_dot, z_dot }); } |
やってみた結果の動画。カメラも回っている。
計算できてそうだ。ちょっと微分方程式を計算するシリーズやってみようかな。
最近のコメント