Posted to tcl by mjanssen at Tue Nov 03 19:31:51 GMT 2009view pretty

# if original vector is {x y z 1}
# then {x' y' z' 1} = M1*M0*{x y z 1}

set a [expr {$a1*$a0 + $b1*$d0 + $c1*$g0}]
set b [expr {$a1*$b0 + $b1*$e0 + $c1*$h0}]
set c [expr {$a1*$c0 + $b1*$f0 + $c1*$i0}]
set d [expr {$d1*$a0 + $e1*$d0 + $f1*$g0}]
set e [expr {$d1*$b0 + $e1*$e0 + $f1*$h0}]
set f [expr {$d1*$c0 + $e1*$f0 + $f1*$i0}]
set g [expr {$g1*$a0 + $h1*$d0 + $i1*$g0}]
set h [expr {$g1*$b0 + $h1*$e0 + $i1*$h0}]
set i [expr {$g1*$c0 + $h1*$f0 + $i1*$i0}]
set u [expr {$a1*$u0 + $b1*$v0 + $c1*$w0 + $u1}]
set v [expr {$d1*$u0 + $e1*$v0 + $f1*$w0 + $v1}]
set w [expr {$g1*$u0 + $h1*$v0 + $i1*$w0 + $w1}]

set x' [expr {$a*$x+$b*$y+$c*$z+$u}]
set y' [expr {$d*$x+$e*$y+$f*$z+$v}]
set y' [expr {$g*$x+$h*$y+$i*$z+$w}]