If it's computing theta/2, perhaps the trig formulas are for converting from a quaternion to a matrix? Does it look like the matrix in the quaternion section of this page?<div><br></div><div><a href="http://en.wikipedia.org/wiki/Rotation_operator_(vector_space)">http://en.wikipedia.org/wiki/Rotation_operator_(vector_space)</a><br>
<br><div class="gmail_quote">On Mon, May 14, 2012 at 10:30 PM, Shawn Singh <span dir="ltr"><<a href="mailto:shawnsingh@chromium.org" target="_blank">shawnsingh@chromium.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br><div>Hi all,</div><div><br></div><div>I'm looking at TransformationMatrix::rotate3d(rx, ry, rz).  This code does something indirect, and I don't understand why.  Instead of initializing each rotation using sin(theta), cos(theta),  the code computes theta/2, and then uses trig identities to initialize the rotation matrix.</div>

<div><br></div><div>I checked really quickly with fprintf, and it seems like we could actually gain 1-2 bits of precision if we avoid doing this, and use sin(theta) and cos(theta) directly.  In the current code, more error seems to accumulate due to sin^2 (theta / 2).  Squaring that value instantly increases the error inherent in the computation.  I cannot think of any valid reason that this code uses those trig identities instead of directly using sin and cos.  Does anyone else know why?  Is this worth changing to gain some precision?</div>

<div><br></div><div>On a secondary note, its also fishy that we are freely mixing floats and doubles in the rotation code.  But, I don't think that is as significant error accumulation as the sin^2.</div><div><br></div>

<div>Thanks,</div><div>~Shawn</div>
<br>_______________________________________________<br>
webkit-dev mailing list<br>
<a href="mailto:webkit-dev@lists.webkit.org">webkit-dev@lists.webkit.org</a><br>
<a href="http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev" target="_blank">http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev</a><br>
<br></blockquote></div><br></div>