UnityでVisual C#用の数値計算ライブラリMath.NET Numericsを使う(番外編) ピタゴラスの三体問題をPythonのルンゲクッタ8次の適応刻み幅を持つDOP853でデータを作ってCSVファイルにし、Unityでボールの軌跡を描きながら3Dで動かす。カメラも回転させる。
今回はピタゴラスの三体問題。これは刻み幅を自動で変えて精度を出すようなルンゲクッタ法じゃないと無茶苦茶になる。残念ながらMath.NET Numericsは普通の4段4次のルンゲクッタ法しかないのでダメ…
じゃあPythonで計算してCSVファイルを読み込むか、ということでやってみる。Pythonについてはこちら。
Python+Scipyでルンゲクッタ8次のDOP853(Dormand Prince)を使う(その5) ピタゴラスの三体問題を計算する。rtolとatolを設定しないと無茶苦茶になる。
UnityでCSVファイルを読み込むのはこちらを参考にしました。
https://note.com/macgyverthink/n/n83943f3bad60
コードはこんな感じ。ただCSV読んで、ボール3つの座標に割り当てているだけ。
using UnityEngine;
using System;
using System.Collections.Generic;
using System.IO;
using UnityEngine.Rendering;
public class CsvReader : MonoBehaviour
{
List<float> x1 = new List<float>();
List<float> x2 = new List<float>();
List<float> x3 = new List<float>();
List<float> y1 = new List<float>();
List<float> y2 = new List<float>();
List<float> y3 = new List<float>();
int n;
int count;
GameObject Ball1;
GameObject Ball2;
GameObject Ball3;
// Start is called once before the first execution of Update after the MonoBehaviour is created
void Start()
{
TextAsset csvFile;
List<string[]> csvDatas = new List<string[]>(); csvFile = Resources.Load("3body") as TextAsset; // Resouces下のCSV読み込み
StringReader reader = new StringReader(csvFile.text);
Ball1 = GameObject.Find("Ball1");
Ball2 = GameObject.Find("Ball2");
Ball3 = GameObject.Find("Ball3");
while (reader.Peek() != -1)
{
string line = reader.ReadLine();
csvDatas.Add(line.Split(','));
}
n = csvDatas.Count;
count = 0;
for (int i = 0; i < n; i++)
{
x1.Add(Convert.ToSingle(csvDatas[i][0]));
y1.Add(Convert.ToSingle(csvDatas[i][2]));
x2.Add(Convert.ToSingle(csvDatas[i][4]));
y2.Add(Convert.ToSingle(csvDatas[i][6]));
x3.Add(Convert.ToSingle(csvDatas[i][8]));
y3.Add(Convert.ToSingle(csvDatas[i][10]));
}
}
// Update is called once per frame
void Update()
{
if (count > n)
{
count = 0;
}
Ball1.transform.position = new Vector3(x1[count], y1[count], 0f);
Ball2.transform.position = new Vector3(x2[count], y2[count], 0f);
Ball3.transform.position = new Vector3(x3[count], y3[count], 0f);
count++;
}
}
|
結果の動画はこちら。
カメラを回してみた。
なかなかかっこいい動きをしている。次回からはまたMath.NET Numericsに戻る予定。
« 高周波・RFニュース 2025年2月12日 GSAが5G standaloneウェビナー開催、CTIAと5G americasがケーブルに対抗してSpectrum for Broadband Competitionで連携、NXPがエッジAIのKinaraを買収、PBKreviewsがSamsung Galaxy S25/plus/ultra全部分解していて5Gミリ波AiPは全部1個 | トップページ | 高周波・RFニュース 2025年2月13日 iFixitがSamsung Galaxy S25 ultraを分解、ぐりぐり回せる3D CTモデルに、Spirentの5G Outlook レポート、QualcommのオンデバイスAIホワイトペーパー、InfineonがCoolSiC™ MOSFETs 650 Vの Q-DPAKとTOLLパッケージで発表 »
「パソコン・インターネット」カテゴリの記事
- GLM-5.1(Ollamaから利用)でPythonのscikit-rfを使ってTouchstoneフォーマットのSパラメータファイルを読んでdB, 位相, スミスチャート, TDRを表示するGUIアプリを作ってもらった。5分など長く考えた後、Gemma 4:31bよりさらに出来が良く、思った通りのものができた。(2026.04.09)
- Claude CodeでGemma 4:26b(Ollama経由, 31bは遅すぎ、e4bはプランモードに入れない)を使ってPythonのscikit-rfを使ってTouchstoneフォーマットのSパラメータファイルを読んでdB, 位相, スミスチャート, TDRを表示するGUIアプリを作ってもらった。(2026.04.07)
「学問・資格」カテゴリの記事
- GLM-5.1(Ollamaから利用)でPythonのscikit-rfを使ってTouchstoneフォーマットのSパラメータファイルを読んでdB, 位相, スミスチャート, TDRを表示するGUIアプリを作ってもらった。5分など長く考えた後、Gemma 4:31bよりさらに出来が良く、思った通りのものができた。(2026.04.09)
- 高周波・RFニュース 2026年4月9日 QorvoがXバンドフェイズドアレイレーダ解説、atisがニューロシンボリックコグニティブアシスタントNESYのホワイトペーパー発行、Mini-CircuitsがADSを使ったアンプシミュレーション解説、Vishayがウィルキンソンデバイダ・コンバイナ発表(2026.04.09)
- 高周波・RFニュース 2026年4月8日 BroadcomがOFC2026での出展(200T AI時代)を解説、QualcommがMWCバルセロナ2026でのAIネイティブ6Gについて解説、iFixitがApple AirPods Max 2を分解、TDKが5GHz対応ノイズサプレッションフィルタ発表(2026.04.08)
「日記・コラム・つぶやき」カテゴリの記事
- GLM-5.1(Ollamaから利用)でPythonのscikit-rfを使ってTouchstoneフォーマットのSパラメータファイルを読んでdB, 位相, スミスチャート, TDRを表示するGUIアプリを作ってもらった。5分など長く考えた後、Gemma 4:31bよりさらに出来が良く、思った通りのものができた。(2026.04.09)
- 高周波・RFニュース 2026年4月9日 QorvoがXバンドフェイズドアレイレーダ解説、atisがニューロシンボリックコグニティブアシスタントNESYのホワイトペーパー発行、Mini-CircuitsがADSを使ったアンプシミュレーション解説、Vishayがウィルキンソンデバイダ・コンバイナ発表(2026.04.09)
- 高周波・RFニュース 2026年4月8日 BroadcomがOFC2026での出展(200T AI時代)を解説、QualcommがMWCバルセロナ2026でのAIネイティブ6Gについて解説、iFixitがApple AirPods Max 2を分解、TDKが5GHz対応ノイズサプレッションフィルタ発表(2026.04.08)
« 高周波・RFニュース 2025年2月12日 GSAが5G standaloneウェビナー開催、CTIAと5G americasがケーブルに対抗してSpectrum for Broadband Competitionで連携、NXPがエッジAIのKinaraを買収、PBKreviewsがSamsung Galaxy S25/plus/ultra全部分解していて5Gミリ波AiPは全部1個 | トップページ | 高周波・RFニュース 2025年2月13日 iFixitがSamsung Galaxy S25 ultraを分解、ぐりぐり回せる3D CTモデルに、Spirentの5G Outlook レポート、QualcommのオンデバイスAIホワイトペーパー、InfineonがCoolSiC™ MOSFETs 650 Vの Q-DPAKとTOLLパッケージで発表 »


コメント