Cross product via 3x3 anti-symmetric matrix



Hi all you Maxima experts,

I need a cross product via a 3x3 anti-symmetric matrix.

And I don't want to use load("vect") due to the commutative behaviour
with the dot product.

I want the following: A method/macro/whatever that takes a 3x1 vector
                                    [ ax ]
                                    [ ay ]
                                    [ az ]
and creates the following anti-symmetric matrix out of it
                             [  0    - az   ay  ]
                             [  az    0    - ax ]
                             [ - ay   ax    0   ]

Just as a syntactical transformation, putting the vector elements into
the right places inside the matrix (and adding a '-').
                             
I want to use this method in that way (the numbers reflect the
dimensions):

resultmatrix33 : crossp33(matrix33 . vector31) . othermatrix33;

It is important that it can transform the vector even if it is the
result of a calculation like  matrix33 . vector31

I don't know much about LISP so I might be thinking too much in C++
return value terms :-)

Best regards,
weaker