3 votos

¿Cómo generar un vector aleatorio que garantice estar dentro de la semiesfera con respecto a otro vector?

Dado un vector normalizado N ¿cómo se puede generar un vector de dirección aleatorio que esté garantizado en el hemisferio con respecto a N (es decir, el hemisferio donde N está exactamente en el centro)? La forma en que estoy haciendo esto es muestrear un vector de dirección al azar d y dot con N y mantener ese vector si el dot el producto es mayor que 0 . Este método no garantiza la generación de un vector en el hemisferio que me interesa, ya que el ~50% de los vectores aleatorios tendrían un 0 o negativo dot resultado del producto.

He visto en algún sitio que hay una forma de transformar el vector generado aleatoriamente d para colocarlo en el hemisferio derecho utilizando una matriz de transformación, pero no sé cómo hacerlo. ¿Puede alguien escribir un [pseudo]código de cómo se genera un vector de dirección utilizando el método de transformación?

3voto

Misha Puntos 1723

En este caso, puedes generar aleatoriamente dd y si no se encuentra en el hemisferio derecho, porque dN<0dN<0 , reemplazar dd por dd .

3voto

Karl Puntos 156

Para responder a su pregunta de seguimiento de los comentarios: Si está en 3D, tenemos el conveniente hecho de que el zz La coordenada de un punto aleatorio en la esfera unitaria está distribuida uniformemente. Así, si se toma zU(cosθ,1)zU(cosθ,1) , ϕU(0,2π)ϕU(0,2π) , r=1z2r=1z2 entonces (rcosϕ,rsinϕ,z)(rcosϕ,rsinϕ,z) es un punto aleatorio de la esfera dentro de θθ radianes del positivo zz -eje.

Transformar esto para estar dentro de θθ radianes de NN multiplicarlo por una matriz ortonormal cuya última columna es NN . (En otras palabras, aplicar la transformación (x,y,z)(xV,yW,zN)(x,y,z)(xV,yW,zN) donde VV y WW son vectores unitarios ortogonales a NN y entre sí).

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