Take the 2-minute tour ×
Geographic Information Systems Stack Exchange is a question and answer site for cartographers, geographers and GIS professionals. It's 100% free, no registration required.

How would I go about resolving this in C#?

I have a line segment (great circle distance) defined by two Lon-Lat pairs (call them points A and B). A third point somewhere on the Earth sphere.

The line segment closes the shortest distance between A and B. Third Lon-Lat pair is the point C.

How do I calculate the distance between the point C, and the closest point on the AB segment?

EDIT:
In fact, I am looking for an algorithm to find the spherical distance between an arbitrary point C and a geodesic segment AB.

What i have for now:

public static float DistanceInKilometres(PointF A, PointF B, PointF C)
{
    var d13 = Haversine_KM_F(A, C);
    var R = 3961.3;
    var brng12 = Bearing(A, B);
    var brng13 = Bearing(A, C);
    var dXt = Math.Asin(Math.Sin(d13 / R) * Math.Sin(brng13 - brng12)) * R;
    return (float)dXt;
}

public static Double Bearing(PointF coordinate1, PointF coordinate2)
{
    var latitude1 = coordinate1.Y.ToRadian();
    var latitude2 = coordinate2.Y.ToRadian();
    var longitudeDifference = (coordinate2.X - coordinate1.X).ToRadian();
    var y = Math.Sin(longitudeDifference) * Math.Cos(latitude2);
    var x = Math.Cos(latitude1) * Math.Sin(latitude2) -
    Math.Sin(latitude1) * Math.Cos(latitude2) * Math.Cos(longitudeDifference);
    return (Math.Atan2(y, x).ToDegree() + 360) % 360;
}

private static float ToRadian(this float angle)
{
    return (float)(Math.PI * angle / 180.0);
}

private static float ToDegree(this float angle)
{
  return (float)(Math.PI * angle / 180.0);
}
share|improve this question
    
Can you please elaborate on "this"? –  CaptDragon Apr 11 '12 at 15:06
    
Hope I'm being clear. –  JJ_Jason Apr 11 '12 at 15:15
    
I'm afraid it's not clear at all, JJ. Are you looking for an algorithm to find the spherical distance between an arbitrary point C and a geodesic segment AB? –  whuber Apr 11 '12 at 16:15
    
Yes, exactly that. –  JJ_Jason Apr 12 '12 at 9:06
    
Is that the same as this question? –  Kirk Kuykendall Apr 12 '12 at 19:33

1 Answer 1

up vote 2 down vote accepted

The more general problem, posed for an ellipsoid of revolution, is considered in Section 8 of

http://arxiv.org/abs/1109.4448v2

This gives solutions of the interception problem (the problem at hand) and the intersection problem using the ellipsoidal gnomonic projection. The same technique will apply to a sphere, of course.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.