Programar con Processing en Python J.B. Hayet CENTRO DE INVESTIGACIÓN EN MATEMÁTICAS Julio 2015 J.B. Hayet Processing-Python Mode Julio 2015 1 / 20
El lenguaje Processing Processing: Un dialecto de Java muy simplificado. Una IDE sencilla e intuitiva. A priori ninguna dificultad para programadores en C C++. La meta es tocar a un público que no sabe de lenguajes en general enfocado a gráficos interactivos sonido vídeo animación... J.B. Hayet Processing-Python Mode Julio 2015 2 / 20
El lenguaje Processing Aplicaciones particularmente bien adaptadas: enseñanza: rudimentos programación hasta POO enseñanza: ilustración animada de conceptos prototipaje rápido de aplicaciones sketches visualización de datos. J.B. Hayet Processing-Python Mode Julio 2015 3 / 20
Una IDE reducida a lo esencial J.B. Hayet Processing-Python Mode Julio 2015 4 / 20
Una IDE reducida a lo esencial Una ventana de texto para escribir el código. Una consola. Una ventana gráfica con el output del programa. Interfaz de la IDE simplista: En unos minutos se entiende como funciona todo. J.B. Hayet Processing-Python Mode Julio 2015 5 / 20
Sketches El concepto de Sketch es el de proyecto de las IDEs normales es decir el un programa con una o varias unidades de compilación. A un Sketch corresponde a un directorio en un directorio de Sketches. Los archivos de los Sketches tienen extensión.pde (Java) o.pyde (Python). Los diferentes archivos aparecen como pestañas en la ventana del código. J.B. Hayet Processing-Python Mode Julio 2015 6 / 20
Librerías disponibles Integrados Importación de datos XML SVG Exportación PDF DXF etc. Video Redes Comunicación serial External Contributions Sonido: Ess Sonia Computer Vision: JMyron ReacTIVisionBlobDetection Interface: procontroll Interfascia... J.B. Hayet Processing-Python Mode Julio 2015 7 / 20
Varios modos de programación Tres maneras de programar en Python (con el Python Mode) Modo básico (dibujos estáticos codigo secuencial). Modo continuo (animación funciones). Modo objeto (clases Python). Se puede adaptar a la audiencia... J.B. Hayet Processing-Python Mode Julio 2015 8 / 20
Varios modos de programación Modo básico programación imperativa s i z e (512 512) background (255) nostroke ( ) f o r i i n range ( 1 0 0 ) : f i l l ( random ( 2 5 5 ) random ( 2 5 5 ) random ( 2 5 5 ) ) x = random (512) y = random (512) r e c t ( x y 5 0 5 0 ) Ciclos llamadas a funciones variables... J.B. Hayet Processing-Python Mode Julio 2015 9 / 20
Varios modos de programación Modo continuo programación procedural d e f s e t u p ( ) : s i z e (729 729) background (255) nostroke ( ) framerate ( 1 ) d e f draw ( ) : drawcross ( 0 0 7 2 9 ) J.B. Hayet Processing-Python Mode Julio 2015 10 / 20
Varios modos de programación Modo continuo programación procedural d e f drawcross ( x y w ) : i f w<1: return f i l l ( random ( 2 5 5 ) random ( 2 5 5 ) random ( 2 5 5 ) ) r e c t ( x+w/3 y+w/3 w/3 w/3) r e c t ( x y+w/3 w/3 w/3) r e c t ( x+2 w/3 y+w/3 w/3 w/3) r e c t ( x+w/3 y w/3 w/3) r e c t ( x+w/3 y+2 w/3 w/3 w/3) drawcross ( x y w/3) drawcross ( x+2 w/3 y w/3) drawcross ( x y+2 w/3 w/3) drawcross ( x+2 w/3 y+2 w/3 w/3) Funciones recursiones... J.B. Hayet Processing-Python Mode Julio 2015 11 / 20
Varios modos de programación Modo continuo programación procedural Dos funciones invocadas por default: setup() : al crear la ventana draw() : función de dibujo llamada en cada ciclo (frecuencia adaptable... ) Simulación dinámica... J.B. Hayet Processing-Python Mode Julio 2015 12 / 20
Varios modos de programación Modo continuo programación procedural + Handlers para eventos de ratón teclados... mousepressed() mousereleased() mousemoved() keypressed()... Variables globales mousex mousey pmousex pmousey... J.B. Hayet Processing-Python Mode Julio 2015 13 / 20
Varios modos de programación Modo objeto: programación orientada a objetos clases... Usar la applet de Processing en otro programa... Usaremos clases en los talleres de robótica. J.B. Hayet Processing-Python Mode Julio 2015 14 / 20
Varios modos de programación Implicit data types (int float boolean) Arrays Loops Conditionals and Logical Operators Strings Variables and Scoping J.B. Hayet Processing-Python Mode Julio 2015 15 / 20
Gráficos Es lo más interesante del lenguaje: se encarga de toda la parte generalmente técnicamente delicada de inicialización integrando varias modalidades gráficas por default (2D 3D OpenGL... ) muy fácil de crear animaciones visualizaciones dinámicas aun para debutante gráficos sonidos animación son al centro del concepto. J.B. Hayet Processing-Python Mode Julio 2015 16 / 20
Gráficos J.B. Hayet Processing-Python Mode Julio 2015 17 / 20
Gráficos Modo 2D d e f s e t u p ( ) : s i z e (320 240) background (153) d e f draw ( ) : l i n e ( 0 0 width h e i g h t ) J.B. Hayet Processing-Python Mode Julio 2015 18 / 20
Gráficos Modo P3D d e f s e t u p ( ) : s i z e (320 240 P3D) d e f draw ( ) : background ( 0 ) s t r o k e ( 2 5 5 0 0 ) t r a n s l a t e ( width /2 h e i g h t /2) r o t a t e X ( cos ( framecount PI / 300)) l i n e ( 0 0 0 width h e i g h t 200) l i n e ( 0 0 0 width h e i g h t 200) l i n e ( width h e i g h t 200 width h e i g h t 200) J.B. Hayet Processing-Python Mode Julio 2015 19 / 20
Features adicionales Soporte para imágenes. Soporte para manejo de vídeo. Unos esfuerzos para portar el OpenCV a Processing https://github.com/atduskgreg/opencv-processing J.B. Hayet Processing-Python Mode Julio 2015 20 / 20