public bool SharesEndpointAndBearing(Line other, Double distance, Double bearingSlack) { bool result = SharesEndPointWith(other, distance) && (Bearing.AngularDifference(other.Bearing) <= bearingSlack || Bearing.AddDegrees(180).AngularDifference(other.Bearing) <= bearingSlack); return(result); }