# [Matrix-SIG] matrix transformations on vector graphics

**Warren Focke
**
Warren Focke <warren@xtepca.gsfc.nasa.gov>

*Wed, 15 Apr 1998 15:59:22 -0400 (EDT)*

On Wed, 15 Apr 1998, David Ascher wrote:
>* On Wed, 15 Apr 1998, Just van Rossum wrote:
*>* >
*>* > Is there a convenient way to apply the matrix to the vector array?
*>*
*...
>* And then, you can just use the 'dot()' function:
*>*
*>* >>> Numeric.dot(v, tm)
*>* array([[ 0., 0.],
*>* [ 10., 0.],
*>* [ 100., -75.]])
*>*
*...
>* > If I turn the x and y values into separate arrays, I could probably do
*>* > something like this:
*>* >
*>* > [x, y] = Numeric.transpose(v)
*>* > xnew = tm[0][0] * x + tm[0][1] * y + tm[2][0]
*>* > ynew = tm[1][0] * x + tm[1][1] * y + tm[2][1]
*>* >
*>* > But if I in general would prefer xy pairs, I would have to do
*>* > Numeric.transpose() before and after I do this. Or is transpose()
*>* > relatively cheap? Did I just answer my own question?
*>*
*>* transpose is very cheap, since it doesn't move any of the data, just the
*>* description of the data.
*>*
*
But PyArray_ContiguousFromObject eventually gets called on both arguments
to Numeric.dot. Does this not copy the data of transposed arrays,
negating the ``cheapness'' in this case (on the input side, at least)?
Warren Focke