xxxxxxxxxx
74
// Daniel Shiffman
// http://codingtra.in
// http://patreon.com/codingtrain
// Code for: https://youtu.be/JUDYkxU6J0o
// Web editor transcription: David Snyder
let img;
let sorted;
let index = 0;
//for viewing the framerate
let frameP;
function preload() {
img = loadImage("data/sunflower100.jpg");
}
function setup() {
createCanvas(200, 100);
sorted = createImage(img.width, img.height);
sorted = img.get();
console.log("image copied");
frameP = createP(frameRate());
}
function draw() {
// for viewing the framerate
frameP.html("frameRate: " + nf(frameRate(), 2, 2));
sorted.loadPixels();
// Selection sort
for (let n = 0; n < 1; n++) {
let record = -1;
let selectedPixel = index;
for (let j = index; j < sorted.pixels.length; j += 4) {
let pix = color(sorted.pixels[j], sorted.pixels[j + 1], sorted.pixels[j + 2], sorted.pixels[j + 3]);
let b = hue(pix);
if (b > record) {
selectedPixel = j;
record = b;
}
}
// Swap selectedPixel with i
let temp = [];
temp[0] = sorted.pixels[index];
temp[1] = sorted.pixels[index + 1];
temp[2] = sorted.pixels[index + 2];
temp[3] = sorted.pixels[index + 3];
sorted.pixels[index] = sorted.pixels[selectedPixel];
sorted.pixels[index + 1] = sorted.pixels[selectedPixel + 1];
sorted.pixels[index + 2] = sorted.pixels[selectedPixel + 2];
sorted.pixels[index + 3] = sorted.pixels[selectedPixel + 3];
sorted.pixels[selectedPixel] = temp[0];
sorted.pixels[selectedPixel + 1] = temp[1];
sorted.pixels[selectedPixel + 2] = temp[2];
sorted.pixels[selectedPixel + 3] = temp[3];
if (index < sorted.pixels.length - 1) {
index += 4;
}
}
sorted.updatePixels();
background(0);
image(img, 0, 0);
image(sorted, 100, 0);
noStroke();
fill(255);
}