|
![](/i/fill.gif) |
Sascha Ledinsky <sas### [at] users sourceforge net> wrote:
> Thank you!
>
> To be honest, I did not know how to quickly check if the matrix is
> correct, and since the resulting images looked right... :-/
>
> I have found the problem: The quaternion used to compute the matrix uses
> single precision floats. The fix was to first create a double-precision
> quaternion from it, then re-normalize that and feed the double-precision
> quaternion into the matrix...
Ok, so it was the Java3D package that used single precision floats ?
Btw.: I hope that you spotted my error in this part of my code:
#declare vN1 = vnormalize(vR1);
#declare vN2 = vnormalize(vcross(vN1, vR2));
#declare vN3 = vcross(vN2, vN1);
It should be:
#declare vN1 = vnormalize(vR1);
#declare vN3 = vnormalize(vcross(vN1, vR2));
#declare vN2 = vcross(vN3, vN1);
Btw.: I also recommend that you google for the "Gram-Schmidt process".
> Thanks again!
I'm glad that I could be of any help to you.
> But still, isn't the test POV performs too strict?
> I understand that POV-Ray must use double precision math for most
> operations, but would, in this case, the single-precision matrix really
> break the vista buffer?
> This will enforce all external applications that are used to create
> POV-scenes to use double-precision math throughout, and I don't know if
> it is available in all (script) languages...
I don't have any strong opinions regarding this. (And I don't really know if
such a matrix could cause any problems with the vista buffer.)
You may have a point, but if I had this problem myself, I would just
"correct" the matrix "manually" with a few lines of POV-script.
--
Tor Olav
http://subcube.com
Post a reply to this message
|
![](/i/fill.gif) |