La solución obvia de Lattitude & Longitude no funciona porque genera puntos más densamente cerca de los polos, y la otra cosa que se me ocurrió (elija un punto al azar en el cubo de la unidad, si está en la esfera de la unidad, mapéelo a la superficie , y reinicie si está afuera) no siempre encuentra un punto dentro de un número fijo de intentos.
Respuestas
¿Demasiados anuncios?Los Lambert cilíndrico de área igual a la proyección de los mapas de la esfera, un cilindro, de área a área igual. Es fácil generar una distribución uniforme en un cilindro. Simplemente el mapa de nuevo a la esfera.
Para $(u_1,u_2)$ uniforme en $[0,1]^2$,
$\mathrm{lat}=\arcsin(2u_1-1),\mathrm{lon}=2\pi u_2$
o
$z=2u_1-1,x=\sqrt{1-z^2}\cos(2\pi u_2),y=\sqrt{1-z^2}\sin(2\pi u_2)$
Su método, aunque no termine en un número fijo de veces, es una manera razonable de hacerlo. Cada prueba tiene éxito con probabilidad de $\frac\pi6$, que es mejor que $\frac12$: el promedio del número de ensayos es menos de $2$.
Otro método estándar es el uso de la distribución normal. Generar $x, y, z$ forma independiente a partir de una distribución normal estándar, entonces tome el punto de $(x,y,z)$ y se divide por $\sqrt{x^2+y^2+z^2}$ a como se hizo para los puntos en el interior del cubo. La distribución normal multivariante es rotacionalmente simétrico, por lo que de esta manera se consigue que distribuye uniformemente puntos sobre la esfera.
(El Box–Muller transformar es una forma de generar números aleatorios distribuidos normalmente, y algunas versiones de que no utilice el rechazo de muestreo, por lo que se puede hacer con un "monto fijo" de la aleatoriedad.)
Es allí una manera de generar distribuidos de manera uniforme puntos en una esfera de una cantidad fija de azar los números reales por punto?
Este Stack Overflow de respuesta menciona la esfera de Fibonacci algoritmo, y en la actualidad, sin respuesta de Matemáticas SE pregunta Es el entramado de Fibonacci es la mejor forma de distribuir uniformemente N puntos sobre una esfera? Hasta ahora parece que es el mejor? contiene varios enlaces en la pregunta y en los comentarios.
El método es determinista, utilizando ya sea cero o un número al azar, no importa el número de puntos generados.
La Universidad Estatal de Florida, John Burkardt la página web de Espiral Fibonacci Cuadrícula en una Esfera proporciona algunas referencias y ejemplos de implementaciones de código.
Edward Saff, Arno Kuijlaars, La distribución de Muchos de los Puntos sobre una Esfera, La Matemática Intelligencer, Volumen 19, Número 1, de 1997, páginas 5 a 11 años.
Richard Swinbank, James Purser, Fibonacci rejillas: Un nuevo enfoque global de la modelización, Revista trimestral de la Royal Meteorological Society, Volumen 132, Número 619, de julio de 2006, Parte B, páginas 1769-1793.
Extrema de Aprendizaje de manera Uniforme la distribución de puntos en una esfera direcciones de varios criterios para juzgar el nivel de homogeneidad proporcionada por las diferentes soluciones, y describe el proceso de la primera generación de Fibonacci de la cuadrícula y, a continuación, su transformación en una esfera.
Un ejemplo de estas Rejillas de Fibonacci se muestra a continuación. Estos puntos puede ser transformado a un bien-conocido de Fibonacci espirales a través de la transformación
No puedo estar seguro de que va a ser lo suficientemente uniforme para usted, pero sin duda se ve bien!
Usted todavía puede usar la longitud/latitud método. Sólo se necesita transformar la latitud de tal manera que la probabilidad de caer en cualquier latitud de la banda es proporcional a su área superficial.
La longitud de la circunferencia a una latitud, l, es proporcional a cos(l). (0 a -90 grados, max en el ecuador, 0 a +90 grados). Por lo tanto, mediante la integración sabemos que el área de la superficie total entre dos latitudes, l1 y l2, es proporcional al pecado(l2) - sin(l1).
Con la inversión que se llega a una fórmula para la transformación de una [0, 1] uniforme de la variable aleatoria (X) a una latitud de tal manera que cualquier punto de la esfera es igual probabilidad de ser seleccionado:
latitude = arcsin(2X - 1)
Su segundo método se puede mejorar de esta manera: seleccione las tres coordenadas (x, y, z) en una distribución lineal de -1 a 1.
Si (y * y + z * z)> 1, seleccione reemplazos solo para estos dos. (Solo tendrá que volver a tirarlos 4-pi / 4 (aproximadamente 21.4%) del tiempo; el promedio de los números aleatorios utilizados es 1 + 8 / pi = ~ 3.546.
Mantenga x como está, escale y y z por sqrt ((1 - x * x) / (y * y + z * z)).