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 ); }
/// <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)); }
/// <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 ); }