Services & Resources / Wolfram Forums
-----
 /
MathGroup Archive
2000
*January
*February
*March
*April
*May
*June
*July
*August
*September
*October
*November
*December
*Archive Index
*Ask about this page
*Print this page
*Give us feedback
*Sign up for the Wolfram Insider

MathGroup Archive 2000

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Random spherical troubles

  • To: mathgroup at smc.vnet.net
  • Subject: [mg25193] Re: [mg25170] Random spherical troubles
  • From: Daniel Lichtblau <danl at wolfram.com>
  • Date: Tue, 12 Sep 2000 21:24:37 -0400 (EDT)
  • References: <200009120658.CAA22591@smc.vnet.net>
  • Sender: owner-wri-mathgroup at wolfram.com

Barbara DaVinci wrote:
> 
>  Hi MathGrouppisti
> 
>  This time, my problem is to generate a set of
> directions randomly
>  distributed over the whole solid angle.
> 
>  This simple approach is incorrect (spherical
> coordinates are assumed) :
> 
>  Table[{Pi Random[], 2 Pi Random[]} , {100}]
> 
>  because this way we obtain a set of point uniformly
> distributed
>  over the [0 Pi] x [0 2Pi] rectangle NOT over a
> spherical surface :-(
> 
>  If you try doing so and plot the points {1,
> random_theta , random_phi}
>  you will see them gathering around the poles because
> that simple
>  transformation from rectangle to sphere isn't
> "area-preserving" .
> 
>  Such a set is involved in a simulation in statistical
>  mechanics ...
>  and I can't get out this trouble.
> 
>  May be mapping [0 Pi] x [0 2Pi] in itself , using an
> suitable
>  "non-identity" transformation, can spread points in a
> way balancing
>  the poles clustering effect.
> 
> 
> ====================================================================
> 
>  While I was brooding over that, an intuition flashed
> trought my mind :
>  since spherical to cartesian transformation is
> 
>   x = rho Sin[ theta ] Cos[ phi ]
>   y = rho Sin[ theta ] Sin[ phi ]
>   z = rho Cos[ theta ]
> 
>  perhaps the right quantities to randomly spread
> around are Cos[ theta ] and
>  Cos[ phi ] rather than theta and phi for itself. Give
> a glance at this :
> 
>  Table[{
>  ArcCos[ Random[] ],
>  ArcCos[ Random[] Sign[ 0.5 - Random[] ]
>  } , {100}]
> 
>  Do you think it is close to the right ? Do you see a
> better way ?
>  Have you just done the job in the past ? Should I
> reinvent the wheel ?
> 
> ====================================================================
> 
>  I thanks you all for prior replies and in advance
> this time.
> 
>  Distinti Saluti
>  (read : "Faithfully yours")
> 
>  Barbara Da Vinci
>  barbara_79_f at yahoo.it
> 
> 
> ______________________________________________________________________
> Do You Yahoo!?
> Il tuo indirizzo gratis e per sempre @yahoo.it su http://mail.yahoo.it


I assume you have in mind a uniform distribution. This can be done in a
couple of standard ways (and maybe others I don't know).

(i) (Works in all dimensions.) Pick a point at random (uniform
distribution) in the unit cube. If it is outside the unit sphere,
discard it. Otherwise take its direction, that is, divide by the length.

(ii) Pick polar angle (theta) and height (z) at random using uniform
distribution. This works because the areas of the slanted annular strips
are equal for equal height differentials (area element is
2*Pi*Sin[phi]*slant height and slant height is dz/Sim[phi], hence area
element is always 2*Pi*dz). Now set phi to ArcCos[z].


Daniel Lichtblau
Wolfram Research


  • Prev by Date: Re: Random spherical troubles
  • Next by Date: Re: Random spherical troubles
  • Previous by thread: Random spherical troubles
  • Next by thread: RE: Random spherical troubles