// P_3_1_3_01 // /** * analysing and sorting the letters of a text * changing the letters alpha value in relation to frequency * * MOUSE * position x : interpolate between normal text and sorted position * * KEYS * 1 : toggle alpha mode * s : save png */ var joinedText; var alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZÉÈÔ',.;:!? "; counters = [alphabet.length]; var charSize; var charColor = 0; var posX, posY; var drawAlpha = true; function preload(){ lines = loadStrings("perec.txt"); } function setup() { createCanvas(780, 780); joinedText = join(lines, " "); textFont("Arial"); textSize(10); countCharacters(); } function draw() { textFont("Arial"); background(255); noStroke(); smooth(); posX = 20; posY = 40; // go through all characters in the text to draw them for (var i = 0; i < joinedText.length; i++) { // again, find the index of the current letter in the alphabet var s = str(joinedText.charAt(i)).toUpperCase(); var uppercaseChar = s.charAt(0); var index = alphabet.indexOf(uppercaseChar); if (index < 0) continue; if (drawAlpha) fill(87, 35, 129, counters[index]*3); else fill(87, 35, 129); textSize(18); var sortY = index*20+40; var m = map(mouseX, 50,width-50, 0,1); m = constrain(m, 0, 1); var interY = lerp(posY, sortY, m); text(joinedText.charAt(i), posX, interY); posX += textWidth(joinedText.charAt(i)); if (posX >= width-200 && uppercaseChar == ' ') { posY += 30; posX = 20; } } } function countCharacters(){ for (var i = 0; i < joinedText.length; i++) { // get one char from the text, convert it to a string and turn it to uppercase var c = joinedText.charAt(i); var s = str(c); s = s.toUpperCase(); // convert it back to a char var uppercaseChar = s.charAt(0); // get the position of this char inside the alphabet string var index = alphabet.indexOf(uppercaseChar); // increase the respective counter if (index >= 0) counters[index]++; } } function keyTyped(){ if (key == 's' || key == 'S') save("P_3_1_3_01.png"); if (key == '1') drawAlpha = !drawAlpha; }