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}]