#javascript
// Una frase, un cielo. La stessa frase dà sempre lo stesso cielo.
function cielo(frase, w = 800, h = 500) {
let acc = 0;
const dado = (n) => {
acc = (acc * 1103515245 + n * 12345 + 7) % 2147483648;
return acc / 2147483648;
};
for (con
Costellazioni da una frase
// Telaio a quattro licci. L'armatura decide quale filo passa sopra:
// cambiando la sequenza cambia il tessuto, esattamente come al telaio vero.
function tessuto(fili = 48, passate = 48, armatura = [0, 1, 2, 3], cell = 10) {
const ordito = ["#2d2a32",
Telaio
// L'ora come colore, i minuti come ampiezza, i secondi come respiro.
// Niente cifre: dopo tre giorni la si legge senza pensarci.
function disegna(ctx, lato) {
const ora = new Date();
const h = ora.getHours() + ora.getMinutes() / 60;
const m = or
Orologio che non dice l'ora
// Pioggia senza registrazioni: rumore filtrato più gocce sparse.
const ctx = new AudioContext();
function rumore(secondi = 2) {
const buf = ctx.createBuffer(1, ctx.sampleRate * secondi, ctx.sampleRate);
const d = buf.getChannelData(0);
for (let i
Pioggia sintetica
// Pianta di una città che non esiste. Restituisce SVG come stringa.
const rnd = (s => () => (s = Math.imul(s ^ (s >>> 15), s | 1), ((s ^= s + Math.imul(s ^ (s >>> 7), s | 61)) >>> 0) / 2 ** 32))(20261021);
function citta(lato = 600) {
const c = lato
Pianta di una città che non esiste
// Giardino generativo — nessuna libreria, solo canvas.
// Lo stesso seme dà sempre la stessa pianta. Semi diversi, piante diverse.
function seme(testo) {
let h = 2166136261 >>> 0;
for (const c of testo) { h ^= c.charCodeAt(0); h = Math.imul(h, 16777
Giardino generativo