Intro Processing v1.5 - 08 - Raúl Lacabanne

Embed Size (px)

DESCRIPTION

Intro Processing v1.5 - 08 - Raúl Lacabanne

Citation preview

  • 36

    Punto 8 Aleatoriedad

    Valores aleatoriosHasta ahora hemos trabajado con variables cuyos valores se obtienen se dos formas: 1) o bien son asignados por el programador (ej.: a=10;), 2) son resultado de alguna operacin aritmtica (ej.: b=b+5;). Por supuesto que el rango de valores posibles est dado por el tipo de dato declarado en la variable: entero, decimal, byte, etc.Imaginemos entonces que queremos obtener un valor decimal entre 0 y 1 pero que sea generado de forma aleatoria. Disponemos en Processing de alguna funcin que nos permita obtener un valor de la forma descripta anteriormente? Claro que s. Para ello utilizaremos la funcin random(). Veamos cmo resolvemos esta cuestin en la prctica:

    floatalea=random(1);

    Existen dos versiones de la funcin random():

    random(valorAlto);random(valorBajo,valorAlto);

    La primer versin devolver un valor aleatorio (siempre decimal) comprendido en el rango que se extiendo entre el mnimo sobreentendido 0 y el valor alto. La segunda versin vara respecto de la primera en que al valor ms alto se le antepone un valor ms bajo para que el rango de valores posibles contemple otras posibilidades.

    Veamos algunos ejemplos en la consola:

    floatale1=random(5);//asignaaalea1unvaloraleatorioentre0.0y5.0print("alea1="+ale1);//imprimeelvalorasignado

    floatale2=random(5.0);//asignaaalea2unvaloraleatorioentre0.0y5.0print("|alea2="+ale2);//imprimeelvalorasignado

    floatale3=random(5.0,10.2);//asignaaalea3unvaloraleatorioentre5.0y10.2println("|alea3="+ale3);//imprimeelvalorasignado

    Y ahora ejemplos aplicados a la imagen:

    smooth();strokeWeight(10);stroke(0,130);line(0,random(100),100,random(100));line(0,random(100),100,random(100));line(0,random(100),100,random(100));line(0,random(100),100,random(100));line(0,random(100),100,random(100));

    IntroduccinaProcessingv1.5+ Docente:RalLacabanne

  • 37

    smooth();strokeWeight(20);floatr=random(5,45);stroke(r*5.6,230);line(0,r,100,random(55,95));r=random(5,45);stroke(r*5.6,230);line(0,r,100,random(55,95));r=random(5,45);stroke(r*5.6,230);line(0,r,100,random(55,95));

    background(0);stroke(255,60);for(inti=0;i

  • 38

    noise(x)noise(x,y)noise(x,y,z)

    La versin con un solo parmetro es utilizada para crear una secuencia nica de nmeros aleatorios, Los parmetros adicionales producen ruido en ms dimensiones (2D: texturas, 3D: formas, texturas 3D o texturas animadas en 2D).Los nmeros devueltos por noise() pueden resultar ms cercanos o ms lejanos del anterior mediante cambios en el parmetro de frecuencia de incremento. Como regla general, mientras ms pequea sea la diferencia, ms suave resultar la secuencia de ruido. Entonces resulta que un incremento pequeo genera nmeros ms cercanos al valor anterior que un incremento mayor. Se estila nombrar la variable de incremento como inc. Generalmente se utilizan valores de incremento que se sitan en el rango 0.005 a 0.03.As como random() puede ser auxiliado por una funcin como randomSeed(), noise() tambin lo hace con noiseSeed().

    Veamos ahora un ejemplo de noise() con un slo parmetro:

    size(600,100);floatv=0.0;floatinc=0.1;//Probar0.1o0.01noStroke();fill(0);noiseSeed(0);

    for(inti=0;i

  • 39

    Lectura recomendada Buioli, I. & Prez Marn, J. "Processing: un lenguaje al alcance de todos", Autoedicin,

    2013, Unidad 15 "Matemticas: Aleatoriedad" (pag. 77). Reas, C. & Fry, B. "Processing: A Programming Handbook for Visual Designers and

    Artists, MIT Press, 2007, Captulo "Math 4: Random" (pag. 127).

    Ejercicio 09

    Utilizar una estructura for() para generar: diez crculos sin relleno, con posicin, dimetro y color aleatorios.

    Usar funcin random(). Comentar todas las instrucciones.

    Ejercicio 10

    Utilizar una estructura for() para generar: diez rectngulos sin relleno, con posicin, dimetro y color aleatorios pero cuyos valores

    resulten cercanos entre s. Usar funcin noise(). Comentar todas las instrucciones.

    IntroduccinaProcessingv1.5+ Docente:RalLacabanne

    Punto 8 AleatoriedadValores aleatoriosSemillasRuidoLectura recomendada

    Ejercicio 09Ejercicio 10