Re: Random spherical troubles
- To: mathgroup at smc.vnet.net
- Subject: [mg25184] Re: Random spherical troubles
- From: "Allan Hayes" <hay at haystack.demon.co.uk>
- Date: Tue, 12 Sep 2000 21:24:27 -0400 (EDT)
- References: <8pkl8u$m80@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Barbara,
Noting that cylindrical projection preserves area we get, for a unit sphere,
randomOnCylinder[n_] :=
Table[{Random[Real, {0, 2N[Pi]}], Random[Real, {-1, 1}]}, {n}]
toSphere[{a_, z_}] :=
{#Cos[a], # Sin[a], z} &[Sqrt[1 - z^2]]
randomOnSphere[n_] :=
toSphere /@ randomOnCylinder[n]
Show[Graphics3D[Point /@ randomOnSphere[500]]]
--
Allan
---------------------
Allan Hayes
Mathematica Training and Consulting
Leicester UK
www.haystack.demon.co.uk
hay at haystack.demon.co.uk
Voice: +44 (0)116 271 4198
Fax: +44 (0)870 164 0565
"Barbara DaVinci" <barbara_79_f at yahoo.it> wrote in message
news:8pkl8u$m80 at smc.vnet.net...
> 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
>