Dear All, I am simulating a random walk on a sphere with unit radius. I want to move from current location p_t to the new location p_{t+1} along the big circle, whose arc has an angle omega relative to p_t's latitude. I tried using the law of cosine. But at the poles, the law of cosine diverges. Can anyone help find a method that works for all location on the sphere? Thanks!
I am not sure what you mean by law of cosine, but I would suggest: If your algorithm is correct, then do not start your walk at the pole. Probability that you will ever reach the pole is zero, I guess.
So say, at each step, you want to move by an angle [itex]\alpha[/itex] along a random great circle through the current point. If your current point is the "north pole", i.e. (0,0,1) in xyz coordinates, then that's just a rotation, call it R, by [itex]\alpha[/itex], with axis a random line in the xy-plane. And rather than worry about how you'd do it if the point isn't the north pole, I'd instead do a rotation C to bring my current point to the north pole, then do as above, then do the inverse of C. Finding such a C is straightforward; one way would be to project the current point to the xy-plane, draw a line through it and the origin, and take the perpendicular line through the origin to be the axis of rotation. Then you can rotate so that p travels along a great circle to the north pole. There are lots of other C's that would work (where p doesn't move along a great circle), but that's probably the easiest to compute. (Detail: if p is the south pole, this isn't well-defined, so just let C be the map that mirrors the sphere across the xy-plane.) So then the effect of [itex]CRC^{-1}[/itex] on p is to carry it to a new point at an angular distance [itex]\omega[/itex] away, along a random great circle passing through p.