Difference between revisions of "User:Pedro Oval/Uniform random rotation"
Jump to navigation
Jump to search
Pedro Oval (talk | contribs) m (Changed link for the reference in the book, as the previous one ceased to work) |
Pedro Oval (talk | contribs) m (Remove unnecessary local variables) |
||
Line 11: | Line 11: | ||
float r1 = llSqrt(1.0 - x0); | float r1 = llSqrt(1.0 - x0); | ||
float r2 = llSqrt(x0); | float r2 = llSqrt(x0); | ||
return <r1*llSin(a1), r1*llCos(a1), r2*llSin(a2), r2*llCos(a2)>; | |||
} | } | ||
</lsl> | </lsl> |
Revision as of 02:33, 20 December 2011
Based on a "graphics gem" by Ken Shoemake [1]
<lsl> rotation UniformRandRot() {
// Method from Graphic Gems 3, "Uniform Random Rotations" // by Ken Shoemake, p.130 float x0 = llFrand(1.0); float a1 = llFrand(TWO_PI); float a2 = llFrand(TWO_PI); float r1 = llSqrt(1.0 - x0); float r2 = llSqrt(x0); return <r1*llSin(a1), r1*llCos(a1), r2*llSin(a2), r2*llCos(a2)>;
} </lsl>