diff --git a/sketches/imageOverlap.js b/sketches/imageOverlap.js index 0c8ec4d..887948b 100644 --- a/sketches/imageOverlap.js +++ b/sketches/imageOverlap.js @@ -1,7 +1,8 @@ let img1, img2; let mode = [0,0,0]; //rgb each coloum says if 1 look for bigger if -1 look for smaller if 0 ignore in decition -let imageList = ["assets/wallpaper/dear.png", "assets/wallpaper/elphantJap.jpg", "assets/wallpaper/lagrugru.jpg"]; +let imageList = ["assets/wallpaper/dear.png", "assets/wallpaper/elphantJap.jpg"]; let loadedImages = []; +let doubleContinue = false; async function setup() { makeRandomMode(); console.log(mode); @@ -13,31 +14,27 @@ async function setup() { console.error('Failed to load ' + imageList[i], err); } } - try { - img1 = await new Promise(resolve => loadImage('assets/wallpaper/dear.png', resolve)); - console.log('img1 loaded'); - } catch (err) { - console.error('Failed to load dear.png', err); + if (loadedImages.length == 0) { + throw new Error('No images loaded'); + return; } - try { - img2 = await new Promise(resolve => loadImage('assets/wallpaper/elphantJap.jpg', resolve)); - console.log('img2 loaded'); - } catch (err) { - console.error('Failed to load elphantJap.jpg', err); - } - - createCanvas(img1.width, img1.height); + createCanvas(loadedImages[0].width, loadedImages[0].height); background(255, 255, 255) - for (let col = 0; col < img1.width; col += 1) { - for (let row = 0; row < img1.height; row += 1) { - if (img2.get(col, row) == null|| img2.get(col, row) == undefined) { + for (let col = 0; col < loadedImages[0].width; col += 1) { + for (let row = 0; row < loadedImages[0].height; row += 1) { + for (let i = 0; i < loadedImages.length; i++) { + if (loadedImages[i].get(col, row) == null|| loadedImages[i].get(col, row) == undefined) { + doubleContinue = true; + continue; + } + } + if (doubleContinue){ + doubleContinue = false; continue; } - let color1 = img1.get(col, row); - let color2 = img2.get(col, row); - stroke(color(checkWhatPixelToTake(color1, color2))); + stroke(color(checkWhatPixelToTake(col, row))); strokeWeight(2); point(col, row); } @@ -47,40 +44,41 @@ async function setup() { function makeRandomMode() { mode = [round(random(-1, 1)), round(random(-1, 1)), round(random(-1, 1))]; - if ([abs(mode[0]), abs(mode[1]), abs(mode[2])] == [0,0,0]) { + if (abs(mode[0]) + abs(mode[1]) + abs(mode[2]) === 0) { mode = [1,1,1]; } + console.log("arrarray",[abs(mode[0]), abs(mode[1]), abs(mode[2])]); } -function checkWhatPixelToTake(color1, color2) { - let sum1=0; - let sum2=0; - if (mode[0] == 1) { - sum1 += color1[0]; - sum2 += color2[0]; - }else if (mode[0] == -1) { - sum1 += (255-color1[0]); - sum2 += (255-color2[0]); +function checkWhatPixelToTake(col, row) { + let sumImage = []; + for (let i = 0; i < loadedImages.length; i++) { + sumImage[i] = 0; } - if (mode[1] == 1) { - sum1 += color1[1]; - sum2 += color2[1]; - }else if (mode[1] == -1) { - sum1 += (255-color1[1]); - sum2 += (255-color2[1]); + for (let i = 0; i <= 2; i++) { + if(mode[i] == 1){ + for (let j = 0; j < loadedImages.length; j++) { + sumImage[j] += loadedImages[j].get(col, row)[i]; + } + }else if (mode[i] == -1) { + for (let j = 0; j < loadedImages.length; j++) { + sumImage[j] += (255 - loadedImages[j].get(col, row)[i]); + } + } } - if (mode[2] == 1) { - sum1 += color1[2]; - sum2 += color2[2]; - }else if (mode[2] == -1) { - sum1 += (255-color1[2]); - sum2 += (255-color2[2]); + let bestSum = 0; + let bestSumIndex = -1; + for (let i = 0; i < sumImage.length; i++) { + if (sumImage[i] >= bestSum) { + bestSum = sumImage[i]; + bestSumIndex = i; + } } - if (sum1 > sum2) { - return color1; - } else { - return color2; + if (bestSumIndex == -1) { + console.error('best pixel not found'); + return loadedImages[0].get(col, row); } + return loadedImages[bestSumIndex].get(col, row); } function draw() {