Given the latitude and longitude of a prior planetary rotation axis (or pole), and given a set of latitude and longitude points defining a number of features on the surface of the planet, determine the latitude and longitude points describing the location of the features in the prior rotational regime.
I know. Someone’s already solved this problem. His name was Euler, and he did it in a more general case. So much more general, that all of the descriptions I can find of his solutions are a little opaque.
I’m not trying to describe a completely arbitrary re-orientation, because the point I’m moving is one of the poles. I only need two angles to describe the transformation… α (the east positive longitude of the paleopole) and β (the co-latitude, south from the current north pole, of the paleopole). So in using, for instance, the 3-rotation z-x-z convention, the last rotation is null. Its matrix is the identity matrix. Okay. So far so good.
But these rotations are in terms of Cartesian coordinates:
[x y z][R] = [X Y Z]
where R is the rotation matrix:
|cos α||-sin α cos β||sin β sin α|
|sin α||cos α cos β||-sin β cos α|
|0||sin β||cos β|
(from the Wikipedia entry on Euler angles, taking the third Euler angle, γ = 0).
Seems simple enough. So now all I need to do is convert my lat/lon points into Cartesian (x,y,z) before I apply the rotation:
x = r sin θ cos φ
y = r sin θ sin φ
z = r cos θ
(where θ is co-latitude south from the north pole, and φ is east positive longitude), and apply the inverse transform on the way back to lat/lon after applying the transformation:
r = sqrt(x2 + y2 + z2)
θ = arctan(sqrt(x2 + y2)/z)
φ = arctan(y/x).
Just to be sure, after I’ve applied these transformations, how am I going to know that I haven’t screwed anything up? For one thing, the spherical lengths of all the features should be invariant under these transformations. The radial coordinate (r) also shouldn’t change… since I’m doing this all on the surface of the sphere. And I should be able to output orthographically projected maps that look identical before and after the transform, assuming that I’ve also transformed the center point of the map. We’ll see…