summaryrefslogtreecommitdiff
path: root/js/ui
diff options
context:
space:
mode:
authorJules Laplace <jules@okfoc.us>2016-05-23 01:53:32 -0400
committerJules Laplace <jules@okfoc.us>2016-05-23 01:53:32 -0400
commit8344bf53352176880d08fa7a119281b1be0d6134 (patch)
tree46eab3196530633bc2eabbdd13d709fcb8eec0e0 /js/ui
parentc93b67d8bc34b230b9af8fc4fe15c0119e152af4 (diff)
compute height from image aspect, keep some stronger clones
Diffstat (limited to 'js/ui')
-rw-r--r--js/ui/evolver.js74
1 files 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) )