Upload
mariana-paredes
View
219
Download
0
Embed Size (px)
DESCRIPTION
Resumen del proyecto de trabajo correspondiente al 3° Semestre de la Maestría en Estética y Tecnología de las Artes Electrónicas. Más info: http://paredesmariana.wordpress.com/610-2/
Citation preview
Mariana Paredes
Maestría en Tecnología y Estética
de las Artes Electrónicas
Universidad Nacional de Tres de Febrero
Agosto 2014 | Argentina
“Los hombres de la Edad del Reno, en particular en Lascaux, indudablemente
utilizaron un procedimiento empleado por los australianos de nuestros días,
que consiste en introducir un polvo coloreado en un tubo hueco y soplar. Así es
como se procedió para obtener la matriz de las manos que, para el conjunto de
las grutas, son bastante numerosos: se aplicaba la mano sobre la pared y se
soplaba alrededor. En Lascaux, el uso de este procedimiento era generalizado
para los colores lisos”.
Georges BATAILLE
www.paredesmariana.wordpress.com/610-2
En la antigüedad, el
PALIMPSESTO consistía en una
tablilla donde se podía borrar
lo escrito para volver a escribir,
conservando las huellas de las
múltiples escrituras. Esta su-
perficie, portadora del tiempo
condensado en sus sucesivos
usos, será utilizada aquí como
metáfora del territorio del in-
teractor, en procura de un pro-
ceso reflexivo sobre las etapas
y tiempos de la creación visual.
Palimpsesto de ArquímedesEste palimpsesto consiste en siete tratados escritos en griego original, entre ellos: Sobre cuer-pos flotantes, El Método y el Stomachion. La transcripción fue hecha posiblemente en el siglo X en Constantinopla, hoy Estambul, y en el Siglo XIII fue raspado para escribir un libro de oracio-nes sobre el papiro.Además, el palimpsesto también contiene discursos del político ateniense Hipérides, del siglo IV a. C., un comentario de Alejandro de Afrodisias sobre la obra de Aristóteles y algunas otras obras.En particular, es de especial importancia la obra sobre El método de los teoremas mecánicos de Arquímedes, puesto que se trata de la única copia conocida existente.Esta práctica de economía, muy antigua y muy frecuente en el siglo VII por las dificultades que ofrecía el comercio del papiro egipcio, se repitió en los cinco siglos siguientes por la escasez del pergamino, en vista de la gran demanda de comercio y la falta de papel, artículo que apenas se conocía. Tras realizar un tratamiento de las páginas del palimpsesto, el texto original de Arquí-medes puede ahora leerse con claridad (ver foto derecha).
Referencia: http://es.wikipedia.org/wiki/Palimpsesto, de fecha 5/08/2013
PALIMPSESTO
El presente abordaje tiene su antecedente en el desa-
rrollo de la Tesina TRANSPOSICIONES1, en la cual se
introduce la noción de PALIMPSESTO entendido como
superficie de tiempo condensado, utilizado como me-
táfora del territorio del artista, sometido a las acciones
de designación / demarcación / apropiación. Lugar de
las prácticas que se superponen y yuxtaponen a modo
de estratos, haciendo presente el paso del tiempo,
concentrado en un solo lugar.
El trabajo realizado en el marco de los Proyectos IUNA
34/0101, 34/0173 y 34/02572 sobre Metodologías de In-
vestigación en las artes visuales, constituyen un im-
portante antecedente, sobre el cual se desarrolló la
obra PALIMPSESTOS I, consistente en el diseño de un
sitio web, entendido como metáfora de superficie crea-
tiva para la reescritura visual que da protagonismo al
tiempo como factor central del relato.
1 PAREDES, Mariana. Transposiciones. Tesis de Grado, DAVPP-IUNA, CABA, 2011.2 Proyecto de Investigación Categoría A. IUNA 34/0101: 2009-2010 / 34/0173: 2011-2012 y 34/0257: 2013-2014.
ANTECEDENTES Y MOTIVACION DEL PROYECTO
vista del Sitio web PALIMPSESTOShttp://www.palimpsesto.paredesmariana.net/
El artista argentino presenta en el año 2010 la obra LA
CUEVA DEL FUTURO, en la cual traza un puente entre
las tecnologías ancestrales -cuyos registros han tenido
la capacidad de preservarse hasta nuestros días- y las
tecnologías contemporáneas que presentan el proble-
ma de su obsolescencia.
Se trata de una obra interactiva por la cual el usuario
coloca su mano en una captura fotográfica, la cual pue-
de intervenir cambiando el formato, color y apariencia.
A este registro visual se suma la posibilidad de dejar un
mensaje para el futuro que, a diferencia de una cápsula
del tiempo, puede visitarse de forma permanente. Con-
venios con Universidades permitirán la permanencia de
la obra, a través del cambio de soporte conforme el de-
sarrollo tecnológico.
Queda claro que el objetivo en este caso, no se orienta
a la obtención de un producto visual transpositivo que
dialogue con su entorno, sino que procura una reflexión
sobre la obsolescencia programada y su influencia en
nuestra cultura.
OTROS ANTECEDENTES:Joaquín Fargas
“Como en el pasado las personas nos legaron las impresiones
de sus manos en piedra, registraremos las de ahora en medios
digitales como legado de esta época.
La Cueva del futuro es una obra generada en forma dinámica por
cada persona que quiera participar y generar una obra interactiva
y colaborativa”.
En: www.youtu.be/FEajw1hN7uU
Se propone la realización de una pieza interactiva y colabo-
rativa basada en una pantalla táctil, a partir de la cual el in-
teractor podrá producir sus propias huellas: imágenes de
manos que construyen transposiciones sobre un palimpses-
to; una cartografía en tiempo real que traza un puente con el
pasado y evoca un estatuto atemporal sobre nuestra necesi-
dad de permanencia.
DESARROLLO: Se utilizará un sistema de sensado que per-
mita la captura en movimiento de la mano de cada partici-
pante. Ésta servirá de molde para producir una simulación
de dicha mano, obteniendo como resultado visual la emula-
ción de técnicas de representación ancestrales.
OPCION INTERFAZ: se desarrollará un prototipo que utilice
el sensado por captura de video. A través de una mesa de
luz el interactor colocará su mano y ésta se verá reflejada en
otro soporte, intervenida por agentes.
OPCION REALIDAD AUMENTADA: Se propone un prototipo
de sensado infrarrojo que permita, en la misma superficie,
realizar la captura de movimiento y la proyección de la ima-
gen resultante.
MARCO CONCEPTUAL
Los orígenes de las operaciones transpositivas en las artes visuales
se remontan al inicio histórico de las prácticas representacionales. En
Lascaux, como en las llamadas “cuevas de las manos” de Santa Cruz,
asistimos a los vestigios de las primeras graficaciones realizadas por el
principio de la huella, obtenida en este caso por sustracción: una mano
que estuvo allí y que, al retirarse, deja depositada una superficie colo-
reada que se extiende a partir de sus límites. Resultado en negativo que
provoca un doble distanciamiento respecto de su referente: la ausencia
de la mano que se retiró y la presencia representada de esa ausencia
(aparición a través del hueco); provocando la proyección que surge de la
propia presencia, como extensión del cuerpo: contigüidad exacerbada.
La noción de transposición hace pie en un análisis desde el hacer, pri-
vilegiando el proceso, el Trans, y la acción mediadora que ejercen el ar-
tista y su dispositivo. Esta noción aparece en las artes visuales desde las
primeras inscripciones sobre la piedra. Involucra la relocalización y se
manifiesta en las múltiples re-escrituras (el palimpsesto). La Transposi-
ción entonces no se homologa con la noción de representación, sino que
recorta aquellas producciones simbólicas que se erigen como plena-
mente metonímicas, cuyo carácter indicial obliga a construir un vínculo
circular con su referente, en este caso el interactor.
Será un propósito a futuro, actualizar la noción de transposición en el
contexto del arte electrónico, entendiendo que la misma se basa en un
doble proceso de descontextualización y recontextualización a través del
cual se establece un tránsito del contenido inicial al contenido trans-
puesto. Veremos si necesario introducir la noción de Transmediación en
su reemplazo, atendiendo a la especificidad del campo, y el posiciona-
miento de éste en favor de la simulación1.
1 Baudrillard, Jean [1978] “La precesión de los simulacros” en Cultura y Simulacro. Barcelona, Ed. Kairós SA, 1984.
La obra se proyecta a partir de concebir un dispositivo de
sensado artificial. Para esto se utilizará una webcam, ca-
paz de capturar luz infrarroja, que filtre el espectro visible.
El soporte de captura utilizará una superficie rígida trans-
lúcida, que en el caso del prototipo será de 40 x 50 cm.
El sistema de captura se completa con un proyector digital
ubicado por detrás de la zona de captura.
[1] BOCETO
Se parte de una captura de movimiento por sustrac-
ción en posición FALSE (esto es: se analiza la diferen-
cia entre un frame anterior y la imagen actual de cap-
tura).
Se aplicó una estructura de diagrama de estados para
determinar las acciones a realizar.
Se incorporaron clases (agentes) que toman muestras
de color de fotos predeterminadas.
Se obtiene una imagen JPG de cada una de las captu-
ras realizadas por el dispositivo.
Ver programación completa en el anexo de esta pre-
sentación.
[2] PROGRAMACION
Estructura de Programación en processingTrabajo realizado a partir del Diseño de Programación aportado por
Emiliano Causa y Matías Romero Costas.Asignatura Sistemas Dinámicos
Partiendo de la programación realizada, se construye
el dispositivo compuesto de una mesa de luz, una cá-
mara web y un proyector colocados de atrás.
Primeras pruebas: la cámara web posee un filtra-
do por el cual, captura la luz infrarroja que se emite
directamente sobre la lente, pero no logra capturar
cuando la iluminación infrarroja es general y distante.
Se analiza asimismo los primeros problemas de espe-
jados entre la proyección y la captura.
[3] Pruebas de sensado y armado de dispositivo
Para el desarrollo del presente prototipo, se compró
una webcam económica cuya estructura física permi-
tiera su fácil intervención.
Se consultaron tutoriales on line sobre cómo hackear
una cámara para convertirla en infrarroja. Esto es eli-
minar el filtro que trae de fábrica y posibilitar ampliar
el registro de lectura.
Esto redunda en una disminución en la calidad de cap-
tura.
[4] HACKEO DE CAMARA
De acuerdo a las pruebas de captura de movimiento
con diferentes cámaras web, y analizando las diferen-
tes situaciones de iluminación y proyección,se desa-
rrollaron dos prototipos:
1) Iluminación infrarroja con proyección en el mismo
area de sensado. Adaptación de una cámara web para
lectura infrarroja. Se encontraron problemas en el
desplazamiento entre el area de sensado y el de pro-
yección y cambios de escala entre ambos. Obtención
de una propuesta que se acerca al concepto de REALI-
DAD AUMENTADA.
2) Iluminación común y captura con cámara web de
alta definición (luz infrarroja filtrada). Desplazamiento
entre el area de lectura y el area de proyección. Obten-
ción de una propuesta de INTERFAZ mediada entre la
captura y la proyección final.
[5] PROTOTIPOS
Propuesta Dos mesas, una con iluminación infrarroja + cáma-ra web sin filtrado (derecha) / otra con iluminación artificial
común + captura de cámara web filtrada (izquierda)
los primeros resultados advierten:
1) Que la captura infrarroja, debido a la calidad de la
cámara, arroja un sensado impresiso.
2) Que se produce un empastamiento visual entre la
mano y lo que resulta de la interacción. Se requiere
un movimiento suave para lograr que el desarrollo
de los agentes permitan dibujar la mano. Al retirarla,
la programación congela la imagen y la guarda en un
archivo JPG.
3) Que una propuesta de interfaz, esto es separar la
captura del resultado, permite mayor juego y mejores
resultados visuales.
[6] RESULTADOS
La investigación en torno a esta obra y el de-
sarrollo del prototipo, arrojan las siguientes
observaciones en relación a la propuesta de
realidad aumentada:
1) Calibrar captura y proyección para conse-
guir absoluta coincidencia entre ambas. Las
situaciones de proyección y su consecuente
cambio de escala resultan un factor impor-
tante en esta situación.
2) Mejorar la calidad de captura a través de
cámaras de alta definición, que posean op-
ciones manuales de calibración.
3) Modificar el resultado visual que ofrece
esta obra, ya que la situación dada provoca
superposiciones entre el movimiento de la
mano y el de los agentes, quitando atractivo
e interés a la interacción.
De acuerdo a lo obtenido hasta el momento,
resulta más interesante aplicar esta obra a
través de un concepto de interfaz, donde la
captura y la proyección se desdoblan.
[7] PALIMPSESTO
La presente propuesta surge, en su concepción
teórica, de reflexiones que preceden a la presente
maestría, de forma tal que permitió unir esos puntos
de trabajo con las actuales aportaciones técnicas y de
lenguaje propias de las artes electrónicas.
De esta experiencia surgen reflexiones sobre el
estatuto de la obra, su objetualidad-virtualidad, los
niveles de interacción y muy especialmente, cómo
acercar una propuesta que ubique al usuario en el
lugar del realizador, trazando puentes con prácticas
ancestrales que pongan de relieve la especificidad de
las prácticas artísticas en su contexto.
Como proyección del presente prototipo, entendemos
como posibilidad, la realización de un mapping sobre
un escenario natural, que permita el cambio de es-
cala entre la superficie de captura y la de proyección;
un alejamiento de la mímesis, en favor de una pro-
puesta inmersiva time specific que replique la espec-
tacularidad del arte rupestre y exponga las formas de
producir y pensar de cada epoca.
REFLEXION FINAL
BIBLIOGRAFIA SITIOS WEB
• AUMONT, Jacques [1990]. Cap 3: “El papel del dispositivo”, en La Ima-gen. Ed. Paidós Ibérica SA, España, 1992. Trad: Antonio López Ruiz. Pp. 143 a 206 https://www.youtube.com/watch?v=1wek7gete5Q
• BAUDRILLARD, Jean [1978] “La precesión de los simulacros” en Cultu-ra y Simulacro. Barcelona, Ed. Kairós SA, 1984.
• BATAILLE, Georges. Lascaux ou la naissnce de l´Art (apéndice). París-Ginebra, Skira, 1955.
• DUBOIS, Philippe. “De la verosimilitud al Index”, en El acto fotográfico. De la Representación a la recepción. Paidós, Barcelona, 1986.
• DUBOIS, Philippe. El Acto Fotográfico y otros ensayos. La Marca edito-ra, Buenos Aires, 2008. Edición Original: L´acte photographique et au-tres essais. Nathan, París, 1990. Traducción en español: Víctor Goldstein.
• KOZAK, Claudia (ed). Tecnopoéticas Argentinas. Archivo blando de Arte y Tecnología. Buenos Aires, Ediciones Caja Negra, 2012.
• PAREDES, Mariana. Transposiciones. Tesis de Grado, Departamento de Artes Visuales “Prilidiano Pueyrredón”- IUNA, Buenos Aires, 2011.
• VVAA. Las Herramientas Metodológicas en las Artes Visuales. El Árbol de Proyección en la Visualización de Ideas. Editado por el Departamento de ArtesVisuales “Prilidiano Pueyrredón”- IUNA, Buenos Aires, 2011.
https://www.youtube.com/watch?v=FEajw1hN7uU
http://joaquinfargas.com.ar/es/
Registro y Documentación de la Obra:http://paredesmariana.wordpress.com/610-2/
[Anexo] PROGRAMACION
Código Utilizado en Processing versión 2.1:
import processing.video.*;import fullscreen.*;FullScreen fs;
Capture camara;boolean monitor = true;PMoCap capturaDeMovimiento;
int ancho = 160;int alto = 120;
int cont_blanco = 0; int cont_espera = 20; int imagen_n; int j; String estado;
Agente a[];int cantidad = 10000; Imagen im[];
//-------------------------------
void setup() { size( 800, 600 ); smooth(); noFill(); estado = “esperar”; j = (int)random(0, 5); frameRate( 30 ); im = new Imagen[6]; for ( int i=0; i<6; i++ ) { im[i] = new Imagen(i+”.jpg”); }
a = new Agente[ cantidad ]; for ( int i=0; i<cantidad; i++ ) { a[i] = new Agente(); }
/****** CAPTURA ********/
camara = new Capture( this, an-cho, alto ); camara.start();
float umbral = 50; int cuadrosDelay = 2; boolean conFondo = true;
capturaDeMovimiento = new PMoCap( ancho, alto, umbral, cuadrosDelay, conFondo );
fs = new FullScreen(this); fs.enter(); background( 255 );}//-----------------------------void draw() { println(estado); if ( camara.available() ) { blanco=0; camara.read(); capturaDeMovimiento.captu-rar( camara );
mostrarAgentes(); if (estado.equals(“congelar”)) { println(estado); crearImagen(); estado=”esperar”; cont_espera=0; cont_blanco=0; }
if (estado.equals(“esperar”)) { cont_espera++; println(cont_espera);
if (cont_espera>100 && blanco>200) { for ( int i=0; i<cantidad; i++ ) { a[i].x = random(width); a[i].y = random(height); } j = (int)random(0, 5); capturaDeMovimiento.re-capturarFondo(); background(255); estado=”mover”; cont_blanco=0; cont_espera=0;
} } if (blanco>200) { cont_blanco++; }
if (estado.equals(“mover”)) { if (cont_blanco>80) { estado =”congelar”; } }
if (estado.equals(“esperar”)) { pushStyle(); fill( 255, 3 ); noStroke(); rect( 0, 0, width, height ); popStyle(); } println(j); }}
void keyPressed() { monitor = !monitor;}void mousePressed() { for ( int i=0; i<cantidad; i++ ) { a[i].x = random(width); a[i].y = random(height); } capturaDeMovimiento.recap-turarFondo();}
void mostrarAgentes() { for ( int i=0; i<cantidad; i++ ) { float x = a[i].x; float y = a[i].y; int cx = int( map( x, 0, width, 0, ancho ) ); int cy = int( map( y, 0, height, 0, alto ) );
if ( capturaDeMovimiento.movEnPixel( cx, cy ) ) { blanco++; }
a[i].direccionar( im [j] ); //da un angulo y obtiene el color de la imagen en la posición por donde pasa el agente if (estado.equals(“mover”)) { a[i].mover();
if ( !capturaDeMovimiento.
movEnPixel( cx, cy ) ) { if (!estado.equals(“esperar”)) a[i].dibujar(); } else { a[i].dibujar(255, 15); } } }}
void crearImagen() { imagen_n++; PImage img = createImage(width, height, RGB); loadPixels(); img.loadPixels(); for (int i = 0; i < img.pixels.length; i++) { img.pixels[i] =pixels[i]; } img.updatePixels(); //image(img, 0, 0); img.save(“img/imagen”+imagen_n+”_”+(int)random(100000)+”.jpg”);}
/****** CLASE AGENTES ********/
class Agente { float x, y; float dir, vel; float gris; color suColor;
//---------------------------
Agente() { x = random( width ); y = random( height ); dir = random( TWO_PI ); vel = random( 1, 3 ); suColor = color( random(255), random(255), random(255) ); } //---------------------------
void direccionar( Imagen im ) { color este = im.devolverColor( x , y ); dir = map( hue( este ) , 0 , 255 , 0 , TWO_PI ); suColor = este; } //---------------------------
void dibujar() { stroke( suColor ); strokeWeight (6); point( x, y ); }
void dibujar(int col, int str) { stroke( col ); strokeWeight (str); point( x, y ); } //------------------------
void mover() {
float dx = vel * cos( dir ); float dy = vel * sin( dir );
x += dx; y += dy;
x = ( x>width ? x-width : x ); x = ( x<0 ? x+width : x ); y = ( y>height ? y-height : y ); y = ( y<0 ? y+height : y ); } }
[Anexo] PROGRAMACION
/****** CLASE IMAGEN ********/class Imagen { PImage i; Imagen( String nombre ) { i = loadImage( nombre ); } color devolverColor( float x, float y ) { int nx = int( constrain( map( x, 0, width, 0, i.width ), 0, i.width )); int ny = int( constrain( map( y, 0, height, 0, i.height ), 0, i.height )); return i.get( nx , ny ); } void dibujar(){ image( i , 0 , 0 , width , height ); }}/***** CLASE PMoCap ********/class PMoCap { int largo; boolean fondoTomado; boolean hayMovimiento; boolean comparaConFondo; PImage imagenAcomparar; PImage fondoFijo; PImage substraccion; PImage bitonal; float umbral; int arriba, abajo, derecha, iz-quierda;
int area; float x, y; BufferVideo retardo;
/ / --------------------------- PMoCap( int ancho_, int alto_, float umbral_, int fotogramasRetardo, boolean comparaConFondo_ ) {comparaConFondo = comparaCon-Fondo_; ancho = ancho_; alto = alto_; largo = ancho*alto; umbral = umbral_; fondoTomado = false; retardo = new BufferVideo( ancho, alto, fotogramasRetardo ); fondoFijo = createImage( ancho, alto, RGB ); substraccion = createImage( an-cho, alto, RGB ); bitonal = createImage( ancho, alto, RGB ); }//--------------------------- void capturar( PImage entrada ) { if ( !comparaConFondo ) { retardo.cargar( entrada ); imagenAcomparar = retardo.punteroPrimero(); } else { if ( !fondoTomado ) {
fondoFijo.copy( entrada, 0, 0, ancho, alto, 0, 0, ancho, alto); fondoTomado = true; } imagenAcomparar = fondoFijo; } entrada.loadPixels(); imagenAcomparar.loadPixels(); hayMovimiento = false; area = 0; x = 0; y = 0; int posx, posy; long totx = 0; long toty = 0; for ( int i=0 ; i<largo ; i++ ) { posx = i % ancho; posy = i / ancho; color actual = entrada.pixels[i]; color delFondo = imagenAcomparar.pixels[i]; float difRed = abs( red(actual) - red(delFondo) ); float difGreen = abs( green(actual) - green(delFondo) ); float difBlue = abs( blue(actual) - blue(delFondo) ); float gris = ( difRed + difGreen + difBlue ) / 3.0; substraccion.pixels[i] = color( gris, gris, gris ); boolean conMovimiento = gris>umbral; color bitono; if ( conMovimiento ) { bitono = color(255, 255, 255); if ( !hayMovimiento ) { hayMovimiento = true; abajo = arriba = posy; derecha = izquierda = posx; } abajo = max( abajo, posy );
arriba = min( arriba, posy ); derecha = max( derecha, posx ); izquierda = min( izquierda, posx ); totx += posx; toty += posy; area ++; } else { bitono = color(0, 0, 0); } bitonal.pixels[i] = bitono; } if ( area>0 ) { x = totx / area; y = toty / area; } substraccion.updatePixels(); bitonal.updatePixels(); }//------------------------ void capturar( Capture entrada ) { capturar( (PImage) entrada ); }//------------------------- void recapturarFondo() { fondoTomado = false; } //------------------------PImage getImagenAnalisis() {PGraphics grafico = createGraphics( ancho, alto );PImage resultado = createImage( ancho, alto, RGB ); grafico.beginDraw(); grafico.image( bitonal, 0, 0 ); if ( hayMovimiento ) { grafico.stroke(0, 255, 0); grafico.noFill(); grafico.rectMode( CORNERS ); grafico.ellipse(x, y, 5, 5);
grafico.rect( izquierda, arriba, derecha, abajo ); } grafico.endDraw(); resultado.copy( grafico, 0, 0, an-cho, alto, 0, 0, ancho, alto ); return resultado; }//------------------------ boolean movEnPixel( int x, int y, PImage imagen ) { boolean valor = blue( bitonal.get( x, y ) ) > 127; int margen = 5; if ( imagen != null ) { color c = ( valor ? color(0, 255, 0) : color(255, 0, 0) ); for ( int i = max(0,x-margen) ; i<min(x+margen,ancho) ; i++ ) { imagen.set( i, y, c ); } for ( int i = max(0,y-margen) ; i<min(y+margen,alto) ; i++ ) { imagen.set( x, i, c ); } } return valor; }//---------------------------- boolean movEnPixel( int x, int y ) { return movEnPixel( x, y, null ); }//---------------------------- float movEnArea( int x, int y, int
ancho_, int alto_, PImage imagen ) { float cuantos = 0; for ( int i=0 ; i<ancho_ ; i++ ) { for ( int j=0 ; j<alto_ ; j++ ) { int posx = x+i; int posy = y+j; boolean valor = blue( bitonal.get( posx, posy ) ) > 127; if ( valor ) { cuantos++; if ( imagen != null ) { imagen.set( posx, posy, co-lor(0, 255, 0) ); } } } }
if ( imagen != null ) { color c = color(255, 0, 0); if ( cuantos>0 ) { c = color(0, 255, 0); } for ( int i=x ; i<x+ancho_ ; i++ ) { imagen.set( i, y, c ); imagen.set( i, y+alto_-1, c ); } for ( int i=y ; i<y+alto_ ; i++ ) { imagen.set( x, i, c ); imagen.set( x+ancho_-1, i, c ); } } return cuantos / ( ancho_ * alto_
); } //------------------------------- float movEnArea( int x, int y, int ancho_, int alto_ ) { return movEnArea( x, y, ancho_, alto_, null ); }//------------------------------- int getArriba() { return arriba; }; //------------------------------- int getAbajo() { return abajo; } //------------------------------- int getDerecha() { return derecha; } //------------------------------- int getIzquierda() { return izquierda; } //------------------------------- int getArea() { return area; } //------------------------------- float getX() { return x; } //------------------------------- float getY() { return y; } //------------------------------- float getUmbral() { return umbral; } //------------------------------- void setUmbral( float nuevoUmbral ) {
umbral = nuevoUmbral; }}//-----------------------------class BufferVideo { PImage buffer[]; int cantidad; int cabeza; int ancho, alto; //-------------------------------
BufferVideo( int ancho_, int alto_, int canti-dad_ ) { cantidad = cantidad_; cabeza = 0; ancho = ancho_; alto = alto_; buffer = new PImage[ cantidad ]; for ( int i=0 ; i<cantidad ; i++ ) { buffer[i] = createImage( ancho, alto, RGB ); } }//-------------------------------
void cargar( Capture imagen ) { buffer[ cabeza ].copy( imagen, 0, 0, ancho, alto, 0, 0, ancho, alto); cabeza = ( cabeza+1 ) % cantidad; }//-------------------------------
void cargar( PImage imagen ) { buffer[ cabeza ].copy( imagen, 0, 0, ancho, alto, 0, 0, ancho, alto); cabeza = ( cabeza+1 ) % cantidad; }//------------------------------- PImage punteroPrimero() { return buffer[ cabeza ]; }}
[Anexo] PROGRAMACION
Visitar Proyecto en:http://paredesmariana.wordpress.com/610-2/
Contacto:[email protected]
Móvil: (+54.11) 15.5105.1747