Пример #1
0
 public void AnyModificationofGetAltitude()
 {
     Data = new MeridianWater <MeridianCoorFast>(HealpixManager);
     Data.Cycle(delegate(int step)
     {
         Data.Draw(Bmp, step);
         return(1);
     });
 }
Пример #2
0
        public void Water_RotationStopping()
        {
            Data = new MeridianWater <MeridianCoor>(HealpixManager); //-3690d, 4185d);
            Data.Cycle(delegate(int step)
            {
                Data.Draw(Bmp, step);

                if (step % HealpixManager.Nside / 4 == 0) //(îò 23,9 ÷àñîâ äî 26,7), è â ñåðåäèíå âðåìåíè äî 46,2 ÷àñîâ
                {
                    ChangeRotation(step);
                }
                return(110); // 1100 for k9
            });
        }
Пример #3
0
        public void HighLowBasin()
        {
            var h = 500d;

            Data = new MeridianWater <MeridianCoor>(HealpixManager, -h, h);
            Data.PixMan.Pixels[HealpixManager.RingsCount / 4 + 1].hOQ     = -h;
            Data.PixMan.Pixels[HealpixManager.RingsCount / 4 + 2].hOQ     = -h;
            Data.PixMan.Pixels[HealpixManager.RingsCount * 3 / 4 + 1].hOQ = h;
            Data.PixMan.Pixels[HealpixManager.RingsCount * 3 / 4 + 2].hOQ = h;
            Data.ColorsMiddle = 50;
            Data.Cycle(delegate(int step)
            {
                Data.Draw(Bmp, step);
                return(1);
            });
        }
Пример #4
0
        public void Water_RotationStopped()
        {
            Data = new MeridianWater <MeridianCoor>(HealpixManager); //-5032d, 5685d);//integration not finished on 500, run again!
            ChangeRotation(-HealpixManager.Nside, double.MaxValue);  // Ellipsoid.SiderealDayInSeconds*1000);

            //must be 10.69km
            // for k5 is 10.94, k6 10.93, k7 10.9, k8 10.72
            Data.Cycle(delegate(int step)
            {
                Data.Draw(Bmp, step);

                var times = 0;
                if (step - times < -HealpixManager.Nside) //// how many times to call ChangeRotation at the beginning
                {
                    ChangeRotation(step, 80000);
                }
                return(700); // 700 for k7
            });
        }
Пример #5
0
        private MeridianWater <MeridianCoor> GetData(
            bool fullMeridian     = false,
            bool excite           = false,
            BottomForm bottomForm = BottomForm.No)
        {
            var man = new HealpixManager(9); //2 is good too

            northBasin = man.GetCenter <MeridianCoor>(0);
            basin      = man.GetCenter <MeridianCoor>(4);
            southBasin = man.GetCenter <MeridianCoor>(12);
            var pix = fullMeridian
                      // -.=.=.-
                ? new[] { northBasin, basin, southBasin }
            // -.=.-
                : new[] { northBasin, basin };

            var data = new MeridianWater <MeridianCoor>(man, pix, false);

            data.GradientAndHeightCrosses();
            if (excite)
            {
                //data.Water.Move()
                basin.hOQ = HeightExcitement;
                data.GradientAndHeightCrosses();
            }
            switch (bottomForm)
            {
            case BottomForm.Shallow:
                foreach (var t in pix)
                {
                    t.Depth = 0;
                }
                break;

            case BottomForm.InDepth:
                foreach (var t in pix)
                {
                    t.Depth = HeightExcitement;
                }
                break;

            case BottomForm.BasinExcited:
                foreach (var t in pix)
                {
                    t.Depth = t == basin
                            ? -HeightExcitement
                            : HeightExcitement;
                }
                break;

            case BottomForm.BasinInDepth:
                foreach (var t in pix)
                {
                    t.Depth = t == basin ? HeightExcitement : 0;
                }
                break;

            case BottomForm.ShallowSouth:
                foreach (var t in pix)
                {
                    t.Depth = t == southBasin ? 0 : HeightExcitement;
                }
                break;

            case BottomForm.NorthBasinInDepth:
                northBasin.Depth = HeightExcitement;
                basin.Depth      = -HeightExcitement;
                southBasin.Depth = 0;
                break;

            case BottomForm.ReliefLikeWater:
                foreach (var t in pix)
                {
                    t.Depth = (int)-t.hOQ;
                }
                break;
            }
            return(data);
        }