|
|
Ben Birdsey wrote:
>
> Here's a slightly different method which might be a little faster,
> since it uses intrinsically defined functions and pre-calculates more of
> the values.
>
> Taking my cue from Rune, define
>
> /////////////////////////////////
>
> #declare bX = <1,-0.05,0>;
> #declare bY = <-0.5,0.5,0>;
> #declare bZ = <0,0,1>;
> #declare bC = <0,0,0>;
>
> // The 16 statements to fill out the 16 elements of the inverse
> // New system devised by Ben Birdsey (12/31/00)
>
> #declare xp = vcross(bY,bZ);
> #declare yp = vcross(bZ,bX);
> #declare zp = vcross(bX,bY);
> #declare det = vdot(bX,xp);
>
> #declare c11 = xp.x / det;
> #declare c12 = yp.x / det;
> #declare c13 = zp.x / det;
> #declare c14 = 0;
>
> #declare c21 = xp.y / det;
> #declare c22 = yp.y / det;
> #declare c23 = zp.y / det;
> #declare c24 = 0;
>
> #declare c31 = xp.z / det;
> #declare c32 = yp.z / det;
> #declare c33 = zp.z / det;
> #declare c34 = 0;
>
> #declare c41 = -vdot(xp,bC)/det;
> #declare c42 = -vdot(yp,bC)/det;
> #declare c43 = -vdot(zp,bC)/det;
> #declare c44 = 1;
I haven't checked or tried your code, so I don't know if
it does what it's supposed to do.
But if you are going for optimizations, then I THINK that
doing it this way this will increase the parsing speed:
#declare bX = < 1.00, -0.05, 0.00>;
#declare bY = <-0.50, 0.50, 0.00>;
#declare bZ = < 0.00, 0.00, 1.00>;
#declare bC = < 0.00, 0.00, 0.00>;
#declare det = vdot(bX, vcross(bY, bZ));
#declare xp = vcross(bY, bZ)/det;
#declare yp = vcross(bZ, bX)/det;
#declare zp = vcross(bX, bY)/det;
#declare c11 = xp.x;
#declare c12 = yp.x;
#declare c13 = zp.x;
#declare c14 = 0;
#declare c21 = xp.y;
#declare c22 = yp.y;
#declare c23 = zp.y;
#declare c24 = 0;
#declare c31 = xp.z;
#declare c32 = yp.z;
#declare c33 = zp.z;
#declare c34 = 0;
#declare c41 = -vdot(xp, bC);
#declare c42 = -vdot(yp, bC);
#declare c43 = -vdot(zp, bC);
#declare c44 = 1;
(Note that I haven't checked my modifications either.)
Regards,
Tor Olav
--
mailto:tor### [at] hotmailcom
http://www.crosswinds.net/~tok/tokrays.html
Post a reply to this message
|
|