Hi, is there some way to map a coordinate pair (a, b) to the surface of a sphere without making the Jacobian go to zero at some point? Or let me explain this a bit more carefully:

If we have two variables, a and b, is it possible to define a bijectiive (or at least a surjective) mapping function from $\displaystyle \mathbb{R}^2$ to $\displaystyle \mathbb{R}^3$,

$\displaystyle \vec{F}: (a, b) \to (x, y, z),$

such that

$\displaystyle \|(x, y, z)\| = R,\ \forall\ a, b$

where R is a constant greater than zero, and

$\displaystyle \frac{\operatorname{d}\vec{F}}{\operatorname{d}a} \times\frac{\operatorname{d}\vec{F}}{\operatorname {d}b}\neq \vec{0},\ \forall\ a, b$ ?

All variables, a, b and x, y and z, are of course real.

Such a mapping function could be useful when simulation particles moving around on the surface of a sphere. You can of course use spherical coordinates to do that, but that has the major disadvantage that the longitudinal coordinate will change more and more rapidly the closer you get to any of the poles, and you may notice small deviations from the "straight line" when a particle passes very close to a pole.

You could also use the normal Cartesian coordinates x, y and z, normalize them and set the radial component of the velocity to zero in each step, but that would drastically decrease the accuracy of Runge-Kutta methods and would also make time-reversible methods like Verlet integration and leapfrog integration non-time-reversable, since you actually use a modified version of the method.