I have a point, P on an n-sphere (n=300) and I want to sample from a uniform distribution of points a given distance, d, from P. This distance is not critical. For example, if my sphere was the globe and my point was the north pole, then I want to create a uniform distribution of points along one of the lines of latitude - but for an n-sphere

Creating a uniform distribution of points on the n-sphere is straightforward using this method: https://mathoverflow.net/questions/24688/efficiently-sampling-points-uniformly-from-the-surface-of-an-n-sphere or How to generate uniformly distributed points on the surface of the 3-d unit sphere? - and I had considered just sampling a large number of points and rejecting anything that is not ~d from P - however I suspect this will be woefully inefficient.

Any suggestions welcome


1 Answer 1


Here would be my general strategy:

  • Determine an orthogonal transformation $O$ that maps your given point $p$ to the "north pole" $(1, 0, 0, \ldots)$. The collection of points a distance $d$ from $p$ maps to the collection of points a distance $d$ from $Op$ (because $O$ is orthogonal). This collection is the longitude given by the equation $x_1 = \cos(d)$.
  • Identify the given longitude with the standard $n-1$ sphere $S^{n-1} = \{(x_2, x_3, \ldots, x_n) : x_2^2 + \cdots + x_n^2 = 1 \}$.
  • Sample a point $q'$ uniformly from $S^{n-1}$, and map it to the specified longitude. You mention you can already do this.
  • Set $q = O^{t}q'$, this your final sample point.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.