Вы находитесь на странице: 1из 20

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, ReacTIVision,BlobDetection
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 ()
for i in range (100):
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 )
rect (x , y ,50 ,50)
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


def setup ( ) :
s i z e (729 ,729)
background (255)
noStroke ()
frameRate (1)

d e f draw ( ) :
drawCross (0 ,0 ,729)

,
J.B. Hayet Processing-Python Mode, Julio 2015 10 / 20
Varios modos de programación
Modo continuo, programación procedural
def 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 )
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ó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
def setup ( ) :
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
def setup ( ) :
s i z e ( 3 2 0 , 2 4 0 , P3D)

d e f draw ( ) :
background (0)
stroke (255 ,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 ( c o s ( fram e C o u n t ∗ 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á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

Вам также может понравиться