basic projection question

Trying to make my programs more lat-long friendly...

  G_begin_distance_calculations();

I need to calculate the angle of a line made between two
points (x1,y1) and (x2,y2).

The distance between the points (the hypotenuse in
geometric/planimetric terms) is

  d = G_distance (x1, y1, x2, y2);

In a planimetric projection, the angle (in degrees) would be:

  angle = 180.0 / 3.14159 * acos ( (x1-x2) /d )

but with lat-long I don't believe that this is the case
(because the distance between two longitudes is different,
depending upon what latitude you are at). Would the
correct way to compute this angle be:

  angle = 180.0 / 3.14159
        * acos ((G_distance(x1,y1,x2,y1)+G_distance(x1,y2,x2,y2)) /2.0
        / d);

(that is, averaging the two distances at lat1 and lat2 to come
up with the numerator for the inverse cosine quotient).
This approach seems sort of naive but I cannot think of
anything better at the moment.

Is this correct approach? Is there a library function that I am
missing which would do what I want?

--Darrell