mirror.pde

来自「This is processing for java examples.」· PDE 代码 · 共 73 行

PDE
73
字号
/** * Mirror  * by Daniel Shiffman.   *  * Each pixel from the video source is drawn as a rectangle with rotation based on brightness.    */   import processing.video.*;// Size of each cell in the gridint cellSize = 20;// Number of columns and rows in our systemint cols, rows;// Variable for capture deviceCapture video;void setup() {  size(640, 480, P2D);  frameRate(30);  cols = width / cellSize;  rows = height / cellSize;  colorMode(RGB, 255, 255, 255, 100);  // Uses the default video input, see the reference if this causes an error  video = new Capture(this, width, height, 12);    background(0);}void draw() {   if (video.available()) {    video.read();    video.loadPixels();        // Not bothering to clear background    // background(0);      // Begin loop for columns    for (int i = 0; i < cols; i++) {      // Begin loop for rows      for (int j = 0; j < rows; j++) {              // Where are we, pixel-wise?        int x = i*cellSize;        int y = j*cellSize;        int loc = (video.width - x - 1) + y*video.width; // Reversing x to mirror the image              float r = red(video.pixels[loc]);        float g = green(video.pixels[loc]);        float b = blue(video.pixels[loc]);        // Make a new color with an alpha component        color c = color(r, g, b, 75);              // Code for drawing a single rect        // Using translate in order for rotation to work properly        pushMatrix();        translate(x+cellSize/2, y+cellSize/2);        // Rotation formula based on brightness        rotate((2 * PI * brightness(c) / 255.0));        rectMode(CENTER);        fill(c);        noStroke();        // Rects are larger than the cell for some overlap        rect(0, 0, cellSize+6, cellSize+6);        popMatrix();      }    }  }}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?