UnityでVisual C#用の数値計算ライブラリMath.NET numericsを使う(3) 3D画面に補間(Interpolate) を行って表示する。リニア、3次スプライン、有理関数などいろいろ使える。
今回は
Visual C# (C_sharp)の数学ライブラリ Math.NET Numericsを使う(2) 補間を行う(Interpolate) リニア、3次スプライン、有理関数などいろいろ使える。
でやったことをUnityでもやってみる。
計算部分は同じだが、線を引くのはLineRendererを使い、点を打つのはSphereのPrefabを使っている。なのでこっちの方が簡単。
コードはこんな感じ。MathNET.numericsは倍精度しかないメソッドが多いがUnityは単精度なので線を描くときに明示的に変換している。
using UnityEngine;
using MathNet.Numerics;
using System;
public class MathNET : MonoBehaviour
{
public GameObject PointsPrefab;
void Start()
{
// 有理関数補間用
GameObject linesObject = GameObject.Find("Lines");
LineRenderer lines = linesObject.GetComponent<LineRenderer>();
// 線形補間用
GameObject linesObject2 = GameObject.Find("Lines2");
LineRenderer lines2 = linesObject2.GetComponent<LineRenderer>();
int n = 50, // 補間後
m = 10; // 元々の点数
Vector3[] points = new Vector3[n];
Vector3[] points2 = new Vector3[n];
lines.positionCount = n;
lines.widthMultiplier = 0.02f;
lines.startColor = Color.blue;
lines.endColor = Color.blue;
lines2.positionCount = n;
lines2.widthMultiplier = 0.02f;
lines2.startColor = Color.red;
lines2.endColor = Color.red;
double[] x = Generate.LinearSpaced(m, 0.0, 2.0 * Math.PI);
double[] y = Generate.Map(x, Math.Sin);
var InterpFunction = Interpolate.RationalWithoutPoles(x, y);
var InterpFunction2 = Interpolate.Linear(x, y);
double[] xval = Generate.LinearSpaced(n, 0.0, 2.0 * Math.PI);
double[] yinterp = new double[xval.Length];
double[] yinterp2 = new double[xval.Length];
for (int i = 0; i < xval.Length; i++)
{
yinterp[i] = InterpFunction.Interpolate(xval[i]);
yinterp2[i] = InterpFunction2.Interpolate(xval[i]);
points[i] = new Vector3((float)xval[i], (float)yinterp[i], 0);
points2[i] = new Vector3((float)xval[i], (float)yinterp2[i], 0);
}
for (int i = 0; i < m; i++) {
GameObject originalpoint = Instantiate(PointsPrefab);
originalpoint.transform.position = new Vector3((float)x[i], (float)y[i], 0);
}
lines.SetPositions(points);
lines2.SetPositions(points2);
}
}
|
結果はこちら。なかなかシュールな絵柄。
« 高周波・RFニュース 2025年1月23日 5G Americasの新ホワイトペーパー「AI時代のセルラーネットワークの信頼性とセキュリティ」、KyoceraAVXの新薄膜フィルタ、TDKの車載/一般用C0G特性1,250V 3225サイズMLCC、Semtechの5G LPWAモジュール | トップページ | 歌川国芳展 ―奇才絵師の魔力@大阪中之島美術館へ行ってきた。今にも動き出しそうなかっこいいものから、恐ろしい怪物、かわいい動物(特に猫)やその擬人化、見て笑えるもの、複数の人間で顔を表現したものなど一人の人間が生み出したとは思えないほどバラエティーに富んでる。 »
「パソコン・インターネット」カテゴリの記事
「学問・資格」カテゴリの記事
- 高周波・RFニュース 2025年12月13日 5G Americasが米国の5G普及率99%と発表、ZTEが800G Metro Transport Network (MTN) 標準化主導、NordicのnRF9151モジュールがSkylo認証取得、不完全なViaの電気特性解説、QualcommがRISC-VのVentana Micro Systems買収など(2025.12.13)
- 高周波・RFニュース 2025年12月12日 iFixitが水冷スマホRedMagic 11 Proを分解、Qorvoがロボット向けの技術を紹介、SamsungとKTが6Gに向けAI-RANを実証、NordicがnRF9151向けソフトと開発キット発表、Taoglasが6G向けアンテナ設計解説など(2025.12.12)
- 高周波・RFニュース 2025年12月11日 Qualcommが6Gに向けたOBBB法解説、GSMAが欧州のスペクトラム価格についての報告、Menlo Microが防衛向けに高スタンドオフ保護ミリ波スイッチ発表、京セラとローデ&シュワルツがCES2026でミリ波PAAMデモ、iFIxitのスマホアプリ(2025.12.11)
- 高周波・RFニュース 2025年12月10日 Sivers semiconductorとDigiKeyがパートナーシップ締結、u-bloxが車載Bluetothモジュール発表、TDKが車載パワーインダクタ発表、世界の6GHz Wi-Fi普及状況解説(2025.12.10)
「日記・コラム・つぶやき」カテゴリの記事
- 高周波・RFニュース 2025年12月13日 5G Americasが米国の5G普及率99%と発表、ZTEが800G Metro Transport Network (MTN) 標準化主導、NordicのnRF9151モジュールがSkylo認証取得、不完全なViaの電気特性解説、QualcommがRISC-VのVentana Micro Systems買収など(2025.12.13)
- 高周波・RFニュース 2025年12月12日 iFixitが水冷スマホRedMagic 11 Proを分解、Qorvoがロボット向けの技術を紹介、SamsungとKTが6Gに向けAI-RANを実証、NordicがnRF9151向けソフトと開発キット発表、Taoglasが6G向けアンテナ設計解説など(2025.12.12)
- 高周波・RFニュース 2025年12月11日 Qualcommが6Gに向けたOBBB法解説、GSMAが欧州のスペクトラム価格についての報告、Menlo Microが防衛向けに高スタンドオフ保護ミリ波スイッチ発表、京セラとローデ&シュワルツがCES2026でミリ波PAAMデモ、iFIxitのスマホアプリ(2025.12.11)
- Google ColabでAPIキーなしにAIモデル(Gemini 2.5 flashなど)が使えるようになっていた。早速電子レンジの動作原理について聞いてみる。正しく2.45GHzは水分子の共振周波数ではない、と答えられた。(2025.12.10)
- 高周波・RFニュース 2025年12月10日 Sivers semiconductorとDigiKeyがパートナーシップ締結、u-bloxが車載Bluetothモジュール発表、TDKが車載パワーインダクタ発表、世界の6GHz Wi-Fi普及状況解説(2025.12.10)
« 高周波・RFニュース 2025年1月23日 5G Americasの新ホワイトペーパー「AI時代のセルラーネットワークの信頼性とセキュリティ」、KyoceraAVXの新薄膜フィルタ、TDKの車載/一般用C0G特性1,250V 3225サイズMLCC、Semtechの5G LPWAモジュール | トップページ | 歌川国芳展 ―奇才絵師の魔力@大阪中之島美術館へ行ってきた。今にも動き出しそうなかっこいいものから、恐ろしい怪物、かわいい動物(特に猫)やその擬人化、見て笑えるもの、複数の人間で顔を表現したものなど一人の人間が生み出したとは思えないほどバラエティーに富んでる。 »



コメント