Esempio n. 1
0
 public override double Metric(Basin3 toBasin, int to, bool initial = false)
 {
     return
         (-S_q.SignedDistanceTo(toBasin.Q3) // bad for BasinDataTests.HighBasin_31_sphere
          //S_q.IntersectionWith(toBasin.RadiusRay).DistanceTo(toBasin.Q3)
          - InitialHto[to]                  // needed for BasinDataTests.HighBasin_31 movedBasins
         );
 }
Esempio n. 2
0
        /// <returns>typeof Direction</returns>
        public int GetFromAndFillType(Direction to, Basin3 toBasin, HealpixManager man)
        {
            if (Ring == toBasin.Ring)
            {
                Type = to;
            }

            var vert = NeighborManager.GetVert(to);

            if (Ring == 1 && vert == NeighborVert.North ||
                Ring == man.RingsCount && vert == NeighborVert.South ||
                Type == to)
            {
                return((int)NeighborManager.GetOppositeHor(to));
            }
            return((int)NeighborManager.GetOpposite(to));
        }
Esempio n. 3
0
 /// <param name="to">Direction</param>
 public virtual double Metric(Basin3 toBasin, int to, bool initial = false)
 {
     return((initial ? S_geiod : S_q).IntersectionWith(MeanEdges[to]).DistanceTo(O3) /*MeanEdge metric*/
            - InitialHto[to]                                                         // needed for BasinDataTests.HighBasin_31
            );
 }