Mathematics Stack Exchange is a question and answer site for people studying math at any level and professionals in related fields. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

So I've been doing a lot of searching and haven't found exactly what I'm looking for. My math skills are a bit rusty, so I haven't had luck deriving this on my own.

What I'm looking for is an equation (or set of equations) where I can plug in starting and ending spherical coordinates, plus a percentage (ie [0,1]) and output spherical coordinates of some point in between (ie, progress along a great circle).

The idea is basically to chart the progress of a plane between two cities and draw it on a globe or map.


  • lat1,lon1
  • lat2,lon2
  • r (radius)
  • p (progress, from 0->1)


  • lat_x,lon_x (point in-between)
share|cite|improve this question
See this question for some ideas. Once you figure out the initial compass direction Clairaut's relation probably also helps. – Jyrki Lahtonen May 6 '13 at 19:52
I appreciate the suggestion. What I'm really looking for is an equation already derived that I can plug numbers into. Haven't had a luck deriving anything on my own... – Robert C May 6 '13 at 21:27

Ok, so I found what I was looking for at Ed Williams' awesome Aviation Formulary:

Given (lat1,lon1), (lat2,lon2), and progress fraction f=[0,1]

d = acos(sin(lat1) * sin(lat2) + cos(lat1) * cos(lat2) * cos(lon1 - lon2))
A = sin((1 - f) * d) / sin(d)
B = sin(f * d) / sin(d)
x = A * cos(lat1) * cos(lon1) + B * cos(lat2) * cos(lon2)
y = A * cos(lat1) * sin(lon1) + B * cos(lat2) * sin(lon2)
z = A * sin(lat1) + B * sin(lat2)

lat_f = atan2(z, sqrt(x^2 + y^2))
lon_f = atan2(y,x)

share|cite|improve this answer
What happens if I set $f$ not in [0,1]. For example $f$ = 2, would I get the point outside great circle and have double the length of great circle? – Do Van Hoan Nov 18 '15 at 23:43
@DoVanHoan No, f=2 would be the same as f=0 and f=1. Basically, f=2 would be looping around the circle twice (720 degrees), which is the same as looping once (360 degrees) or not at all (0 degrees). Now, if you set f to an imaginary number, you might have something. – barrycarter Nov 19 '15 at 15:16
What happens if I set f to an imaginary number? I couldn't figure out how this would happen. – Do Van Hoan Nov 22 '15 at 10:51
@barrycarter What happens if one set f to an imaginary number? – Do Van Hoan Nov 23 '15 at 21:35

Perhaps the most succinct and easiest answer (from

"You are given two points u and v on the unit sphere. Think of them as position vectors u⃗ and v⃗ . It is easy enough to calculate cross products. Calculate w⃗ =(u⃗ ×v⃗ )×u⃗ . Then w⃗ and u⃗ are unit vectors perpendicular to each other and in the plane of the circle. So a parameterization of the circle is R⃗ (t)=u⃗ cost+w⃗ sint"

Correction: w is only a unit vector if u and v are perpendicular.

share|cite|improve this answer
I have seen another paremeterization as R(t) = u * sin(th0(t)) / sin(th) + v * sin(th1(t)) / sin(th), with th being the total angle between u and v, th0 the angle between u and R and th1 the angle between R and v. Though probably related, I still don't see how this expression can be deduced from the one above. – Jose Ospina Apr 23 '15 at 10:20
What happens if I set $f$ not in [0,1]. For example $f$ = 2, would I get the point outside great circle and have double the length of great circle? – Do Van Hoan Nov 18 '15 at 23:43

Your Answer


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.