Take the 2-minute tour ×
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.

Given a sphere of radius $r$, and origin $x,y,z$ what is the simplest way I can generate an evenly distributed array of points on the sphere $(x_1,y_1,z_1),(x_2,y_2,z_2),\cdots(x_n,y_n,z_n)$.

Note I will be writing this as a function in Javascript, if it is any help.


Essentially, I want to create a perfectly symmetrical shape with $X$ number of vertices that fits perfectly inside a sphere with radius $R$.

share|improve this question
Do you want a regular distribution of points, or do you want to pick the points randomly from a uniform distribution? –  Brian M. Scott Jan 15 '13 at 20:54
You can't equidistribute points on a sphere unless they are the corners of a Platonic solid, so $n=4,6,8,12,20$. Do you mean randomly distributed points with constant density? If the second, you could see mathworld or Google "random distribution on sphere" –  Ross Millikan Jan 15 '13 at 20:55
Random will work perfectly., really just whichever way gets the job done with the least amount of overhead to perform the calculation. Thanks @BrianM.Scott –  Jonathan Coe Jan 15 '13 at 20:56
It won't be symmetric if the points are random. But it will "on average be symmetric" whatever that means. –  Ross Millikan Jan 15 '13 at 21:01
If the aim is to pick random points from a uniform distribution on the sphere, shouldn't this be closed as a duplicate of How to find a random axis or unit vector in 3D? If the aim is to find a symmetrical set of equally spaced points on the sphere, see the answers under Which tessellation of the sphere yields a constant density of vertices? –  Rahul Jan 15 '13 at 21:20
show 1 more comment

2 Answers

up vote 2 down vote accepted

Use a uniform random number generator to generate an angle $\theta\in[0,2\pi)$ (essentially a longitude) and a $z\in[-1,1]$; the surface area cut by the planes $z=a$ and $z=b$ depends only on $|a-b|$, provided that $a,b\in[-1,1]$, so you get a uniform distribution.

Once you have $\theta$ and $z$, the point is $\left\langle\sqrt{1-z^2}\cos\theta,\sqrt{1-z^2}\sin\theta,z\right\rangle$ in rectangular coordinates.

share|improve this answer
add comment

At the end of the Mathworld article it says you can generate three Gaussian random variables $x,y,z$. Then $r=\sqrt {x^2+y^2+z^2}$ and $\frac xr, \frac yr, \frac zr$ are equally distributed on the unit sphere.

share|improve this answer
add comment

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.