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));
        }
Exemple #2
0
        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));
        }
Exemple #3
0
        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));
        }
Exemple #4
0
 public double ValueAt(double x, double y)
 {
     return(Interpolate2D.Interpolate(this.x, this.y, f, x, y));
 }