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 (<lsl> to <source>) |
||
(2 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
Based on a "graphics gem" by Ken Shoemake [http://books.google.com/books?id=xmW_u3mQLmQC&pg=PA130] | Based on a "graphics gem" by Ken Shoemake [http://books.google.com/books?id=xmW_u3mQLmQC&pg=PA130] | ||
< | <source lang="lsl2"> | ||
rotation UniformRandRot() | rotation UniformRandRot() | ||
{ | { | ||
// Method from Graphic Gems 3, "Uniform Random Rotations" | // Method from Graphic Gems 3, "Uniform Random Rotations" | ||
// by Ken Shoemake, p.130 | // by Ken Shoemake, p.130 | ||
float | float r2 = llFrand(1.0); | ||
float a1 = llFrand(TWO_PI); | float a1 = llFrand(TWO_PI); | ||
float a2 = llFrand(TWO_PI); | float a2 = llFrand(TWO_PI); | ||
float r1 = llSqrt(1.0 - | float r1 = llSqrt(1.0 - r2); | ||
r2 = llSqrt(r2); | |||
return <r1*llSin(a1), r1*llCos(a1), r2*llSin(a2), r2*llCos(a2)>; | |||
} | } | ||
</ | </source> |
Latest revision as of 20:35, 23 January 2015
Based on a "graphics gem" by Ken Shoemake [1]
rotation UniformRandRot()
{
// Method from Graphic Gems 3, "Uniform Random Rotations"
// by Ken Shoemake, p.130
float r2 = llFrand(1.0);
float a1 = llFrand(TWO_PI);
float a2 = llFrand(TWO_PI);
float r1 = llSqrt(1.0 - r2);
r2 = llSqrt(r2);
return <r1*llSin(a1), r1*llCos(a1), r2*llSin(a2), r2*llCos(a2)>;
}