C#の「ポリ調和スプライン」の実装を検索します。私はこのライブラリを見つけただけですAltaxo。私は、ライブラリがnugetを介して利用可能な場所を検索し、ライセンスはapacheまたはmitです。ポリ調和スプラインの実装c#
私のユースケースは、2次元マップ上の定点の平均温度を見つけることです。 (:0、Y:0温度:10°X)
- POSITION1に例えば:50℃)
- POSITION4(X:30 Y:30温度:20℃)
赤い点が計算された値です。
コード例は
using Altaxo.Calc.Interpolation;
using Altaxo.Calc.LinearAlgebra;
using System.Collections.Generic;
using System.Linq;
public class Spline
{
private PolyharmonicSpline _spline;
public Spline()
{
var items = new List<TemperaturePosition>()
{
new TemperaturePosition(0,0,10),
new TemperaturePosition(0,30,100),
new TemperaturePosition(40,0,50),
new TemperaturePosition(30,30,20),
};
var xCoordinates = items.Select(o => o.X).ToArray();
var yCoordinates = items.Select(o => o.Y).ToArray();
var values = items.Select(o => o.Temperature).ToArray();
this._spline = new PolyharmonicSpline();
this._spline.Construct(new DoubleVector(xCoordinates), new DoubleVector(yCoordinates), new DoubleVector(values));
}
public double Calculate(double x, double y)
{
return this._spline.GetInterpolatedValue(x, y);
}
}
public class TemperaturePosition
{
public double X { get; set; }
public double Y { get; set; }
public double Temperature { get; set; }
public TemperaturePosition(double x, double y, double temperature)
{
this.X = x;
this.Y = y;
this.Temperature = temperature;
}
}