private bool CheckPDContained(TMG.IZone origin, TMG.IZone destination) { var containsOrigin = ValidPlanningDistricts.Contains(origin.PlanningDistrict); var containsDestination = ValidPlanningDistricts.Contains(destination.PlanningDistrict); if (this.OriginDestinationPDSame) { if (origin.PlanningDistrict != destination.PlanningDistrict) { return(false); } return(containsOrigin); } if (this.ExclusiveOrPD) { return(containsOrigin ^ containsDestination); } else if (this.ContainsOnePD) { return(containsOrigin | containsDestination); } else if (this.ContainsBothPD) { return(containsOrigin & containsDestination); } else { return(!(containsOrigin | containsDestination)); } }
private float StraightLineDistance(TMG.IZone zone1, TMG.IZone zone2) { if (zone1 == zone2) { return(zone1.InternalDistance); } var deltaX = zone1.X - zone2.X; var deltaY = zone1.Y - zone2.Y; return((float)Math.Sqrt(deltaX * deltaX + deltaY * deltaY)); }
private float ManhattanDistance(TMG.IZone zone1, TMG.IZone zone2) { if (zone1 == zone2) { return(zone1.InternalDistance); } var deltaX = zone1.X - zone2.X; var deltaY = zone1.Y - zone2.Y; return(Math.Abs(deltaX) + Math.Abs(deltaY)); }
protected override bool IsContained(TMG.IZone origin, TMG.IZone destination) { return(CheckPDContained(origin, destination) && base.IsContained(origin, destination)); }