# [cairo] Cairo transformations. Old bug that has been solved?

Dov Grobgeld dov.grobgeld at gmail.com
Sun Oct 9 09:46:07 PDT 2011

```I forgot to mention that my versions are:

cairo-1.10.2
pycairo-1.8.

running under Fedora 14.

On Sun, Oct 9, 2011 at 17:21, Dov Grobgeld <dov.grobgeld at gmail.com> wrote:

> I'm trying to understand the affine transformations in cairo and I'm
> currently quite confused. I don't get the same result when using
> matrix_multiply() as I get when doing the matrix multiplications "manually"
> through numpy:
>
> Consider the following python code:
>
> import cairo
> import numpy as np
>
> # routine to convert a cairo transformation to a numpy matrix
> def c2n(c):
>     return np.matrix([[c[0],c[1],c[4]], [c[2],c[3],c[5]], [0,0,1]])
>
> # Create two cairo matrices for rotation and translation
> mr = cairo.Matrix() ; mr.rotate(np.pi/6)
> mt = cairo.Matrix() ; mt.translate(1,1)
>
> # Multiply these together and print the result
> print mt.multiply(mr)     # Yields  cairo.Matrix(0.866025, 0.5, -0.5,
> 0.866025, 0.366025, 1.36603)
>
> # Multiply these together using numpy. Note order change corresponding to
> first applying mr and then mt
> print c2n(mr)*c2n(mt)   # Yields matrix([[ 0.8660254,  0.5      ,
> 1.3660254],
>                         #                [-0.5      ,  0.8660254,
> 0.3660254],
>                         #                [ 0.       ,  0.       ,  1.
> ]])
>
> Note that the x0 and the y0 values of the result is swapped in the cairo
> input compared to the numpy output.
>
> What is even more confusing to me is that the c-source code in git seems to
> be ok.
>
> I can see several possible reasons:
>
>    1. From looking at this problem for too long I'm making a wrong
>    assumption.
>    2. The c-code has recently been updated to fix a bug that I have in my
>    cairo version.
>    3. There is a bug in the python binding.
>
> Before I probe this further, does someone have any idea of what is going
> on?
>
> Thanks!
> Dov
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.cairographics.org/archives/cairo/attachments/20111009/06c1d6f5/attachment.htm>
```