- #1
Cbas
- 4
- 0
I am not sure if I have the title right, but here is my problem:
I have a ray which 'should be' shot vertically from a point p, but depending on the situation it can: 1) either be shot in any direction in the hemisphere above p 2) shot with an angle of no more than σ off the vertical 3) shot with an angle of no more than σ off the vertical by with a Gaussian distribution
(See http://imgur.com/BMqWjoQ)
http://imgur.com/BMqWjoQ
First:
I wish to generate a point uniformly distributed on a hemisphere. I did some derivations and I came up with:
θ = acos(R1)
∅= 2∏R2
x = sinθcos∅=cos(2∏R2)sqrt(1-R12)
y = sinθsin∅=sin(2∏R2)sqrt(1-R12)
z=cosθ=R1
I confirmed this wit a textbook, So I am pretty sure its right---
Second:
I want to generate a point uniformly but only within a small solid angle subtended by angle σ
Similar derivation as before but the values for theta and phi are
θ=acos(1-(1-cos(σ)*R1))
∅= 2∏R2
Im pretty sure this is also right
Third:
(now this is where I need help)
Instead of using a uniform distribution I would like to use a Gaussian distribution. I know Box Muller is one way of generating random number with a normal distribution (given a set of canonical numbers) but how do I use that now to generate ray directions that are normally distributed?
Thanks for your help
I have a ray which 'should be' shot vertically from a point p, but depending on the situation it can: 1) either be shot in any direction in the hemisphere above p 2) shot with an angle of no more than σ off the vertical 3) shot with an angle of no more than σ off the vertical by with a Gaussian distribution
(See http://imgur.com/BMqWjoQ)
http://imgur.com/BMqWjoQ
First:
I wish to generate a point uniformly distributed on a hemisphere. I did some derivations and I came up with:
θ = acos(R1)
∅= 2∏R2
x = sinθcos∅=cos(2∏R2)sqrt(1-R12)
y = sinθsin∅=sin(2∏R2)sqrt(1-R12)
z=cosθ=R1
I confirmed this wit a textbook, So I am pretty sure its right---
Second:
I want to generate a point uniformly but only within a small solid angle subtended by angle σ
Similar derivation as before but the values for theta and phi are
θ=acos(1-(1-cos(σ)*R1))
∅= 2∏R2
Im pretty sure this is also right
Third:
(now this is where I need help)
Instead of using a uniform distribution I would like to use a Gaussian distribution. I know Box Muller is one way of generating random number with a normal distribution (given a set of canonical numbers) but how do I use that now to generate ray directions that are normally distributed?
Thanks for your help