22 votos

3 números al azar para describir el punto en una esfera

Actualmente estoy trabajando en un problema que implica a los gráficos por ordenador y se metió en una discusión acerca de lo que sea o no la construcción de un vector en 3d de 3 puntos aleatorios uniformemente distribuidos entre los puntos -1 y 1 (y, a continuación, normalizar el vector) para conseguir puntos distribuidos de manera uniforme sobre la superficie de la esfera?

Tenga en cuenta que soy un estudiante de informática no es un estudiante de matemáticas y, como tal, podría no ser capaz de seguir las cosas realmente complejas.

El otro estudiante dijo que sería mejor que elegir 2 puntos al azar sobre un plano 2d y, a continuación, de la urdimbre en una esfera, sin embargo este me pareció innecesariamente complejo que uno de nosotros es a la derecha?

25voto

String Puntos 8937

Métodos para hacer esto se discuten aquí: Wolfram MathWorld: Esfera Punto de Picking

En particular, de una forma programada elegante enfoque es sugerido por Marsaglia, afirmando que con $x_1,x_2\in(-1,1)$ elegido de manera uniforme en este intervalo y tirar los casos donde $x_1^2+x_2^2\geq 1$ podemos definir $$ \begin{align} x&=2x_1\sqrt{1-(x_1^2+x_2^2)}\\ y&=2x_2\sqrt{1-(x_1^2+x_2^2)}\\ z&=1-2(x_1^2+x_2^2) \end{align} $$ para obtener los puntos de $(x,y,z)$ distribuidos uniformemente sobre la unidad de la esfera. Muy inteligente!

El algoritmo toma un punto de $(x_1,x_2)$ en la unidad de disco y la transforma en un punto de $(x,y,z)$ en la unidad de la esfera. Aquí está una Dinámica Figura que Ilustra esta Transformación:

enter image description here

El círculo morado en mi diagrama de radius $\sqrt{0.5}$ así dividir el área de la unidad de disco en dos mitades, como en el tranformation de divide el área de la unidad de la esfera en dos mitades. Esto ilustra el principio principal bien, a saber:

Una distribución uniforme en la unidad de disco se transforma en una distribución uniforme sobre la unidad de la esfera por Marsaglia fórmulas.


Actualización

Pensé que sólo de este método simple que no necesita de avanzada de la prueba:

Pick $x,y,z\in[-1,1]$ que es lo que ya se ha sugerido. Ahora descartarlos si $x^2+y^2+z^2>1$ lo que significa que $(x,y,z)$ encuentran en la parte de la unidad de cubo que está fuera de la unidad de esfera, para en una de las esquinas. Si no, normalizar el vector $(x,y,z)$.

Para evitar la división por cero y los errores de precisión también se podría descartar los puntos de con $x^2+y^2+z^2<\delta$ algún $0<\delta<1$ (como otros han sugerido en varios comentarios).

21voto

McKenzieG1 Puntos 5294

Elegir los puntos uniformemente de $[-1,1]^3$ y luego normalizar no dan la distribución uniforme en la esfera. Los polos tendrán menos masa que las esquinas.

Elegir las coordenadas de #% de #% % con distribución gaussiana en $3$ y luego normalizar sería una manera de obtener una distribución uniforme.

3voto

CiaPan Puntos 2984

Su vector serán distribuidos de manera uniforme sobre un cubo. El cubo del vértice, sin embargo, es farhter de la esfera inscrita que el cubo de lado del centro, por lo que una pequeña región cerca del vértice de proyectar una pequeña parte en la esfera de lo que el mismo volumen de la región cerca de la parte del centro. Por lo que la distribución esférica de la resultante de los puntos sobre la esfera no será uniforme.

De todos modos puede ser lo suficientemente cerca como para su tarea, dependiendo de lo que necesites...

O usted puede utilizar cualquier área de la preservación de 2-dimensiones de proyección conocido en cartografía - ver https://en.wikipedia.org/wiki/Map_projection#Equal-area

3voto

tgray Puntos 4002

Si estás atascado uniformemente distribuida PRNG, otra opción sería el uso de coordenadas esféricas, pero transformar distribuidos de manera uniforme pares de números para compensar coordinar la distorsión.

