xxxxxxxxxx
60
let cam;
let xScale;
let yScale;
let a = 0;
function setup() {
createCanvas(windowWidth, windowHeight);
angleMode(DEGREES);
rectMode(CENTER);
// setup the camera
cam = createCapture(VIDEO);
cam.size(40, 30);
cam.hide();
// setup some scale variables we'll use
// for sizing rects later
xScale = width / cam.width;
yScale = height / cam.height;
}
function draw() {
background(220);
// tell p5 we're going to use the pixel []
cam.loadPixels();
// go through all the camera pixels in this frame
// first by row (y)
for (let y = 0; y < cam.height; y++) {
// then by column (x)
for (let x = cam.width; x >= 0; x--) {
// get the r,g,b of each pixel
let i = (x + y * cam.width) * 4;
let r = cam.pixels[i + 0];
let g = cam.pixels[i + 1];
let b = cam.pixels[i + 2];
// use that color to draw a rect to the screen
// stroke(48);
noStroke();
fill(r, g, b);
push();
translate((cam.width - x - 1) * xScale, y * yScale);
rotate(a);
rect(0, 0, xScale, yScale, xScale / 4);
pop();
} // end x for()
} // end y for()
a += 1;
// tell p5 we're done messing with pixel []
cam.updatePixels();
}