Ejemplo n.º 1
0
        public void Basin()
        {
            Data = new BasinData(HealpixManager, false, false
                                 //       , -7000d
                                 )
            {
                NoIntegrationFinish = true,
                //Visual = basin => basin.WaterHeight
            };

            var p     = HealpixManager.GetP(HealpixManager.Nside - 1, HealpixManager.Nside * 1);
            var basin = Data.PixMan.Pixels[p];

            basin.Depth = -500;
            basin.hOQ   = 10000;

            var framesCountBy2 = 300;

            Data.Cycle(delegate(int step)
            {
                Data.Draw(Bmp, 0, null, YResolution, Scale);
                SaveBitmap(step);
                return(1);
            }, framesCountBy2);
        }
Ejemplo n.º 2
0
        public void AxisChange_Slow()
        {
            Data = new BasinData(HealpixManager, true, false
                                 //, -2000d, 2000d, true
                                 )
            {
                NoIntegrationFinish = true,
            };


            ChangeAxis(
                17,
                500,
                step =>
            {
                switch (K)
                {
                case 7: return(15 + step / 10);
                }
                return(15);
            },
                true,
                () =>
            {
                switch (K)
                {
                case 7: return(60);
                }
                return(10);
            });
        }
Ejemplo n.º 3
0
        public void Hto_Spheric()
        {
            Data = new BasinData(new HealpixManager(2), false, true);

            Data.GradientAndHeightCrosses();
            InitiialHtoRecalc();

            var basin0 = Data.PixMan.Pixels[0];

            // 44 44 40 40
            //Assert.AreEqual(644, basin0.InitialHto[0] / 10000, 1);
            Assert.AreEqual(0, basin0.RadiusLine.Direction.AngleTo(basin0.S_q.Normal).Degrees);

            var basin5 = Data.PixMan.Pixels[5]; // 5,7: 46 42 40 43

            // 14,17: 47 41 40 45
            // 27,31: 47 41 42 42

            ChangeRotation(-HealpixManager.Nside, double.MaxValue);
            Assert.AreEqual(0, basin0.Hto[0]);

            //Data.GradientAndHeightCrosses();
            Assert.AreEqual(0, basin0.Hto[0]);

            BasinDataTests.Cycle(Data);
        }
Ejemplo n.º 4
0
        public void Water_Gradient()
        {
            Data = new BasinData(HealpixManager, false, false //true for sphere
                                 , -200d                      //, 2000d
                                 );

            var p     = HealpixManager.GetP(HealpixManager.Nside - 1, HealpixManager.Nside * 1);
            var basin = Data.PixMan.Pixels[p];

            basin.Delta_g_meridian = -.2;

            p = HealpixManager.GetP(HealpixManager.Nside * 2, HealpixManager.Nside * 2);
            Data.PixMan.Pixels[p].Delta_g_meridian = .2;

            p = HealpixManager.GetP(HealpixManager.Nside * 3, HealpixManager.Nside * 2);
            Data.PixMan.Pixels[p].Delta_g_meridian = .2;

            p = HealpixManager.GetP(HealpixManager.Nside + 5, HealpixManager.Nside * 2);
            Data.PixMan.Pixels[p].Delta_g_traverse = .2;


            var framesCountBy2 = 15;

            Data.Cycle(delegate(int step)
            {
                Data.Draw(Bmp, 0, null, YResolution, Scale);
                Circle(basin);
                SaveBitmap(step);
                return(1);
            }, framesCountBy2);
        }
Ejemplo n.º 5
0
        public void AxisChange_Sharp()
        {
            Data = new BasinData(HealpixManager, true, false
                                 //, -6000d, null
                                 //, -1000d, 5000d, true
                                 )
            {
                NoIntegrationFinish = true,
            };

            ChangeAxis();
        }
Ejemplo n.º 6
0
        public void Water_ChangeAxis()
        {
            Data = new BasinData(HealpixManager, false, false
                                 //, -2600d, 2700d
                                 )
            {
                /*SamePolesAndEquatorGravitation = true,
                 * NoIntegrationFinish = true,
                 * Visual = basin => basin.r - Earth2014Manager.Radius2Add //*/
            };

            ChangeAxis(); // 45, 90
        }
Ejemplo n.º 7
0
        public void RotationStopped()
        {
            Data = new BasinData(HealpixManager, true, false
                                 //, -6000d, null
                                 , -1000d, 5000d, true
                                 )
            {
                SamePolesAndEquatorGravitation = true,
                NoIntegrationFinish            = true,
                //Visual = basin => basin.Depth.Value
                //Visual = basin => basin.r - Earth2014Manager.Radius2Add //*/
            };

            // 1000 does nothing when !SamePolesAndEquatorGravitation
            if (Data.SamePolesAndEquatorGravitation)
            {
                ChangeRotation(-1 - HealpixManager.Nside, -2000);
            }

            var changeSteps = 15;

            var framesCountBy2 = 500;

            Data.Cycle(delegate(int step) //20 for k5
            {
                if (step % changeSteps == 0)
                {
                    double koef;
                    if (step == framesCountBy2 / 3)
                    {
                        koef = double.MaxValue;
                    }
                    else if ((step / changeSteps) % 3 == 3 - 1)
                    {
                        koef = 10000;
                    }
                    else
                    {
                        koef = (K < 8
                            ? (-100 + step / changeSteps
                               * (Data.SamePolesAndEquatorGravitation ? 100 : 2000))
                            : 500);
                    }
                    ChangeRotation(step - HealpixManager.Nside, koef);
                }
                Data.Draw(Bmp, 0, null, YResolution, Scale);
                SaveBitmap(step);
                return(1 + step / 50 * 10);
            }, framesCountBy2);
        }
Ejemplo n.º 8
0
        public void Water_RotationStopped()
        {
            Data = new BasinData(HealpixManager, false, false
                                 // ,-3000d, 3000d
                                 );
            //Data.ColorsMiddle = null;


            ChangeRotation(-HealpixManager.Nside, double.MaxValue);
            var framesCountBy2 = 200;

            Data.Cycle(delegate(int step)
            {
                Data.Draw(Bmp, 0, null, YResolution, Scale);
                SaveBitmap(step);
                return(1);
            }, framesCountBy2);
        }
Ejemplo n.º 9
0
        public void Water_HighBasin()
        {
            Data = new BasinData(HealpixManager, false, true //true for sphere
                                 , -20d                      //, 200d
                                 );

            var h      = 500d;
            var p      = HealpixManager.GetP(HealpixManager.Nside + 5, HealpixManager.Nside * 2);
            var basin3 = Data.PixMan.Pixels[p];

            basin3.hOQ = h;
            Data.PixMan.Pixels[HealpixManager
                               .GetP(HealpixManager.Nside, (int)(HealpixManager.Nside * 2.5))].hOQ = h;

            var framesCountBy2 = 10;

            Data.Cycle(delegate(int step)
            {
                Data.Draw(Bmp, 0, null, YResolution, Scale);
                Circle(basin3);
                SaveBitmap(step);
                return(1); //240 for k8, 150 for k7, 100 for k6
            }, framesCountBy2);
        }