xxxxxxxxxx
78
var TS = TotalSerialism;
var Gen = TS.Generative;
var Algo = TS.Algorithmic;
var Mod = TS.Transform;
var Rand = TS.Stochastic;
var Stat = TS.Statistic;
var Util = TS.Utility;
var sAmount;
var sOffset;
var barWidth = 3;
var margin = 5;
var textMargin = 30;
function windowResized(){
resizeCanvas(windowWidth, 200);
}
function setup() {
createCanvas(windowWidth, 200);
sAmount = createSlider(2, 64, 12);
sOffset = createSlider(0, 64, 0);
}
function draw() {
background(255);
var amount = sAmount.value();
var offset = sOffset.value();
// Some generative code from Total-Serlialism package
var vals = Algo.pell(amount, offset);
var code = ['Algo.pell('+amount, offset+");"].join(", ");
var min = Stat.minimum(vals);
var max = Stat.maximum(vals);
var range = max - min;
var step = (width - textMargin) / vals.length;
var prevH;
var imgH = height - margin * 2;
for (let i in vals){
let pos = i * step;
let h = height - (vals[i]-min) / (max-min) * imgH-margin;
fill(150);
noStroke();
rect(pos+barWidth, h, step-barWidth, height);
strokeWeight(2);
stroke(0);
line(pos+barWidth, h, pos+step, h);
}
textFont('inconsolata');
// draw center line
strokeWeight(1);
stroke(100);
line(0, height/2, width, height/2);
// draw top maximum value
fill(0);
noStroke();
textSize(14);
textAlign(RIGHT, TOP);
text(max, width-margin, 0);
// draw bottom minimum value
textAlign(RIGHT, BOTTOM);
text(min, width-margin, height);
fill(0, 150);
textAlign(LEFT, TOP);
text(code, margin, margin);
}