Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Sampling with multidimensional transformations

  1. Apr 18, 2013 #1
    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)

    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)
    I confirmed this wit a text book, So Im pretty sure its right---
    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
    ∅= 2∏R2
    Im pretty sure this is also right

    (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
  2. jcsd
  3. Apr 18, 2013 #2


    User Avatar
    2017 Award

    Staff: Mentor

    Can you do rejection sampling? The "best" implementation would depend on details of the parameters. "Use the second algorithm and reject the point with probablility 1-(value of gaussian)" should give reasonable results if the gaussian is not too narrow.

    Alternatively, generate a random number based on the modified distribution f(θ)=sin(θ)*gaussian
  4. Apr 18, 2013 #3
    What do you mean by "gaussian"? Is that one of my gaussian random numbers?
    I assume sin(theta) is measure of area
    Area = ∫0σ0sin(θ) Z1dθd∅

    (thanks for your reply)
  5. Apr 18, 2013 #4


    User Avatar
    2017 Award

    Staff: Mentor

    sin(θ) is (proportional to) the length of a circle around the vertical axis. It is just a weight for the gaussian distribution. I don't know if you want that gaussian as function of θ, or the projection on the floor, or whatever, just use what you like there. As function of θ, it gets $$f(\theta)=\sin(\theta)\exp\left(\frac{-\theta^2}{2\sigma^2}\right)$$
    Where σ is the width of the gaussian.
Know someone interested in this topic? Share this thread via Reddit, Google+, Twitter, or Facebook

Similar Discussions: Sampling with multidimensional transformations
  1. Sample Size (Replies: 7)

  2. Sample variance (Replies: 8)

  3. Analysing sample's (Replies: 3)

  4. Variances of samples (Replies: 7)

  5. Sample Space (Replies: 9)