<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Generatore d'arte non del tutto casuale.Si noti l'uso da parte della funzione di disegno dell'indicizzazione della matrice per evitare un ciclo JSL esplicito per impostare una linea verticale di pixel, più o meno perpendicolare al percorso del pennello.M seleziona i pixel e blend1 e blend2 rendono opaco il centro della pennellata ampia e i bordi più trasparenti.(Scorta di un altro progetto, ispirato in parte da Generazione di immagini dinamiche con Python – SWHarden.com .)
FactoryArt - YouTube

Finestra( "x" ) << closewindow;
scala = 4;
sopracciglia = 1080 * scala;
bcols = 1920 * scala;
rosso = J( sopracciglia, bcols, 0 );
verde = J( sopracciglia, bcols, 0 );
blu = J( sopracciglia, bcols, 0 );
immagineno = 0;
vernice = Funzione( {riga, col, colore, drow},
{m = Max( 1, Min( brows, row - drow ) ) :: Min( brows, Max( 1, row + drow ) ), r, g, b, blend1 = ((1 :: Max( 1, Floor (N Cols( m ) / 2 ) ))
|| Se( N Cols( m ) > 1,
(Soffitto( N Cols( m ) / 2 ) :: 1),
[]
))` / Soffitto( N Cols( m ) / 2 ), blend2 = 1 - blend1},
{r, g, b} = Colore in RGB( colore);
Provare(
rosso[m, col] = (rosso[m, col]
blend2 + r * blend1);
verde[m, col] = (verde[m, col]
blend2 + g * blend1);
blu[m, col] = (blu[m, col]
blend2 + b * blend1);
,
Mostra( messaggio_eccezione, riga, col, r, blend1, blend2, drow, m);
Fermare();
);
);
stripe = Function( {amp1, reps1, phase1, reps2, phase2, row, h1, h2, mindr, maxdr},
{ic, ir, fract, dr, color},
ripetizioni1 *= 2 * Pi();
ripetizioni2 *= 2 * Pi();
fase1 *= 2 * Pi();
fase2 *= 2 * Pi();
amp1 *= scala;
mente *= scala;
maxdr *= scala;
For( ic = 1, ic <= bcols, ic++,
fract = ic / bcols;
ir = riga + amp1 * Sin( phase1 + reps1 * fract);
dr = Interpola( Sin( fase2 + ripetizioni2 * fract ), -1, mindr, 1, maxdr );
color = HLS Color( Interpola(fract, 0, h1, 1, h2 ), .5, 1 );
vernice (ir, ic, colore, dr);
Se( Mod( ic, 512 ) == 0,
Aspetta( .01 );
img = Nuova immagine( "rgb", {rosso, verde, blu} );
img << scala ( .5 );
img << saveimage( "\VBOXSVR\windowsShare\painter\pics\p" || Right( Char( imageno++ ), 6, "0" ) || ".jpg", "jpg" );
);
);
);
immagine = Funzione( {nstripes},
{istripe, fract, hue1, hue2},
For( istripe = 1, istripe <= nstripe, istripe++,
Mostra( istripa );
fract = istripe / nstripes;
nfratto = 1 - fratto;
questa riga = Intero casuale (brows / 200, brows - brows / 200);
rfrac = questa riga / sopracciglia;
hue1 = Uniforme casuale (.8 * rfract + .3, .8 * rfract + .3);
If( hue1 > 1, hue1 -= 1 );// alow h1 avvolgere
tonalità2 = tonalità1 + Uniforme casuale (0, .2);
If( hue2 > 1, hue2 = 1 );// impedisce l'avvolgimento per h2
banda(
Interpola( fract, 0, 50, 1, 10 ), // amp1
Uniforme casuale( .1, .4 ), // rep1
Uniforme casuale( 0, 1 ), //fase
Uniforme casuale( 0, .2 ), // rep2
Uniforme casuale( 0, 1 ), // fase2
questa riga, // riga di destinazione
tonalità1,
tonalità2,
5, // delta min
Intero casuale (5 + 25 * nfract, 50 + 150 * nfract) // delta massimo
);
)
);
immagine( 100 );
Aspetta( 0 );
img = Nuova immagine( "rgb", {rosso, verde, blu} );
img << scala ( .5 );
img << saveimage( "\VBOXSVR\windowsShare\painter\pics\p" || Right( Char( imageno++ ), 6, "0" ) || ".jpg", "jpg" );
Nuova finestra("x", img );