Quartz Composer Patch : Image Registration: ARGB Polar(radius,theta)
/* Published by b-l-a-c-k-o-p.com
Copyright (c) 2007-2012
http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode
*/
SAMPLE: QameraBetterPopArt3.qtzThis Core Image page 'de-registers' the color planes of an image. A common technique among graphic designers when running traditional print jobs. Of course, with PhotoShop, nobody does it at the printer anymore.
float as_radians(const float in_degrees)
{
return in_degrees * (3.14597/180.0);
}
vec2 from_polar(const float in_radius, const float in_theta)
{
float x = in_radius * sin(as_radians(in_theta));
float y = in_radius * cos(as_radians(in_theta));
return vec2(x,y);
}
kernel vec4 msBlackPolarRegistration(sampler input_image, float radius_r, float angle_r, float radius_g, float angle_g, float radius_b, float angle_b)
{
vec2 r_delta = from_polar(radius_r, angle_r);
vec2 g_delta = from_polar(radius_g, angle_g);
vec2 b_delta = from_polar(radius_b, angle_b);
vec2 center = samplerCoord(input_image);
vec4 pixel = sample(input_image, center);
vec4 red = sample(input_image, center + r_delta);
vec4 green = sample(input_image, center + g_delta);
vec4 blue = sample(input_image, center + b_delta);
pixel.r = red.r;
pixel.g = green.g;
pixel.b = blue.b;
return pixel;
}