public static double Interpolate(double[] xArray, double[] yArray, double[] zArray, double[][][] f, double x, double y, double z) { int xi = Common.GetIndex(xArray, x); double f0 = Interpolate2D.Interpolate(yArray, zArray, f[xi], y, z); double f1 = Interpolate2D.Interpolate(yArray, zArray, f[xi + 1], y, z); return(Interpolate1D.Interpolate(xArray[xi], xArray[xi + 1], f0, f1, x)); }
private double GetUVWindHelper(double lat, double lon, TableOption para) { var x = (int)(Math.Floor(lat)); var y = (int)(Math.Floor(lon)); // Prevent interpolation using data that is out of range of array. if (x == 90) { x = 89; } if (y == 180) { y = 179; } return(Interpolate2D.Interpolate( new double[] { x, x + 1 }, new double[] { y, y + 1 }, new[] { new[] { GetWindHelper(x, y, para), GetWindHelper(x, y + 1, para) }, new[] { GetWindHelper(x + 1, y, para), GetWindHelper(x + 1, y + 1, para) } }, x, y)); }
public double ValueAt(double lat, double lon) { var x = (int)(Math.Floor(lat)); var y = (int)(Math.Floor(lon)); // Prevent interpolation using data that is out of range of array. if (x == 90) { x = 89; } if (y == 180) { y = 179; } return(Interpolate2D.Interpolate( Arr <double>(x, x + 1), Arr <double>(y, y + 1), Arr( Arr(Helper(x, y), Helper(x, y + 1)), Arr(Helper(x + 1, y), Helper(x + 1, y + 1)) ), x, y)); }
public double ValueAt(double x, double y) { return(Interpolate2D.Interpolate(this.x, this.y, f, x, y)); }