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
- References:
- Random spherical troubles
- From: Barbara DaVinci <barbara_79_f@yahoo.it>
- Random spherical troubles