Re: Random points on a unit sphere without biasing

Date : Tue, 14 Jun 2005 17:20:14 +0100
To : XSI(at)Softimage.COM
From : Alan Jones <skyphyr(at)gmail.com>
Subject : Re: Random points on a unit sphere without biasing
Thanks very much, Brad.

Cheers,

Alan.

On 6/14/05, Bradley R. Gabe <brad(at)cg-soup.com> wrote:
>  It's an interesting exercise. I'm not a mathematician by any stretch, but
> here's a little jscript that'll distribute points in a unit sphere by
> randomly calculating a quaternion rotation, then transforming 1 unit from
> origin. I use a particle cloud to visualize the point distribution.
> 
>  // SPHERICAL POINT DIST
>  var radius = 0.5;
>  var pnts = 1000;
> 
>  // Create New particle Type
>  var pTypeColl = CreateParticleType();
>  pType = pTypeColl(0);
> 
>  // Create Cloud
>  var cloud = ActiveSceneRoot.AddParticleCloud();
>  var cloudPrim = cloud.ActivePrimitive;
>  cloudPrim.AddParticles(pnts, pType);
>  particles = cloudPrim.Particles;
> 
>  
>  // For each particle, set a random distribution
>  for(var i=0; i<pnts; i++){
>          
>          // Get XSIMath objects for calculating random rot
>          var rot = XSIMath.CreateRotation();
>          var q1 = XSIMath.CreateQuaternion();
>          var trans = XSIMath.CreateTransform();
>          var pos = XSIMath.CreateVector3();
>          var radPos = XSIMath.CreateVector3();
>          radPos.Set(radius, 0,0);
>          
>          // Calculate random quaternions
>          var W = Math.random() * 2 - 1;
>          var X = Math.random() * 2 - 1;
>          var Y = Math.random() * 2 - 1;
>          var Z = Math.random() * 2 - 1;
>          q1.set(W,X,Y,Z);
>          
>          // Create a unit transform from quaternion rotation
>          rot.SetFromQuaternion(q1);
>          trans.SetRotation(rot);
>          trans.AddLocalTranslation(radPos);
>          trans.GetTranslation(pos);
>          
>          // Set particle to unit transform;
>          particles(i).position = pos;
> 
>  }
> 
>  
> 
>  
> Hi All,
> 
>  This is to the maths geniuses in the room. I want to generate X number
>  of points on a unit sphere, but be sure I won't have any biasing
>  involved.
> 
>  My first thought was just to use a couple of random numbers (let's
>  assume they don't have any bias) and then use those with a few sin and
>  cos function etc to generate the points. Though I have a feeling that
>  would give me more points around the poles.
> 
>  Anyone have some good suggestions?
> 
>  Cheers,
> 
>  Alan.
> 
>  ---
>  Unsubscribe? Mail Majordomo(at)Softimage.COM with the following text in body:
>  unsubscribe xsi

---
Unsubscribe? Mail Majordomo(at)Softimage.COM with the following text in body:
unsubscribe xsi


Search the XSI List archives here or use the advanced search form to search across mailing lists. Searching help is available.
This site supposedly brought to you by Benjamin Grosser and the Imaging Technology Group.