« UnityでVisual C#用の数値計算ライブラリMath.NET numericsを使う(4) 高速フーリエ変換(FFT)をしながらそのグラフを3D空間で動かす。 | トップページ | 高周波・RFニュース 2025年1月29日 3GPPがワークプラン更新、Microchipがチップサイズの原子時計発表、QorvoのNTNとRF-FEM解説、EricssonがCognitive Labs開設、Nokiaのドローン記事、Nordicの新PMIC »

2025年1月28日 (火)

UnityでVisual C#用の数値計算ライブラリMath.NET Numericsを使う(5) ルンゲクッタ法でローレンツ方程式を計算して、その軌道通りに球を3D画面で動かし、そこに軌跡が残るようにする。さらにカメラも回転させる。

さて今回はおなじみルンゲクッタ法でローレンツ方程式を解く。

↓をUnityに移植しよう。

 Visual C# (C_sharp)の数学ライブラリ Math.NET Numericsを使う(5) 常微分方程式の数値解法、4段4次のルンゲクッタ法がRungeKutta.FourthOrderの一文でできる。ローレンツ方程式を例としてやってみる。

Sphereを作って、そこにこのコードをアタッチする。


using UnityEngine;
using MathNet.Numerics;
using MathNet.Numerics.OdeSolvers;
using MathNet.Numerics.LinearAlgebra;
using System;

public class MathNET05 : MonoBehaviour
{
    double[] t;
    Vector<double>[] x;
    int n;
    int flame;

    void Start()
    {
        double dt = 0.01;
        double tmax = 200.0;
        n = Convert.ToInt32(tmax / dt);
        flame = 1;

        t = Generate.LinearSpaced(n, 0.0, tmax);
        var x0 = Vector<double>.Build.DenseOfArray(new double[] { 1.0, 1.0, 1.0 });
        x = RungeKutta.FourthOrder(x0, 0.0, tmax, n, Lorenz);

    }



    void Update()
    {
        float dx = (float)x[flame][0] - (float)x[flame - 1][0];
        float dy = (float)x[flame][1] - (float)x[flame - 1][1];
        float dz = (float)x[flame][2] - (float)x[flame - 1][2];
        transform.Translate(dx, dy, dz);
        if (flame > n)
        {
            flame = 1;
        } else {
            flame += 1;
        }


    }

    Vector<double> Lorenz(double t, Vector<double> x)
    {
        double s = 10.0, r = 28.0, b = 8.0 / 3.0;

        double x_dot = s * (x[1] - x[0]);
        double y_dot = r * x[0] - x[1] - x[0] * x[2];
        double z_dot = x[0] * x[1] - b * x[2];

        return Vector<double>.Build.DenseOfArray(new double[] { x_dot, y_dot, z_dot });
    }
}

そこにTrail Rendererで軌跡を加える。だんだん消えるようにする。そうしてできたものは…

そう、こういうのがやりたくてUnity触っていたのだった。

さらにカメラを回転させると?

さすがUnity、こんなことが簡単にできる。

« UnityでVisual C#用の数値計算ライブラリMath.NET numericsを使う(4) 高速フーリエ変換(FFT)をしながらそのグラフを3D空間で動かす。 | トップページ | 高周波・RFニュース 2025年1月29日 3GPPがワークプラン更新、Microchipがチップサイズの原子時計発表、QorvoのNTNとRF-FEM解説、EricssonがCognitive Labs開設、Nokiaのドローン記事、Nordicの新PMIC »

パソコン・インターネット」カテゴリの記事

学問・資格」カテゴリの記事

日記・コラム・つぶやき」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

« UnityでVisual C#用の数値計算ライブラリMath.NET numericsを使う(4) 高速フーリエ変換(FFT)をしながらそのグラフを3D空間で動かす。 | トップページ | 高周波・RFニュース 2025年1月29日 3GPPがワークプラン更新、Microchipがチップサイズの原子時計発表、QorvoのNTNとRF-FEM解説、EricssonがCognitive Labs開設、Nokiaのドローン記事、Nordicの新PMIC »

最近の記事

最近のコメント

2025年2月
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28  
フォト
無料ブログはココログ