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

  1. # if original vector is {x y z 1}
  2. # then {x' y' z' 1} = M1*M0*{x y z 1}
  3.  
  4. set a [expr {$a1*$a0 + $b1*$d0 + $c1*$g0}]
  5. set b [expr {$a1*$b0 + $b1*$e0 + $c1*$h0}]
  6. set c [expr {$a1*$c0 + $b1*$f0 + $c1*$i0}]
  7. set d [expr {$d1*$a0 + $e1*$d0 + $f1*$g0}]
  8. set e [expr {$d1*$b0 + $e1*$e0 + $f1*$h0}]
  9. set f [expr {$d1*$c0 + $e1*$f0 + $f1*$i0}]
  10. set g [expr {$g1*$a0 + $h1*$d0 + $i1*$g0}]
  11. set h [expr {$g1*$b0 + $h1*$e0 + $i1*$h0}]
  12. set i [expr {$g1*$c0 + $h1*$f0 + $i1*$i0}]
  13. set u [expr {$a1*$u0 + $b1*$v0 + $c1*$w0 + $u1}]
  14. set v [expr {$d1*$u0 + $e1*$v0 + $f1*$w0 + $v1}]
  15. set w [expr {$g1*$u0 + $h1*$v0 + $i1*$w0 + $w1}]
  16.  
  17. set x' [expr {$a*$x+$b*$y+$c*$z+$u}]
  18. set y' [expr {$d*$x+$e*$y+$f*$z+$v}]
  19. set y' [expr {$g*$x+$h*$y+$i*$z+$w}]