// Returns the minimum distance from X to the latitude line segment defined by // the given latitude and longitude interval. private static S1Angle GetDistance(S2LatLng x, S1Angle lat, S1Interval interval) { Assert.True(x.IsValid()); Assert.True(interval.IsValid()); // Is X inside the longitude interval? if (interval.Contains(x.LngRadians)) { return(S1Angle.FromRadians((x.Lat() - lat).Abs())); } // Return the distance to the closer endpoint. return(new[] { x.GetDistance(new S2LatLng(lat, S1Angle.FromRadians(interval.Lo))), x.GetDistance(new S2LatLng(lat, S1Angle.FromRadians(interval.Hi))) }.Min()); }
/** * Returns the minimum distance from X to the latitude line segment defined by * the given latitude and longitude interval. */ private static S1Angle getDistance(S2LatLng x, S1Angle lat, S1Interval interval) { assertTrue(x.IsValid); assertTrue(interval.IsValid); // Is X inside the longitude interval? if (interval.Contains(x.Lng.Radians)) { return(S1Angle.FromRadians(Math.Abs(x.Lat.Radians - lat.Radians))); } // Return the distance to the closer endpoint. return(S1Angle.Min(x.GetDistance(new S2LatLng(lat, S1Angle.FromRadians(interval.Lo))), x.GetDistance(new S2LatLng(lat, S1Angle.FromRadians(interval.Hi))))); }
/** * Returns the minimum distance from X to the latitude line segment defined by * the given latitude and longitude interval. */ private static S1Angle getDistance(S2LatLng x, S1Angle lat, S1Interval interval) { assertTrue(x.IsValid); assertTrue(interval.IsValid); // Is X inside the longitude interval? if (interval.Contains(x.Lng.Radians)) return S1Angle.FromRadians(Math.Abs(x.Lat.Radians - lat.Radians)); // Return the distance to the closer endpoint. return S1Angle.Min(x.GetDistance(new S2LatLng(lat, S1Angle.FromRadians(interval.Lo))), x.GetDistance(new S2LatLng(lat, S1Angle.FromRadians(interval.Hi)))); }