Random points on a unit sphere without biasing 2005-06-14 - By Alan Jones
Back Thanks very much, Brad.
Cheers,
Alan.
On 6/14/05, Bradley R. Gabe <brad@(protected)> 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@(protected) with the following text in body: > unsubscribe xsi
--- Unsubscribe? Mail Majordomo@(protected) with the following text in body: unsubscribe xsi
|
|