Programar con Processing en Python
J.B. Hayet
CENTRO DE INVESTIGACI ´ON EN MATEM´ATICAS
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´ublico que no sabe de lenguajes en
general, enfocado a gr´aficos interactivos, sonido, v´ıdeo,
animaci´on. . .
J.B. Hayet
Processing-Python Mode, Julio 2015
,
2 / 20
El “lenguaje” Processing
Aplicaciones particularmente bien adaptadas:
ense˜nanza: rudimentos programaci´on hasta POO,
ense˜nanza: ilustraci´on animada de conceptos,
prototipaje r´apido de aplicaciones, “sketches”
visualizaci´on 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´odigo.
Una consola.
Una ventana gr´afica, 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´on.
A un Sketch corresponde a un directorio en un directorio de
Sketches.
Los archivos de los Sketches tienen extensi´on .pde (Java) o
.pyde (Python).
Los diferentes archivos aparecen como pesta˜nas en la ventana
del c´odigo.
J.B. Hayet
Processing-Python Mode, Julio 2015
,
6 / 20
Librer´ıas disponibles
Integrados
Importaci´on de datos XML, SVG
Exportaci´on PDF, DXF, etc.
Video
Redes
Comunicaci´on serial
External Contributions
Sonido: Ess, Sonia
Computer Vision: JMyron, ReacTIVision,BlobDetection
Interface: proCONTROLL, Interfascia
. . .
J.B. Hayet
Processing-Python Mode, Julio 2015
,
7 / 20
Varios modos de programaci´on
Tres maneras de programar en Python (con el Python Mode)
Modo b´asico (dibujos est´aticos, codigo secuencial).
Modo continuo (animaci´on, 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´on
Modo b´asico, programaci´on imperativa
s i z e ( 5 1 2 , 5 1 2 )
b a c k g r o u n d ( 2 5 5 )
n o S t r o k e ( )
f o r
i n r a n g e ( 1 0 0 ) :
i
f i l l ( random ( 2 5 5 ) , random ( 2 5 5 ) , random ( 2 5 5 ) )
x = random ( 5 1 2 )
y = random ( 5 1 2 )
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´on
Modo continuo, programaci´on procedural
d e f
s e t u p ( ) :
s i z e ( 7 2 9 , 7 2 9 )
b a c k g r o u n d ( 2 5 5 )
n o S t r o k e ( )
f r a m e R a t e ( 1 )
d e f draw ( ) :
d r a w C r o s s ( 0 , 0 , 7 2 9 )
J.B. Hayet
Processing-Python Mode, Julio 2015
10 / 20
,
Varios modos de programaci´on
Modo continuo, programaci´on procedural
d e f d r a w C r o s s ( x , y , w ) :
i f w<1:
r e t u r n
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 )
d r a w C r o s s ( x , y , w/ 3 )
d r a w C r o s s ( x+2∗w/ 3 , y , w/ 3 )
d r a w C r o s s ( x , y+2∗w/ 3 ,w/ 3 )
d r a w C r o s s ( 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´on
Modo continuo, programaci´on procedural
Dos funciones invocadas por default:
setup() : al crear la ventana,
draw() : funci´on de dibujo llamada en cada ciclo (frecuencia
adaptable. . . )
Simulaci´on din´amica. . .
J.B. Hayet
Processing-Python Mode, Julio 2015
12 / 20
,
Varios modos de programaci´on
Modo continuo, programaci´on procedural
+ Handlers para eventos de rat´on, 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´on
Modo objeto: programaci´on orientada a objetos, clases. . .
Usar la applet de Processing en otro programa. . .
Usaremos clases en los talleres de rob´otica.
J.B. Hayet
Processing-Python Mode, Julio 2015
14 / 20
,
Varios modos de programaci´on
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´aficos
Es lo m´as interesante del lenguaje:
se encarga de toda la parte generalmente t´ecnicamente delicada
de inicializaci´on integrando varias modalidades gr´aficas por
default (2D, 3D, OpenGL. . . ),
muy f´acil de crear animaciones, visualizaciones din´amicas aun
para debutante,
gr´aficos, sonidos, animaci´on son al centro del concepto.
J.B. Hayet
Processing-Python Mode, Julio 2015
16 / 20
,
Gr´aficos
J.B. Hayet
Processing-Python Mode, Julio 2015
17 / 20
,
Gr´aficos
Modo 2D
d e f
s e t u p ( ) :
s i z e ( 3 2 0 , 2 4 0 )
b a c k g r o u n d ( 1 5 3 )
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´aficos
Modo P3D
d e f
s e t u p ( ) :
s i z e ( 3 2 0 , 2 4 0 , P3D)
d e f draw ( ) :
b a c k g r o u n d ( 0 )
s t r o k e ( 2 5 5 , 0 , 0 )
t r a n s l a t e ( w i d t h / 2 , h e i g h t / 2 )
r o t a t e X ( c o s ( frameCount ∗ PI / 3 0 0 ) )
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´agenes.
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
,
Comentarios de: Programar con Processing en Python (0)
No hay comentarios