Porque de coordinar la distorsión, si se toma solo distribuidos de manera uniforme pares de $(\vartheta,\phi)$ de los números como coordenadas esféricas, tendrás demasiados puntos cerca de los polos. Recordemos que cuando la integración de más de una esfera, se utiliza un determinante Jacobiano de $\sin\theta$. Así, debemos tener $P(\theta)\sim\sin\theta$. Para conseguirlo, tenemos que tomar sus inversa de la función de distribución acumulativa de nuestra $\vartheta$.

Desde $$\int_0^\vartheta \sin\vartheta~\text{d}\vartheta\sim\sin^2\frac{\vartheta}2,$$

y su inversa tiene la forma de

$$\text{CDF}^{-1}(P)=\arcsin\sqrt P,$$

podemos tomar para $\vartheta\in[0,\pi]$:

$$\theta=\arcsin\sqrt\frac\vartheta\pi.$$

Desde el determinante Jacobiano no depende de $\phi$, no tenemos que transformar esta variable.

Ahora, el par $(\theta,\phi)$ es un par de distribuidos de manera uniforme en la esfera de coordenadas esféricas.

3voto

Anthony Shaw Puntos 858

Desde Marsaglia la fórmula para la generación de puntos al azar sobre una esfera es dada en la Cadena de respuesta, pensé que sería útil para justificar la fórmula.

En esta respuesta, se muestra que el área de la superficie de un anillo se $a\le z\le b$ sobre la esfera es la misma que el área de la franja de $a\le z\le b$ sobre el cilindro tangente a la $x$-$y$ ecuador de la esfera. Esto significa que la proyección cilíndrica de puntos distribuidos uniformemente sobre la esfera, también deben estar distribuidos de manera uniforme en el cilindro. Es decir,

El $z$-coordenadas de los puntos aleatorios deben estar distribuidos de manera uniforme.

Deje $u_1$ $u_2$ estar distribuidos de manera uniforme en $[-1,1]$. Considere la posibilidad de $\left.u_1^2+u_2^2\,\,\middle|\,\,u_1^2+u_2^2\le1\right.$. Dado que $u_1^2+u_2^2\le1$, $(u_1,u_2)$ se distribuyen de manera uniforme en la unidad de disco, y por lo tanto, $$ P[u_1^2+u_2^2\le r^2]=r^2\etiqueta{1} $$ La ecuación de $(1)$ muestra que $u_1^2+u_2^2$ es distribuido uniformemente en $[0,1]$, y por lo tanto,

$1-2(u_1^2+u_2^2)$ es distribuido uniformemente en $[-1,1]$

Por lo tanto, podemos dejar que la $z=1-2(u_1^2+u_2^2)$. A continuación, $$ \sqrt{1-z^2}=2\sqrt{u_1^2+u_2^2}\sqrt{1-(u_1^2+u_2^2)}\etiqueta{2} $$

Desde $(u_1,u_2)$ es distribuido uniformemente en la unidad de disco,

$\dfrac{(u_1,u_2)}{\sqrt{u_1^2+u_2^2}}$ es distribuido uniformemente en el círculo unidad.

Por lo tanto, $(2)$ y el resaltado declaraciones demuestra que dado $u_1^2+u_2^2\le1$, $$ \begin{align} x&=2u_1\sqrt{1-(u_1^2+u_2^2)}\\ y&=2u_2\sqrt{1-(u_1^2+u_2^2)}\\[4pt] z&=1-2(u_1^2+u_2^2) \end{align}\etiqueta{3} $$ se distribuye uniformemente en la unidad de la esfera.


George Marsaglia la fórmula de $(3)$ requiere un promedio de $8/\pi\doteq2.546479$ números aleatorios por punto. Si es más rápido para evaluar el coseno y una raíz cuadrada de generar $0.546479$ números aleatorios, entonces, generar una $u_1,u_2$ uniformemente en $[-1,1]$.

Calcular $\cos(\pi u_2)$,$\sin(\pi u_2)=\mathrm{sgn}(u_2)\sqrt{1-\cos^2(\pi u_2)}$. $$ \begin{align} x&=\sqrt{1-u_1^2}\cos(\pi u_2)\\ y&=\sqrt{1-u_1^2}\sin(\pi u_2)\\[4pt] z&=u_1 \end{align}\etiqueta{4} $$ se distribuye uniformemente en la unidad de la esfera, sin descartar ninguna de números aleatorios.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X