From 8344bf53352176880d08fa7a119281b1be0d6134 Mon Sep 17 00:00:00 2001 From: Jules Laplace Date: Mon, 23 May 2016 01:53:32 -0400 Subject: compute height from image aspect, keep some stronger clones --- js/ui/evolver.js | 74 ++++++++++++++++++++++++++++++++------------------------ 1 file changed, 42 insertions(+), 32 deletions(-) diff --git a/js/ui/evolver.js b/js/ui/evolver.js index 49c2fee..f41ab42 100644 --- a/js/ui/evolver.js +++ b/js/ui/evolver.js @@ -1,13 +1,14 @@ var evolver = (function(){ - setTimeout(init) + setTimeout(init, 10) var opt = { src: "img/test/quad.gif", w: 30, - h: 15, + h: 0, population: 10, strokes: 1, + randomize: false, } if (window.location.hash.length) { window.location.hash.replace("#","").split("&").forEach(function(s){ @@ -45,39 +46,17 @@ var evolver = (function(){ function init () { nopaint.debug = false - - main_canvas = canvas - canvas.resize(opt.w, opt.h) -// canvas.forEach(function(lex,x,y){ -// lex.bg = randint(16) -// }) - for (var i = 0; i < clone_count; i++) { - clones[i] = { - el: document.createElement("div"), - canvas: canvas.clone(), - score: 0, - hash: -1, - } -// clones[i].canvas.append(clones[i].el) -// clones[i].el.className = "rapper" -// document.getElementById("clones").appendChild( clones[i].el ) - clones[i].canvas.forEach(function(lex){ - lex.build = noop - }) - controls.fg.update = noop - controls.bg.update = noop - controls.char.update = noop - controls.brush_w.build = noop - controls.brush_h.build = noop - } load(opt.src, go) } function load(src, fn){ var img = new Image () img.onload = function(){ target = drawImage(t_ctx, img) + if (opt.h == 0) { + opt.h = Math.round(opt.w * 8/15) + } last_score = 0 - go() + ready() } if (src.match(/^http/)) { src = "http://asdf.us/cgi-bin/proxy?" + src @@ -88,6 +67,33 @@ var evolver = (function(){ ctx.drawImage(img, 0, 0, compare_w, compare_h) return { width: compare_w, height: compare_h, data: ctx.getImageData(0,0,compare_w,compare_h).data, channels: 4 } } + function ready () { + main_canvas = canvas + canvas.resize(opt.w, opt.h) + if (opt.randomize) { + canvas.forEach(function(lex,x,y){ + lex.bg = randint(16) + }) + } + for (var i = 0; i < clone_count; i++) { + clones[i] = { + el: document.createElement("div"), + canvas: canvas.clone(), + score: 0, + hash: -1, + } + clones[i].canvas.forEach(function(lex){ + lex.build = noop + }) + } + controls.fg.update = noop + controls.bg.update = noop + controls.char.update = noop + controls.brush_w.build = noop + controls.brush_h.build = noop + + go() + } function go () { if (evolver.paused) return step_el.innerHTML = step++ @@ -151,14 +157,18 @@ var evolver = (function(){ clones.forEach(function(clone, i){ if (i < clones_to_keep) return var clone_to_copy - if (i < clones.length / 4) { - clone_to_copy = third_best_clone + if (i-clones_to_keep > (clones.length-clones_to_keep) * 0.45) { + clone_to_copy = best_clone } - else if (i < clones.length / 2) { + else if (i-clones_to_keep > (clones.length-clones_to_keep) * 0.25) { clone_to_copy = next_best_clone } + else if (i-clones_to_keep > (clones.length-clones_to_keep) * 0.1) { + clone_to_copy = third_best_clone + } else { - clone_to_copy = best_clone + // keep some of the stronger mutants + return } clone.canvas.forEach(function(lex,x,y) { lex.assign( clone_to_copy.getCell(x,y) ) -- cgit v1.2.3-70-g09d2