public void AbsoluteDistanceTo_Metric() { var man = new HealpixManager(0); var basin = man.GetCenter <Basin3>(0); Assert.AreEqual(0, basin.Intersect(basin)); Assert.AreEqual(0, basin.S_q.AbsoluteDistanceTo(basin.Q3)); var toBasin = man.GetCenter <Basin3>(1); var from0to1 = basin.S_q.AbsoluteDistanceTo(toBasin.Q3); var from1to0 = toBasin.S_q.AbsoluteDistanceTo(basin.Q3); Assert.AreEqual(from1to0, from0to1, 1); basin = man.GetCenter <Basin3>(4); toBasin = man.GetCenter <Basin3>(7); Assert.AreEqual( basin.S_q.AbsoluteDistanceTo(toBasin.Q3), toBasin.S_q.AbsoluteDistanceTo(basin.Q3), .0001); man = new HealpixManager(1); basin = man.GetCenter <Basin3>(0); toBasin = man.GetCenter <Basin3>(4); // basin.SetKQQaxis(0, man); // toBasin.SetKQQaxis(0, man); Assert.AreEqual( basin.S_q.AbsoluteDistanceTo(toBasin.Q3), toBasin.S_q.AbsoluteDistanceTo(basin.Q3), 1100); //// .0001 better }
private static void TestAll(HealpixManager man) { for (int p = 0; p < man.Npix; p++) { Assert.AreEqual( p, man.GetCenter <HealCoor>(man.GetCenter <HealCoor>(p).Symmetric(man).P).Symmetric(man).P); } }
public void SetUp() { var man = new HealpixManager(2); basin0 = man.GetCenter <Basin3>(0); basin7 = man.GetCenter <Basin3>(7); basin31 = man.GetCenter <Basin3>(31); basin77 = man.GetCenter <Basin3>(77); basin95 = man.GetCenter <Basin3>(95); }
public void GetCenter_5() { var man = new HealpixManager(5); for (int p = 24; p < 24 + man.PixelsCountInRing(4); p++) { Assert.AreEqual(4, man.GetCenter(p).Ring); Assert.AreEqual(84.15, man.GetCenter(p).Y, .001); } Assert.AreEqual(3, man.GetCenter(18).Ring); }
public WaterAndBottomData(HealpixManager man, double?min = null, double?max = null) : base(man, min, max) { ColorsMiddle = 0; var p = 0; for (var ring = 1; ring <= MaxRing; ring++) { var basin = PixMan.Pixels[ring - 1]; var waterHeightAll = 0d; var surfaceHeightAll = 0d; var pixelsInRing = HealpixManager.PixelsCountInRing(ring); for (var inRing = 1; inRing < pixelsInRing; inRing++, p++) { var coor = HealpixManager.GetCenter <HealCoor>(p); int waterHeight; surfaceHeightAll += GetHeights(coor, (int)basin.rOfEllipse, out waterHeight); waterHeightAll += waterHeight; } if (waterHeightAll > 0) { basin.hOQ = 0; basin.Depth = waterHeightAll / pixelsInRing; } else { basin.hOQ = surfaceHeightAll / pixelsInRing; basin.Depth = -surfaceHeightAll / pixelsInRing; } } CheckOcean(); }
public static void DoWork() { var man = new HealpixManager(2); var world = new World(man); using (var reliefSur = new Earth2014Manager(ReliefType.Sur)) { using (var reliefBed = new Earth2014Manager(ReliefType.Bed)) { using (var reliefIce = new Earth2014Manager(ReliefType.Ice)) { for (var p = 0; p < man.Npix; p++) { var coor = man.GetCenter(p); var surface = reliefSur.GetAltitude(coor); var bed = reliefBed.GetAltitude(coor); var relativeHeight = bed - surface; if (relativeHeight != 0) { // water or ice var ice = reliefIce.GetAltitude(coor); if (ice == 0) { // lakes in ice are ignored world.AddWater(coor, bed, surface); } } } } } } }
internal override void PreInit(HealpixManager man) { base.PreInit(man); var northRingPixel = man.GetCenter(Math.Max(1, P - PixelInRing)); lQn2 = (Beta.Value - northRingPixel.Beta.Value) * rOfEllipse / 2; }
public void Symmetric() { var man = new HealpixManager(0); var basin = man.GetCenter <HealCoor>(0); Assert.AreEqual(9, basin.Symmetric(man).P); Assert.AreEqual(7, man.GetCenter <HealCoor>(5).Symmetric(man).P); Assert.AreEqual(4, man.GetCenter <HealCoor>(4).Symmetric(man).P); Assert.AreEqual(5, man.GetCenter <HealCoor>(7).Symmetric(man).P); Assert.AreEqual(6, man.GetCenter <HealCoor>(6).Symmetric(man).P); TestAll(man); TestAll(new HealpixManager(1)); TestAll(new HealpixManager(2)); TestAll(new HealpixManager(3)); TestAll(new HealpixManager(4)); }
private static T[] GetBasins(HealpixManager man) { var pix = new List <T>(); T last; for (var south = man.Npix - 3; south > 0; south = man.Neibors.NorthMean(last)) { last = man.GetCenter <T>(south); pix.Add(last); } pix.Reverse(); //GetAltitude looks for northbasin return(pix.ToArray()); }
public PixelsManager(HealpixManager healpixManager, T[] pix = null) { HealpixManager = healpixManager; if (pix == null) { Pixels = new T[healpixManager.Npix]; for (var p = 0; p < healpixManager.Npix; p++) { Pixels[p] = healpixManager.GetCenter <T>(p); } } else { Pixels = pix; } }
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); }
private HealpixManager healpixManager; /*very temp*/ public Basin3 Center(int p) { return(healpixManager.GetCenter <Basin3>(p)); }
public void GetCenter_2() { var man = new HealpixManager(2); Assert.AreEqual(135, man.GetCenter(0).X); Assert.AreEqual(22.5, man.GetCenter(7).X); Assert.AreEqual(3, man.GetCenter(18).Ring); Assert.AreEqual(15, man.GetCenter(17).X, .0000001); Assert.AreEqual(-15, man.GetCenter(18).X, .0000001); Assert.AreEqual(4, man.GetCenter(29).Ring); Assert.AreEqual(11.25, man.GetCenter(31).X, .0000001); Assert.AreEqual(-11.25, man.GetCenter(32).X, .0000001); Assert.AreEqual(5, man.GetCenter(47).Ring); Assert.AreEqual(0, man.GetCenter(47).X); Assert.AreEqual(null, man.GetCenter(47).NorthCap); Assert.AreEqual(11.25, man.GetCenter(63).X, .00001); Assert.AreEqual(-11.25, man.GetCenter(64).X, .00001); Assert.AreEqual(0, man.GetCenter(79).X); Assert.AreEqual(-180, man.GetCenter(87).X); Assert.AreEqual(168.75, man.GetCenter(88).X); Assert.AreEqual(0, man.GetCenter(88).Y); Assert.AreEqual(11.25, man.GetCenter(95).X, .00001); Assert.AreEqual(-168.75, man.GetCenter(103).X); Assert.AreEqual(0, man.GetCenter(111).X); Assert.AreEqual(-180, man.GetCenter(119).X); Assert.AreEqual(168.75, man.GetCenter(120).X); Assert.AreEqual(11.25, man.GetCenter(127).X, .00001); Assert.AreEqual(-11.25, man.GetCenter(128).X, .00001); Assert.AreEqual(10, man.GetCenter(135).Ring); Assert.AreEqual(-168.75, man.GetCenter(135).X); Assert.AreEqual(157.5, man.GetCenter(136).X); Assert.AreEqual(135, man.GetCenter(137).X); Assert.AreEqual(0, man.GetCenter(143).X); Assert.AreEqual(11, man.GetCenter(151).Ring); Assert.AreEqual(-180, man.GetCenter(151).X); Assert.AreEqual(false, man.GetCenter(152).NorthCap); Assert.AreEqual(12, man.GetCenter(152).Ring); Assert.AreEqual(168.75, man.GetCenter(152).X); Assert.AreEqual(11.25, man.GetCenter(159).X, .00001); Assert.AreEqual(-168.75, man.GetCenter(167).X); Assert.AreEqual(13, man.GetCenter(168).Ring); Assert.AreEqual(165, man.GetCenter(168).X); Assert.AreEqual(14, man.GetCenter(187).Ring); Assert.AreEqual(157.5, man.GetCenter(180).X, .00001); Assert.AreEqual(-112.5, man.GetCenter(186).X, .00001); Assert.AreEqual(-157.5, man.GetCenter(187).X, .00001); Assert.AreEqual(15, man.GetCenter(188).Ring); Assert.AreEqual(135, man.GetCenter(188).X, .00001); }
public void GetCenter_1() { var man = new HealpixManager(1); Assert.AreEqual(135, man.GetCenter(0).X); Assert.AreEqual(66.44, man.GetCenter(0).Y, .01); Assert.AreEqual(1, man.GetCenter(0).Ring); Assert.AreEqual(157.5, man.GetCenter(4).X); Assert.AreEqual(L41, man.GetCenter(4).Y, .01); Assert.AreEqual(2, man.GetCenter(4).Ring); Assert.AreEqual(67.5, man.GetCenter(6).X); Assert.AreEqual(-22.5, man.GetCenter(8).X, .00001); Assert.AreEqual(135, man.GetCenter(12).X); Assert.AreEqual(19.47, man.GetCenter(12).Y, .01); Assert.AreEqual(3, man.GetCenter(12).Ring); Assert.AreEqual(90, man.GetCenter(13).X); Assert.AreEqual(45, man.GetCenter(14).X); Assert.AreEqual(0, man.GetCenter(15).X); Assert.AreEqual(-45, man.GetCenter(16).X); Assert.AreEqual(-135, man.GetCenter(18).X); Assert.AreEqual(-180, man.GetCenter(19).X); Assert.AreEqual(157.5, man.GetCenter(20).X); Assert.AreEqual(0, man.GetCenter(20).Y); Assert.AreEqual(4, man.GetCenter(20).Ring); Assert.AreEqual(112.5, man.GetCenter(21).X); Assert.AreEqual(67.5, man.GetCenter(22).X); Assert.AreEqual(22.5, man.GetCenter(23).X); Assert.AreEqual(-22.5, man.GetCenter(24).X, .1); Assert.AreEqual(-67.5, man.GetCenter(25).X, .1); Assert.AreEqual(-112.5, man.GetCenter(26).X, .1); Assert.AreEqual(-157.5, man.GetCenter(27).X, .1); Assert.AreEqual(4, man.GetCenter(27).Ring); Assert.AreEqual(135, man.GetCenter(28).X); Assert.AreEqual(-19.47, man.GetCenter(28).Y, .01); Assert.AreEqual(5, man.GetCenter(28).Ring); Assert.AreEqual(45, man.GetCenter(30).X); Assert.AreEqual(0, man.GetCenter(31).X); Assert.AreEqual(-180, man.GetCenter(35).X); Assert.AreEqual(null, man.GetCenter(35).NorthCap); Assert.AreEqual(false, man.GetCenter(36).NorthCap); Assert.AreEqual(157.5, man.GetCenter(36).X); Assert.AreEqual(-L41, man.GetCenter(36).Y, .01); Assert.AreEqual(6, man.GetCenter(36).Ring); Assert.AreEqual(112.5, man.GetCenter(37).X); Assert.AreEqual(22.5, man.GetCenter(39).X); Assert.AreEqual(-22.5, man.GetCenter(40).X, .0000001); Assert.AreEqual(-112.5, man.GetCenter(42).X, .00000001); Assert.AreEqual(-157.5, man.GetCenter(43).X, .00000001); Assert.AreEqual(135, man.GetCenter(44).X); Assert.AreEqual(-66.44, man.GetCenter(44).Y, .01); Assert.AreEqual(7, man.GetCenter(44).Ring); Assert.AreEqual(45, man.GetCenter(45).X); Assert.AreEqual(-135, man.GetCenter(47).X); }
public void GetCenter_0() { var man = new HealpixManager(0); Assert.AreEqual(135, man.GetCenter(0).X); Assert.AreEqual(L41, man.GetCenter(0).Y, .01); Assert.AreEqual(45, man.GetCenter(1).X); Assert.AreEqual(L41, man.GetCenter(1).Y, .01); Assert.AreEqual(-45, man.GetCenter(2).X); Assert.AreEqual(L41, man.GetCenter(2).Y, .01); Assert.AreEqual(-135, man.GetCenter(3).X); Assert.AreEqual(L41, man.GetCenter(3).Y, .01); Assert.AreEqual(90, man.GetCenter(4).X); Assert.AreEqual(0, man.GetCenter(4).Y); Assert.AreEqual(0, man.GetCenter(5).X); Assert.AreEqual(0, man.GetCenter(5).Y); Assert.AreEqual(2, man.GetCenter(5).Ring); Assert.AreEqual(2, man.GetCenter(5).PixelInRing); Assert.AreEqual(-90, man.GetCenter(6).X); Assert.AreEqual(0, man.GetCenter(6).Y); Assert.AreEqual(2, man.GetCenter(6).Ring); Assert.AreEqual(3, man.GetCenter(6).PixelInRing); Assert.AreEqual(-180, man.GetCenter(7).X); Assert.AreEqual(0, man.GetCenter(7).Y); Assert.AreEqual(135, man.GetCenter(8).X); Assert.AreEqual(-L41, man.GetCenter(8).Y, .01); Assert.AreEqual(3, man.GetCenter(8).Ring); Assert.AreEqual(1, man.GetCenter(8).PixelInRing); Assert.AreEqual(45, man.GetCenter(9).X); Assert.AreEqual(-L41, man.GetCenter(9).Y, .01); Assert.AreEqual(-45, man.GetCenter(10).X); Assert.AreEqual(-L41, man.GetCenter(10).Y, .01); Assert.AreEqual(-135, man.GetCenter(11).X); Assert.AreEqual(-L41, man.GetCenter(11).Y, .01); }