43
edits
| Line 263: | Line 263: | ||
| [[File:Documentation.gif]] | [[File:Documentation.gif]] | ||
| <source lang = "java"> | |||
| PImage img; | |||
| PImage bg; | |||
| PImage[] parts = new PImage[500]; | |||
| PImage[] masks = new PImage[500]; | |||
| PGraphics tree1; | |||
| int x = 0; | |||
| int y = 500; | |||
| int y1 = 500; | |||
| int ym = 500; | |||
| int frame = 0; | |||
| PImage m; | |||
| int b=0; | |||
| void setup(){ | |||
|  frameRate(30); | |||
|  size(500,500); | |||
|  smooth(); | |||
|  tree1 = createGraphics(500,500); | |||
|  img = loadImage("city.jpg"); | |||
|  m = loadImage("m.png"); | |||
|  bg = loadImage("nature.jpg"); | |||
|  bg.resize(width,height); | |||
|  img.resize(width,height); | |||
|   for (int o=0 ; o < parts.length; o++) | |||
|  {  | |||
|   image(img, 0, 0); | |||
|   y = y - 1; | |||
|   parts[o] = get(x,y,500,1); | |||
|   parts[o].loadPixels(); | |||
|  } | |||
|  for (int p=0 ; p < masks.length; p++) | |||
|  {  | |||
|   image(m, 0, 0); | |||
|   ym = ym - 1; | |||
|   masks[p] = get(0,ym,500,1); | |||
|  } | |||
|  } | |||
| void draw() { | |||
|    bg.filter(GRAY); | |||
|    background(bg); | |||
|    bg.mask(m); | |||
|    println(frame); | |||
|    y1 = height - 1;   | |||
|    masks[frame].mask(parts[frame]); | |||
|    y1 = y1 - (frame * 1); | |||
|    image(parts[frame],0,y1); | |||
|    image(bg,0,0); | |||
|    frame = frame + 1; | |||
|    if( frame  >= 500){ | |||
|      frame = 0; | |||
|    } | |||
|   } | |||
| void branches(float beginX, float beginY, float bLength, float angle) | |||
| { | |||
|   float endX = beginX + bLength*cos(angle); | |||
|   float endY = beginY + bLength*sin(angle); | |||
|   strokeWeight(map(bLength, height/4, 3, 20, 1)); | |||
|   stroke(0); | |||
|   line(beginX, beginY, endX, endY); | |||
|   if (bLength  > 3) | |||
|   { | |||
|     if (random(1) > 0.1) branches(endX, endY, bLength*random(0.6, 0.8), angle - random(PI/15, PI/5)); | |||
|     if (random(1) > 0.1) branches(endX, endY, bLength*random(0.6, 0.8), angle + random(PI/15, PI/5)); | |||
|       fill(0); | |||
|       noStroke(); | |||
|       ellipse(endX, endY,(random(10)+2),(random(10)+2)); | |||
|   } | |||
| } | |||
| void mask(){ | |||
|   tree1.beginDraw(); | |||
|   background(255,255); | |||
|   for(int i= 0 ; i<5;i++){ | |||
|   branches(width/2, height, height/5, -HALF_PI); | |||
|   alpha(0); | |||
|   } | |||
|   tree1.endDraw(); | |||
| } | |||
| void keyPressed(){ | |||
|   mask(); | |||
|   save("data/" + "m.png"); | |||
|   background(0); | |||
|   m = loadImage("m.png"); | |||
|   for (int p=0 ; p < masks.length; p++) | |||
|  {  | |||
|   image(m, 0, 0); | |||
|   ym = ym - 10; | |||
|   masks[p] = get(0,ym,500,1); | |||
|  } | |||
|  frame = 0; | |||
|  bg = loadImage("nature.jpg"); | |||
|  bg.resize(width,height); | |||
| } | |||
| </source> | |||
| [https://www.flickr.com/photos/137372572@N08/26087001545/ The Result] | [https://www.flickr.com/photos/137372572@N08/26087001545/ The Result] | ||
| [[File:Result.png]] | [[File:Result.png]] | ||
edits