by [Theo Verelst] A common thing in math and science is the rotation of a vector over an angle, as most with a math basis knowledge will know, a matrix can be used for the purpose of performing the rotation on a vector. A rotation matrix is even a very well formed matrix in general with normally excellent invertability and eigenvalue computability. It is not hard to make a orthogonal and even orthonomal basis for both the column and row space of a 2 dimensional matrix, and we can do so symbolically with simple geometic functions with a single rotation angle as a parameter for each of the 2x2 matrix elements which determines the rotation the matrix performs when multiplied to a vector. Clear application is computer graphics, but other computations, for instance where complex numbers are used such as in electronics or other solutions of differential equations, also can become more insightfull by clear (simple) vector representations. Bwise is about BlockWise programming, and also about Tk canvasses with interactions and graphical feedback, so this is a nice example. In tcl, without using anything specifically from the [Bwise] package, except I used the function window, and will use the 'create block' facility of it, the rotation of a 2 dimensional (2 real components obviously quantized to some computer number resolution) vector can be performed by: proc vec2rot { x y a } { set rotor.out [ expr cos($a) *$x - sin($a) *$y ] lappend rotor.out [ expr sin($a) *$x + cos($a) *$y ] } The procedure, like any, has only one return value, which is a list.