// interpolation/extrapolation toy // // 2003-10-19 Scott Lawrence BImage orig; BImage a, b, c; BImage dstN, dstS, dst; void setup() { size( 320, 240 ); ellipseMode(CENTER_DIAMETER); orig = loadImage( "orig.jpg" ); // original version // placeholder BImages dst = loadImage( "orig.jpg" ); // just a placeholder - FINAL destination dstN = loadImage( "orig.jpg" ); // NORTH dest dstS = loadImage( "orig.jpg" ); // SOUTH dest // (inter|extra)polation images a = loadImage( "orig.jpg" ); blur( a ); // a is for sharpness b = loadImage( "orig.jpg" ); makeColor( b, color( 128, 128, 128) ); // b is for contrast c = loadImage( "orig.jpg" ); desaturate( c ); // c is for saturation } void loop() { // find percentage values for the mouse float mx1 = ((float)(mouseX-(width/3))/(float)(width/3)); float my1 = ((float)(mouseY-(height/3))/(float)(height/3)); float mx2 = 1 - mx1; float my2 = 1 - my1; int po, ro, go, bo; int pa, ra, ga, ba; // compute colors for pixels // NORTH for ( int p=0 ; p> 16) & 0x000000ff; go = (po >> 8) & 0x000000ff; bo = po & 0x000000ff; pa = orig.pixels[p]; ra = (pa >> 16) & 0x000000ff; ga = (pa >> 8) & 0x000000ff; ba = pa & 0x000000ff; dstN.pixels[p] = color( (ro * mx1) + (ra * mx2), (go * mx1) + (ga * mx2), (bo * mx1) + (ba * mx2) ); } // SOUTH for ( int p=0 ; p> 16) & 0x000000ff; go = (po >> 8) & 0x000000ff; bo = po & 0x000000ff; pa = c.pixels[p]; ra = (pa >> 16) & 0x000000ff; ga = (pa >> 8) & 0x000000ff; ba = pa & 0x000000ff; dstS.pixels[p] = color( (ro * mx1) + (ra * mx2), (go * mx1) + (ga * mx2), (bo * mx1) + (ba * mx2) ); } // Vertical mix for ( int p=0 ; p> 16) & 0x000000ff; go = (po >> 8) & 0x000000ff; bo = po & 0x000000ff; pa = dstN.pixels[p]; ra = (pa >> 16) & 0x000000ff; ga = (pa >> 8) & 0x000000ff; ba = pa & 0x000000ff; dst.pixels[p] = color( (ro * my1) + (ra * my2), (go * my1) + (ga * my2), (bo * my1) + (ba * my2) ); } // blit the image to the screen if( mousePressed ) image( orig, 0, 0 ); else image( dst, 0, 0 ); // draw registration marks circles(); // screengrab? if( keyPressed && key == 'G' ) saveFrame(); } void desaturate( BImage ii ) { for( int p=0 ; p