Exemple #1
0
        static void DrawImageTest(int n)
        {
            Random rand = new Random();

            double[] X = new double[n], Y = new double[n], T = new double[n];
            for (int i = 0; i < n; i++)
            {
                X[i] = rand.NextDouble() * 180;
                Y[i] = rand.NextDouble() * 90;
                T[i] = rand.Next(300);
            }
            IDWC idwc = new IDWC(X, Y, T);

            idwc.CalculateD();
            int    width = 720, height = 360;
            double lon, lat;
            double t;
            Bitmap bitmap;

            Color[]   colors = new Color[] { Color.FromArgb(0, 228, 0), Color.FromArgb(255, 255, 0), Color.FromArgb(255, 126, 0), Color.FromArgb(255, 0, 0), Color.FromArgb(153, 0, 76), Color.FromArgb(126, 0, 35) };
            Stopwatch sw     = new Stopwatch();

            sw.Start();
            for (int a = 0; a < 3; a++)
            {
                sw.Restart();
                bitmap = new Bitmap(width, height);
                for (int i = 0; i < width; i++)
                {
                    lon = i * 0.25;
                    for (int j = 0; j < height; j++)
                    {
                        lat = j * 0.25;
                        t   = Math.Round(idwc.Predict(lon, lat));
                        bitmap.SetPixel(i, j, colors[GetIndex(t)]);
                        //int v = (int)t;
                        //bitmap.SetPixel(i, j, Color.FromArgb(v / 256 / 256, v / 256 % 256, v % 256));
                    }
                }
                bitmap.Save(DateTime.Now.ToString("yyyyMMddHHmmssfff") + ".png");
                bitmap.Dispose();
                sw.Stop();
                System.Console.WriteLine(sw.Elapsed);

                sw.Restart();
                bitmap = new Bitmap(width, height);
                for (int i = 0; i < width; i++)
                {
                    lon = i * 0.25;
                    for (int j = 0; j < height; j++)
                    {
                        lat = j * 0.25;
                        t   = Math.Round(idwc.PredictFixedSearchRadius(lon, lat));
                        bitmap.SetPixel(i, j, colors[GetIndex(t)]);
                        //int v = (int)t;
                        //bitmap.SetPixel(i, j, Color.FromArgb(v / 256 / 256, v / 256 % 256, v % 256));
                    }
                }
                bitmap.Save(DateTime.Now.ToString("yyyyMMddHHmmssfff") + ".png");
                bitmap.Dispose();
                sw.Stop();
                System.Console.WriteLine(sw.Elapsed);
            }
            System.Console.ReadLine();
        }
Exemple #2
0
        /// <summary>
        /// 直接调用VS委托调用(影响不大)
        /// </summary>
        static void DirectlyVSFunction()
        {
            Random rand = new Random();
            int    n    = 500;

            double[] X = new double[n], Y = new double[n], T = new double[n];
            for (int i = 0; i < n; i++)
            {
                X[i] = rand.NextDouble() * 180;
                Y[i] = rand.NextDouble() * 90;
                T[i] = rand.Next(300);
            }
            IDWC   idwc = new IDWC(X, Y, T);
            double t;
            Func <double, double, double> func = idwc.Predict;
            Stopwatch sw = new Stopwatch();

            sw.Start();
            for (int i = 0; i < 720; i++)
            {
                double x = rand.NextDouble() * 180;
                for (int j = 0; j < 360; j++)
                {
                    double y = rand.NextDouble() * 90;
                    t = idwc.Predict(x, y);
                }
            }
            sw.Stop();
            System.Console.WriteLine(sw.Elapsed);
            sw.Restart();
            for (int i = 0; i < 720; i++)
            {
                double x = rand.NextDouble() * 180;
                for (int j = 0; j < 360; j++)
                {
                    double y = rand.NextDouble() * 90;
                    t = func(x, y);
                }
            }
            sw.Stop();
            System.Console.WriteLine(sw.Elapsed);
            sw.Restart();
            for (int i = 0; i < 720; i++)
            {
                double x = rand.NextDouble() * 180;
                for (int j = 0; j < 360; j++)
                {
                    double y = rand.NextDouble() * 90;
                    t = idwc.Predict(x, y);
                }
            }
            sw.Stop();
            System.Console.WriteLine(sw.Elapsed);
            sw.Restart();
            for (int i = 0; i < 720; i++)
            {
                double x = rand.NextDouble() * 180;
                for (int j = 0; j < 360; j++)
                {
                    double y = rand.NextDouble() * 90;
                    t = func(x, y);
                }
            }
            sw.Stop();
            System.Console.WriteLine(sw.Elapsed);
            sw.Restart();
            for (int i = 0; i < 720; i++)
            {
                double x = rand.NextDouble() * 180;
                for (int j = 0; j < 360; j++)
                {
                    double y = rand.NextDouble() * 90;
                    t = idwc.Predict(x, y);
                }
            }
            sw.Stop();
            System.Console.WriteLine(sw.Elapsed);
            sw.Restart();
            for (int i = 0; i < 720; i++)
            {
                double x = rand.NextDouble() * 180;
                for (int j = 0; j < 360; j++)
                {
                    double y = rand.NextDouble() * 90;
                    t = func(x, y);
                }
            }
            sw.Stop();
            System.Console.WriteLine(sw.Elapsed);
            System.Console.ReadLine();
        }