processing spa 1

Upload: gasparres

Post on 18-Oct-2015

16 views

Category:

Documents


0 download

TRANSCRIPT

  • 5/28/2018 Processing Spa 1

    1/26

    Grficos por

    ComputadorIntroduccin a processingJordi Linares i Pellicer

    Escola Politcnica Superior dAlcoiDep. de Sistemes Informtics i [email protected]://www.dsic.upv.es/~jlinares

    mailto:[email protected]:[email protected]:[email protected]
  • 5/28/2018 Processing Spa 1

    2/26

    Qu es processing? Processinges un dialecto de Java especficamentediseado para el desarrollo de arte grfico,

    animaciones y aplicaciones grficas de todo tipo

    Desarrollado por artistas y para artistas

    Processinges software libre, disponible en lasplataformas donde Java est disponible (Mac OS,Linux, Windows etc.)

    Desarrollado a partir del 2001 en el MIT porCasey Reas y Ben Fry. Inspirado en DBN (Design ByNumbers) de John Maeda

    http://processing.org -> portal de descarga ycentro neurlgico del mundo processing

    http://processing.org/http://processing.org/http://processing.org/
  • 5/28/2018 Processing Spa 1

    3/26

    Por qu processing? Muy, pero que muy fcil de aprender... primeras

    pruebas en slo unos minutos

    Dispone de su propio IDE de desarrollo (fcil) Mejor curva de aprendizaje que OpenGL + GLUTu otras alternativas Potente, pero que muy potente. Permite

    desarrollar aplicaciones desde muy sencillas a muy

    complejas. Escalable. Se puede combinar programacin con

    processingcon Java puro y las libreras propias deJava. Una aplicacin Java pura tambin puede usar

    las libreras de processing.

  • 5/28/2018 Processing Spa 1

    4/26

    Por qu processing? Permite 3 formas de programar: bsica, procedural/

    estructurada y orientada a objetos

    Las primeras pruebas y sketches sencillos sepueden desarrollar en el modo bsico (sinfunciones, cdigo directo)

    sketches y programas ms ambiciosos puedenhacer uso de funciones (programacin a la C)

    Programas ms complejos pueden desarrollarseaplicando orientacin a objetos (clases de Java) Finalmente, se puede desarrollar en java puro y

    usar libreras de processing y otros entornos

    (eclipse, netbeans etc.)

  • 5/28/2018 Processing Spa 1

    5/26

    Por qu processing?

    Genera aplicaciones listas para ser ejecutadas enlas tres principales plataformas: Mac OS, Linux yWindows

    Las aplicacionesprocessingtambin puedengenerarse para su ejecucin en internet (como unappletde Java)

    Es posible desarrollar aplicaciones para dispositivosmviles (http://mobile.processing.org)

    Conexin con dispositivos y prototiposelectrnicos: proyectos Arduino y Wiring (http://hardware.processing.org)

    http://mobile.processing.org/http://mobile.processing.org/http://mobile.processing.org/http://mobile.processing.org/http://mobile.processing.org/
  • 5/28/2018 Processing Spa 1

    6/26

    Paquetes grficos. Historia Estndares: 3D Core Graphics System. ACM y SIGGRAPH (1977)

    GKS (Graphical Kernel System). 2D. ISO-ANSI (1985) GKS-3D (1988)

    PHIGS (Programmers Hierarchical Interactive Graphics System). 3D.(1988) SRGP y SPHIGS (Foley)

    Otros OpenGL XWindows, Microsoft Windows, Mac OS ... VRML, X3D (orientados a internet) POV-Ray, Renderman Java2D, Java3D

    DirectX (Direct-3D)

    etc.

  • 5/28/2018 Processing Spa 1

    7/26

    El IDE de processing

    Processingdispone de un IDE (IntegratedDevelopement Environment) propio

    desarrollado en Java Sencillo y fcil. Suficiente para la mayora de

    aplicaciones. Se puede migrar a Eclipse, p.e.,

    ante aplicaciones de mayor envergadura Se conoce por PDE (processingdevelopment environment)

  • 5/28/2018 Processing Spa 1

    8/26

    rea de texto y debugging

    rea de mensajes

    Nombre del fichero

    Ejecutar Parar Nuevo Abrir Guardar Exportar

    Nmero de lnea

    Cdigo Gestin de pestaas (ficheros)

  • 5/28/2018 Processing Spa 1

    9/26

    El IDE de processing Cuando guardamos una aplicacin, se genera un directorio con

    ese nombre y el fichero de la aplicacin se almacena dentro conla extensin .pde

    Los nombres de los ficheros mximo 64 caracteres sin espacios

    Se pueden crear ms ficheros asociados a la misma aplicacin(gestin de pestaas). Estos ficheros por defecto tendrn lamisma extensin .pde, pero tambin pueden tener laextensin .java(y sern tratados como tales).

    Los ficheros adicionales correspondern a nuevas funciones oclases (en tal caso habr que definir en el principal la funcinsetup)

    Las pestaas visibles sern las que se consideraran al generar laaplicacin

    Para abrir un proyecto bastar con abrir cualquier .pdedelinterior del directorio

  • 5/28/2018 Processing Spa 1

    10/26

    El IDE de processing

    Runy Stoppermiten iniciar la ejecucin de la aplicacin y sufinalizacin

    Exportpermite generar un applet de la aplicacin. La opcin delmen Export Application permite generar una aplicacin lista paraejecutarse en Mac OS, Linux o Windows. Todo esto se generaren directorios dentro del directorio principal de la aplicacin

    El directorio Skecthbook es el directorio por defecto para elusuario pero se puede almacenar las aplicaciones en cualquierdirectorio

  • 5/28/2018 Processing Spa 1

    11/26

    El IDE de processing Otras opciones interesantes:

    Import Library. Nos facilita la inclusin de las sentencias importde las libreras ms tiles

    Add File. Nos permite aadir imgenes, fuentes u otra

    informacin multimedia a un directorio especial en nuestracarpeta de aplicacin: la carpeta data. En esta carpetadebemos almacenar cualquier elemento que queramos utilizaren nuestra aplicacin (mediante la funcin loadImage, p.e.). Lacarpeta data se crear si no exista previamente.

    Create font. Facilita la creacin de appletsque utilicen fuentesde nuestro sistema y que queramos garantizar que aparezcancorrectamente en cualquier navegador.

    Help. Nos permite consultar la informacin de processing,incluso ver la referencia de la funcin que tengamos

    seleccionada en el cdigo

  • 5/28/2018 Processing Spa 1

    12/26

    El lenguaje processing

    processingest basado en Java 1.4.2 (slo unas cuantasmodificaciones con objeto de simplificar la programacin)

    Se puede utilizar 1.5 y posteriores pero utilizando otroentorno de desarrollo (aplicacin Java pura y utilizando lasclases de la librera grfica de processing)

    Documentacin completa en: http://java.sun.com/j2se/1.4.2/docs/api/index.html

    processingpermite programar a la C (programacinestructurada, a base de funciones). Pero es convenienteaprovechar su enfoque orientado a objetos (ligerasmodificaciones de las clases Java)

    http://java.sun.com/j2se/1.4.2/docs/api/index.htmlhttp://java.sun.com/j2se/1.4.2/docs/api/index.htmlhttp://java.sun.com/j2se/1.4.2/docs/api/index.html
  • 5/28/2018 Processing Spa 1

    13/26

    El lenguaje processingCdigo processing

    (.pde)

    Cdigo Java(.java)

    bytecode(.class)

    JVM

    (Java Virtual Machine)

    Preprocesador(processing)

    Compilacin(javac)

    Ejecucin

  • 5/28/2018 Processing Spa 1

    14/26

    El lenguaje processing

    Variablestype name;

    Tipos bsicos

    byte,short,int(178), long(8864L), float(37.266F),double(37.266/26.77e3), char(c), boolean(true/false)

    Arraysbyte[ ] array;

    Inicializacintype name = value;

    Constantesfinal type variable = value;

  • 5/28/2018 Processing Spa 1

    15/26

    El lenguaje processing

    Aritmticos: +,-,*,/,%,++,-- Relacionales: >,>=,

  • 5/28/2018 Processing Spa 1

    16/26

    El lenguaje processing Delimitadores de bloque: { instrucciones; } while:

    while ( expr ) { instrucciones }

    do { instrucciones } while ( expr )

    forfor ( begin; end; inc ) {instrucciones }

    if/elseif ( expr ) {instrucciones }

    if ( expr ) {instrucciones } else { instrucciones }

    switchswitch ( var ) { case val: instrucciones default: }

    Saltos: break, continue,return

  • 5/28/2018 Processing Spa 1

    17/26

    El lenguaje processing Comentarios:

    // Este comentario va hasta el final de lnea

    /* Este comentario es

    multilnea */

    Funciones:tipo_retorno nombreFuncin(lista de parmetros)

    Si se definen funciones propias en processing, se est obligado adar implementacin al menos a la funcin predefinidasetup()

  • 5/28/2018 Processing Spa 1

    18/26

    El lenguaje processing

    Ejemplo:

    void setup()// Funcin que se ejecuta al principio

    {size(100, 100);

    dibujaLinia(5);

    }

    void dibujaLinia(int x) // Funcin propia{

    line(x, 0, x, 99);}

  • 5/28/2018 Processing Spa 1

    19/26

    El lenguaje processing Strings:

    String mensaje = hello; String mensaje = hello + bye;

    Gran cantidad de mtodos:

    length()

    Acceso a un carcter:charAt() substring() Modificacin:

    concat(),replace(),trim(),toLowerCase(),etc. Bsqueda:indexOf(), lastIndexOf(), etc. Comparacin: startsWith(), endsWith(),

    compareTo(), etc. etc.

    Ejemplos:String mensaje = hello+ bye;

    int len = mensaje.length();int len = hello.length();

  • 5/28/2018 Processing Spa 1

    20/26

    El lenguaje processing

    Un array en processing(Java) es un objeto: Su longitud puede conocerse mediante el atributo length Ejemplos:

    int[] vector; // vector es nullvector = new int[3]; // creamos 3 componentesint len = vector.length; // Longitud = 3int item = vector[2]; // acceso a una componente

    int [][] matriz = new int[4][4];

    matriz[0][0] = 12; // Matrices

  • 5/28/2018 Processing Spa 1

    21/26

    El lenguaje processing Cuales son las diferencias de processingcomo lenguaje

    respecto a Java ? El preprocesador de processingnos permite usar en

    general una sintaxis ms relajada

    Permite el modo bsico: sin funciones propias, nicamentevariables globales y directamente lneas de cdigo

    Permite programar a la C, definiendo nuestras propiasfunciones, sin tener que definir clases y mtodos

    Permite definir y usar clases, con una sintaxis de clasesms sencilla que despus es transformada a completasclases Java

    Los modos bsico y a la C, las variables globales etc. sonposibles en processinghaciendo que el preprocesador lasintegre en una clase (de forma transparente al

    programador)

  • 5/28/2018 Processing Spa 1

    22/26

    El lenguaje processing Ejemplo en modo bsico (I)

    // Programa mnimo en processingline(0,0,50,50);

    Ejemplo en modo bsico (II)

    // Tambin variables y otros elementos ...int i;background(0); // pantalla a negrostroke(255); // trazo de color blancofor (i = 0; i

  • 5/28/2018 Processing Spa 1

    23/26

    El lenguaje processing Ejemplo a la C:

    // Si definimos funciones o clases propias, hay que// dar implementacin a setup()void setup()

    { size(100,100); // Tamao de ventana de la aplicacin noFill(); // Sin relleno en los crculos}

    void draw() // Se repite a cada frame{ dibujaCirculoAleatorio();}

    void dibujaCirculoAleatorio(){ int r = int(random(50)); // Color del trazo stroke(random(255), random(255), random(255)); // Crculos con posicin, radio y color aleatorios ellipse(random(100), random(100), r, r);}

  • 5/28/2018 Processing Spa 1

    24/26

    El lenguaje processing Clases

    void setup(){ size(100,100); // Tamao de ventana de la aplicacin noFill(); }

    void draw() // Se repite a cada frame{ Circulo c = new Circulo(); c.dibuja();}// Clase crculoclass Circulo{ // Atributos int r = int(random(50)); int x = int(random(100)); int y = int(random(100)); color c = color(random(255), random(255), random(255)); // Mtodos void dibuja() { stroke(c); ellipse(x, y, r, r); }}

  • 5/28/2018 Processing Spa 1

    25/26

    Prctica 1-1 Desarrollar un programa en processingque permita dibujar polgonos de n

    lados. Para ello hay que implementar una funcin poligon con los siguientes

    parmetros: centro (dos enteros), radio (entero) y nmero de lados delpolgono (entero)

    Informacin de inters para su desarrollo: Lo primero es implementar la funcin setup, donde se puede

    definir el tamao de ventana, p.e. size(500,500), y acontinuacin invocar a la funcin poligon

    La funcin poligondeber trazar el polgono utilizando:

    Las funciones trigonomtricas sin()y cos()cuyosargumentos se exigen en radianes La funcin line(x1, y1, x2, y2)que traza una

    lnea de (x1, y1) a (x2, y2) El (0,0) est situado en la esquina superior izquierda (las x

    positivas hacia la derecha, las y positivas hacia abajo)

    Constantes predefinidas como PIy TWO_PI

  • 5/28/2018 Processing Spa 1

    26/26

    Prctica 1-2 Desarrollar un programa en processingque permita dibujar un gradiente de color, de

    forma que la primera fila de la ventana se dibujar de un color de partida y la ltimafila de un color de destino. Las filas intermedias se dibujaran de forma que llevarn acabo una graduacin lineal de colores entre las dos filas inicial y final.

    Para ello hay que implementar una funcin gradientcon los siguientes

    parmetros: 6 enteros; los primeros 3 son los valores RGB del color de partida (de0 a 255), los otros tres los valores RGB del color de destino Informacin de inters para su desarrollo:

    Lo primero es implementar la funcin setup, donde se puede definir eltamao de ventana, p.e. size(500,500), y a continuacin invocar a lafuncin gradient

    La funcin gradientdeber trazar el gradiente utilizando:

    Interpolacin lineal de cada component de color Las variables widthy heightnos devuelven en todo momentoel ancho y alto de la ventana de la aplicacin

    La funcin line(x1, y1, x2, y2)que traza una lnea de(x1, y1) a (x2, y2)

    La funcin strokeque permite cambiar el color del trazo de laslneas, donde sus 3 argumentos son los valores RGB de la lnea