[cairo] radial transformations and non-linear gradients

Jon Wild wild at music.mcgill.ca
Tue Jun 9 08:23:20 PDT 2009


Just getting started with Cairo (and with image manipulation in general). 
Could anyone point me to a way to perform (or simulate) radial 
transformations using polar coordinates? I would like to take a disk with 
radius normalised to 1, and transform the source image within that disk 
such that point (r, theta) gets sent to (f(r), theta), where f is an 
exponential or trig function. The goal is a "bubble" type transform, as if 
a refracting glass hemisphere was placed above the image at that point.

Another question: a colour gradient moves uniformly along a line in 3D rgb 
space between the colour stops. How do you make (or simulate) a gradient 
that moves along that line at a non-linear rate? For example an 
exponential gradient--in other words transform the linear gradient so that 
when you are x% of the way between the end points on the surface, the 
resulting colour is (x%)^n between the colour stops? (I can see breaking 
the gradient into many parts, with linear relationships in each, to 
approximate the function--but that seems tedious)

Thank you for any help!  --Jon

More information about the cairo mailing list