Documentation
Aléatoire
Deux outils : random() et noise().
random
random()valeur entre 0 et 1random(max)valeur entre 0 et maxrandom(min, max)valeur entre min et maxrandom(tableau)un élément au hasard du tableaulet palette = ['#0d0d0d', '#e8543f', '#f2e8d5'];
for (let i = 0; i < 50; i++) {
fill(random(palette));
circle(random(width), random(height), random(10, 60));
}
Stabiliser l'aléatoire
Tirer une seule fois
let positions = [];
function setup() {
createCanvas(600, 600);
for (let i = 0; i < 50; i++) {
positions.push({ x: random(width), y: random(height) });
}
}
function draw() {
background(240);
for (let i = 0; i < positions.length; i++) {
let p = positions[i];
circle(p.x, p.y, 20);
}
}
Fixer la seed
randomSeed() rend la séquence reproductible : même seed, même tirages.
function draw() {
randomSeed(25); // toujours la même série
background(240);
for (let i = 0; i < 50; i++) {
circle(random(width), random(height), 20);
}
}
noise
noise() renvoie une valeur entre 0 et 1, comme random().
// random ; chaque valeur ignore la précédente
random(), random(), random() // 0.83 ; 0.12 ; 0.67
// noise ; les valeurs voisines se ressemblent
noise(0.1), noise(0.2), noise(0.3) // 0.51 ; 0.54 ; 0.58
Une valeur qui dérive dans le temps
let t = 0;
let step = 0.01;
function draw() {
background(240);
let x = noise(t) * width;
let y = noise(t + 1000) * height;
circle(x, y, 40);
t += step;
}
Le step est le principal paramètre : 0.001 mouvement lent/lisse, 0.1 nerveux, 1 proche du random().
noise 2D
noise(x, y) varie selon 2 paramètres
let scale = 0.01;
for (let x = 0; x < width; x += 10) {
for (let y = 0; y < height; y += 10) {
let n = noise(x * scale, y * scale);
fill(n * 255);
noStroke();
rect(x, y, 10, 10);
}
}
noise 3D
function draw() {
for (let x = 0; x < width; x += 10) {
for (let y = 0; y < height; y += 10) {
let n = noise(x * 0.01, y * 0.01, frameCount * 0.01);
// └────────┬────────┘
// le noise évolue organiquement
fill(n * 255);
rect(x, y, 10, 10);
}
}
}