[cairo] Adding cairo_shear and family
Paolo Bonzini
bonzini at gnu.org
Mon Jan 12 00:14:15 PST 2009
Bill Spitzak wrote:
> It might make more sense to make the call do the composite operation
> that preserves area:
>
> [1+sx*sy sx]
> [sy 1+sx*sy]
>
> Note that if either sx or sy are zero then it is the same as the
> proposed call.
I like this. But the composite operation that preserves area is
[sqrt(1+sx*sy) sx
sy sqrt(1+sx*sy]
whose determinant is 1. Your matrix has determinant sx^2 sy^2+sx sy+1.
For example, with this matrix
cairo_shear (cr, sin(a), -sin(a));
would be the same as cairo_rotate (cr, a) for angle between -90 and 90:
[sqrt(1-sin^2 a) sin a [cos a sin a
-sin a sqrt(1-sin^2 a)] = -sin a cos a]
Paolo
More information about the cairo
mailing list