<?xml version="1.0" encoding="ISO-8859-1"?><article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<front>
<journal-meta>
<journal-id>2518-4431</journal-id>
<journal-title><![CDATA[Investigación & Desarrollo]]></journal-title>
<abbrev-journal-title><![CDATA[Inv. y Des.]]></abbrev-journal-title>
<issn>2518-4431</issn>
<publisher>
<publisher-name><![CDATA[UNIVERSIDAD PRIVADA BOLIVIANA]]></publisher-name>
</publisher>
</journal-meta>
<article-meta>
<article-id>S2518-44312016000100008</article-id>
<title-group>
<article-title xml:lang="es"><![CDATA[FiMAN: SISTEMA COMPUTARIZADO PARA ANÁLISIS DE MOVIMIENTOS DIGITALES]]></article-title>
<article-title xml:lang="en"><![CDATA[FiMAN: A COMPUTER SYSTEM FOR FINGER MOTION ANALYSIS]]></article-title>
</title-group>
<contrib-group>
<contrib contrib-type="author">
<name>
<surname><![CDATA[Carballo]]></surname>
<given-names><![CDATA[Miguel]]></given-names>
</name>
<xref ref-type="aff" rid="A01"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname><![CDATA[Barrero]]></surname>
<given-names><![CDATA[Marcél]]></given-names>
</name>
<xref ref-type="aff" rid="A01"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname><![CDATA[Villazón]]></surname>
<given-names><![CDATA[Alex]]></given-names>
</name>
<xref ref-type="aff" rid="A01"/>
</contrib>
</contrib-group>
<aff id="A01">
<institution><![CDATA[,Universidad Privada Boliviana Centro de Investigaciones de Nuevas Tecnologías Informáticas(CINTI) ]]></institution>
<addr-line><![CDATA[ ]]></addr-line>
</aff>
<pub-date pub-type="pub">
<day>00</day>
<month>00</month>
<year>2016</year>
</pub-date>
<pub-date pub-type="epub">
<day>00</day>
<month>00</month>
<year>2016</year>
</pub-date>
<volume>1</volume>
<numero>16</numero>
<fpage>86</fpage>
<lpage>101</lpage>
<copyright-statement/>
<copyright-year/>
<self-uri xlink:href="http://www.scielo.org.bo/scielo.php?script=sci_arttext&amp;pid=S2518-44312016000100008&amp;lng=en&amp;nrm=iso"></self-uri><self-uri xlink:href="http://www.scielo.org.bo/scielo.php?script=sci_abstract&amp;pid=S2518-44312016000100008&amp;lng=en&amp;nrm=iso"></self-uri><self-uri xlink:href="http://www.scielo.org.bo/scielo.php?script=sci_pdf&amp;pid=S2518-44312016000100008&amp;lng=en&amp;nrm=iso"></self-uri><abstract abstract-type="short" xml:lang="es"><p><![CDATA[La reciente tecnología de dispositivos y sensores infrarrojos han abierto nuevas posibilidades para el desarrollo de software relacionado con el área de análisis de movimientos corporales. Esta tecnología puede ser utilizada en áreas como la salud, la enseñanza, la realidad virtual y aumentada, control de robots y entretenimiento. En este artículo presentamos el desarrollo de FiMAN, un sistema que permite visualizar los movimientos detallados de las manos en tiempo real y en 3D utilizando el dispositivo infrarrojo LeapMotion para la captura de datos, permitiendo la realización de grabaciones y reproducciones de movimientos para su posterior análisis. Para su desarrollo fue necesaria la división modular de los componentes visuales, estructurales, analíticos, estadísticos y de sonido, además de la captura y manipulación de datos. Gracias a su diseño modular, se obtuvo un entorno genérico de desarrollo para aplicaciones especializadas en movimientos digitales. Como Estudio de Caso, se utilizó el sistema al área de la educación musical, específicamente a la enseñanza de la técnica del piano, para lo cual se extendió FiMAN con un teclado virtual y manejo de sonido. El uso real de FiMAN en este escenario, demostró su modularidad y extensibilidad a diferentes áreas relacionadas al análisis de movimientos digitales.]]></p></abstract>
<abstract abstract-type="short" xml:lang="en"><p><![CDATA[The introduction in the market of new devices and sensors with infrared technology has opened new opportunities for the development of specialized software for body motion analysis, in areas such as health, virtual and augmented reality, robot control and entertainment. In this article we present FiMAN, a computer system that allows capturing and visualizing detailed finger and hand motion in 3D and real time, using a Leap Motion sensor.FiMAN allows to record, store and replay finger motion for post-mortem analysis. We developed a modular system using components for visual, structural, analysis, statistical and sound management, which include also data capture a manipulation. Thanks to its modular design, FiMANis a generic framework for the development of specialized motion analysis applications. As a Case Study,we extended FiMANas a tool for musical education, namely to support teaching of piano techniques, through a virtual piano keyboard with a sound module. The real life usage of FiMAN, demonstrated its modularity and extensibility for its applicability in different areas related to motion analysis.]]></p></abstract>
<kwd-group>
<kwd lng="es"><![CDATA[Análisis Movimiento Digital]]></kwd>
<kwd lng="es"><![CDATA[Sensor]]></kwd>
<kwd lng="es"><![CDATA[Leap Motion]]></kwd>
<kwd lng="es"><![CDATA[Teclado Virtual]]></kwd>
<kwd lng="en"><![CDATA[Finger Motion Analysis]]></kwd>
<kwd lng="en"><![CDATA[Sensor]]></kwd>
<kwd lng="en"><![CDATA[Leap Motion]]></kwd>
<kwd lng="en"><![CDATA[Virtual Keyboard]]></kwd>
</kwd-group>
</article-meta>
</front><body><![CDATA[ <p align=right><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><b>ART&Iacute;CULOS&ndash;INGENIER&Iacute;AS</b></font></p>     <p align=right>&nbsp;</p>     <p align=center><font size="4" face="Verdana, Arial, Helvetica, sans-serif"><b>FiMAN: SISTEMA   COMPUTARIZADO PARA ANÁLISIS DE MOVIMIENTOS DIGITALES</b></font></p>     <p align=center><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><b>&nbsp;</b></font></p>     <p align=center><font size="3" face="Verdana, Arial, Helvetica, sans-serif"><b>FiMAN: A COMPUTER SYSTEM FOR FINGER MOTION ANALYSIS</b></font></p>     <p align=center>&nbsp;</p>     <p align=center>&nbsp;</p>     <p align=center><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><b>Miguel Carballo,   Marcél Barrero y Alex Villazón</b></font></p>     <p align=center><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><i>Centro de Investigaciones de Nuevas Tecnologías Informáticas</i>(CINTI)<i>    <br>  Universidad Privada Boliviana</i></font>    ]]></body>
<body><![CDATA[<br> <font size="2" face="Verdana, Arial, Helvetica, sans-serif"><a href="mailto:avillazon@upb.edu">avillazon@upb.edu</a></font></p>      <p align=center><font size="2" face="Verdana, Arial, Helvetica, sans-serif">(Recibido el 10 abril 2016, aceptado para publicación el 10 junio 2016)</font></p>     <p align=center>&nbsp;</p>     <p align=center>&nbsp;</p> <hr noshade>     <p align=left><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><b>RESUMEN</b></font></p>     <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">La reciente tecnología de dispositivos y sensores infrarrojos han abierto nuevas posibilidades para el desarrollo de software relacionado con el área de análisis de movimientos corporales. Esta tecnología puede ser utilizada en áreas como la salud, la enseñanza, la realidad virtual y aumentada, control de robots y entretenimiento. En este artículo presentamos el desarrollo de FiMAN, un sistema que permite visualizar los movimientos detallados de las manos en tiempo real y en 3D utilizando el dispositivo infrarrojo LeapMotion para la captura de datos, permitiendo la realización de grabaciones y reproducciones de movimientos para su posterior análisis. Para su desarrollo fue necesaria la división modular de los componentes visuales, estructurales, analíticos, estadísticos y de sonido, además de la captura y manipulación de datos. Gracias a su diseño modular, se obtuvo un entorno genérico de desarrollo para aplicaciones especializadas en movimientos digitales. Como Estudio de Caso, se utilizó el sistema al área de la educación musical, específicamente a la enseñanza de la técnica del piano, para lo cual se extendió FiMAN con un teclado virtual y manejo de sonido. El uso real de FiMAN en este escenario, demostró su modularidad y extensibilidad a diferentes áreas relacionadas al análisis de movimientos digitales.</font></p>     <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><b>Palabras Clave:</b> An&aacute;lisis Movimiento Digital, Sensor, Leap Motion, Teclado Virtual.</font></p> <hr noshade>     <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><b>ABSTRACT</b></font></p>     <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">The introduction in the market of new devices and sensors with infrared technology has opened new opportunities for the development of specialized software for body motion analysis, in areas such as health, virtual and augmented reality, robot control and entertainment. In this article we present FiMAN, a computer system that allows capturing and visualizing detailed finger and hand motion in 3D and real time, using a Leap Motion sensor.FiMAN allows to record, store and replay finger motion for post-mortem analysis. We developed a modular system using components for visual, structural, analysis, statistical and sound management, which include also data capture a manipulation. Thanks to its modular design, FiMANis a generic framework for the development of specialized motion analysis applications. As a Case Study,we extended FiMANas a tool for musical education, namely to support teaching of piano techniques, through a virtual piano keyboard with a sound module. The real life usage of FiMAN, demonstrated its modularity and extensibility for its applicability in different areas related to motion analysis.</font></p>      <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><b>Keywords:</b><a name="_Toc274497886"> Finger Motion Analysis, Sensor, Leap Motion, Virtual Keyboard.</a></font></p>  <hr noshade>     ]]></body>
<body><![CDATA[<p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><b>&nbsp;</b></font></p>      <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><b>&nbsp;</b></font></p>      <p align="justify"><font size="3" face="Verdana, Arial, Helvetica, sans-serif"><b>1.&nbsp;&nbsp;&nbsp;&nbsp; INTRODUCCIÓN</b></font></p>      <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Durante los últimos años se ha desarrollado tecnología que permite el control a distancia a través del análisis de movimientos. Esta tecnología se ha aplicado, sobre todo al área del entretenimiento (video juegos), en los controles de consolas de juego como el Wii de Nintendo<a href="#_ftn1" name="_ftnref1" title="">[1]</a> y el Xbox de Microsoft con el sensor Kinect<a href="#_ftn2" name="_ftnref2" title="">[2]</a>. Sin embargo, más allá de las aplicaciones de carácter lúdico, aún no se ha aprovechado todo el potencial que esta tecnología puede tener en otras áreas con mayor impacto social. Recientemente, varios investigadores han empezado a utilizar estos sensores de movimiento en áreas como la salud[1], la enseñanza [2], la realidad virtual [3] y el control de robots con gestos [4].</font></p>      <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">En general, el análisis de movimiento requiere de dos componentes que pueden ser considerados por separado: el <i>hardware</i> (sensores que generan datos) y el <i>software</i> (programas que transformen los datos en información útil). Esto permite el uso de un mismo hardware para el desarrollo de software en diferentes áreas de investigación. Asimismo, siendo el hardware cada vez más accesible, tanto en disponibilidad como en costos, se tiene la oportunidad de desarrollar sistemas de software que permitan visualizar en tiempo real y en 3D, analizar, grabar y reproducir movimientos, para  su aplicación en nuevas áreas de investigación o para el desarrollo de productos comerciales.</font></p>      <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Dentro del área investigación que estudia la interacción hombre-computador (Human-ComputerInteraction – HCI), el análisis de movimientos de manos y dedos tiene gran importancia, por ser una de las formas más comunes de interacción con elementos reales o virtuales[5]. Uno de los sensores que permite ésta interacción es el LeapMotion<a href="#_ftn3" name="_ftnref3" title="">[3]</a>, que es un dispositivo especializado en la captura de datos de manos y dedos. La tecnología LeapMotion, sin embargo, se limita al hardware del sensor, dejando a los programadores la responsabilidad de implementar aplicaciones especializadas[6].</font></p>      <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Este artículo presenta el sistema FiMAN que permite visualizar los movimientos detallados de las manos en tiempo real y 3D capturados por un sensor LeapMotion. FiMAN permite además, grabar y reproducir los movimientos para su análisis posterior. Su diseño modular permite utilizarlo como una base extensible, donde se pueden añadir nuevos objetos o componentes de análisis; resultando un entorno genérico de desarrollo para aplicaciones especializadas en movimientos digitales. Ésta virtualización de movimientos en tiempo real permite crear la representación gráfica de movimientos de la mano desde diferentes ángulos y velocidades, lo que a su vez permite al usuario observar detalladamente los movimientos registrados desde la perspectiva y la velocidad que necesite.</font></p>      <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Como Estudio de Caso, se ha extendido FiMAN al área de educación para analizar el movimiento de los dedos en las técnicas básicas de interpretación de piano, simulando un piano virtual. Esto permite a los maestros de piano contar con una herramienta tecnológica completamente nueva para evaluar las fortalezas y debilidades técnicas de los estudiantes en base al análisis de las representaciones gráficas y los datos de movimientos registrados por el sensor LeapMotion. Asimismo, la rápida detección de dificultades técnicas y en el planteamiento de nuevos métodos y ejercicios correctivos permite aumentar la eficiencia en el desarrollo de la técnica del estudiante. Si bien actualmente existen sistemas de análisis de movimiento para la dirección de orquesta[7] y evaluaciones preliminares de instrumentos musicales digitales o DMI (Digital Musical Instruments) basados en la tecnología de LeapMotion[8], no existen herramientas tecnológicas similares a FiMAN que permitan analizar los movimientos y posición de las manos y dedos para corregir y mejorar las técnicas de interpretación del piano, lo que en sí representa una innovación. FiMAN demuestra así su potencial para aplicarlo en otras áreas que requieran del análisis de movimiento digital, como ser la salud (recuperación en fisioterapia), responsabilidad social (aprendizaje de lenguaje de señas) u otras.</font></p>      <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Este artículo está estructurado de la siguiente manera: La Sección 2presenta la Arquitectura del Sistema donde se describe la interacción de cada uno de sus módulos. La Sección 2 muestra la implementación de FiMAN donde además se describe el hardware y software del sensor LeapMotion. En la Sección 3 se detalla el Estudio de Caso con la extensión de FiMAN para su aplicación en la educación musical. Finalmente, la Sección 4 concluye el artículo.</font></p>      <p align="justify">&nbsp;</p>      ]]></body>
<body><![CDATA[<p align="justify"><font size="3" face="Verdana, Arial, Helvetica, sans-serif"><a name="_Ref453562449"></a><a name="_Ref420273405"></a><b>2.&nbsp;&nbsp;&nbsp;&nbsp; ARQUITECTURA DE FiMAN</b></font><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><b>&nbsp;</b></font></p>      <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">FiMAN es un sistema que permite al usuario visualizar una representación gráfica los movimientos de las manos en la pantalla capturados mediante un sensor, además de procesar los datos para brindar al usuario opciones como almacenar los datos de movimientos para su posterior visualización, exportar los datos y mostrar gráficos estadísticos. </font></p>      <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">En la <a href="#f1">Figura 1</a> se muestra un esquema general del sistema, donde se puede observar los componentes más importantes del mismo interactuando entre sí, además de interactuar con el usuario y el sensor. Las flechas con línea punteada indican el flujo de los datos capturados con el sensor LeapMotion. Las flechas con línea continua indican el flujo de datos para coordinación de funcionamiento, petición de  servicios y control general. La flecha con línea segmentada indica la interacción entre el usuario y el sistema, donde principalmente el usuario selecciona opciones del sistema y el este procede a mostrar imágenes o generar archivos. Los datos capturados del sensor son enviados al módulo de Virtualización de datos, los cuales son procesados para construir una representación en 3D de las manos. Los datos son luego enviados a un interfaz de visualización, con la cual el usuario puede interactuar gracias a un escenario virtual. El sistema es controlado por un módulo de Control General que se ocupa de coordinar las acciones entre los otros módulos. </font></p>     <p align="justify"><a name="f1"></a></p>     <p align="center"><img src="/img/revistas/riyd/v1n16/a08_figura_01.gif" width="452" height="250"></p>      <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><b>2.1&nbsp;&nbsp;&nbsp; Arquitectura General</b></font></p>     <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">La arquitectura   general del sistema consta de 7 módulos con las siguientes funcionalidades:</font></p> <ul>       <li><font size="2" face="Verdana, Arial, Helvetica, sans-serif" align="justify"><b>Coordinación General: </b>Inicializa todo el sistema y     coordina las interacciones de los otros módulos</font></li>       <li><font size="2" face="Verdana, Arial, Helvetica, sans-serif" align="justify"><b>Captura de Datos:</b> Utiliza un sistema de eventos para     recibir datos del sensor LeapMotion</font></li>       <li><font size="2" face="Verdana, Arial, Helvetica, sans-serif" align="justify"><b>Interfaz Gráfica y Producción Visual:</b> Permite la     visualización de objetos en un escenario virtual en 3D y la interacción del     usuario con el sistema.</font></li>       ]]></body>
<body><![CDATA[<li><font size="2" face="Verdana, Arial, Helvetica, sans-serif" align="justify"><b>Representación Virtual de Componentes:</b> Permite la     modelización de objetos que son visualizados por el sistema, que incluyen las     manos y cualquier objeto definido por el usuario. La modelización se encuentra     representada en su totalidad en un Escenario Virtual que contiene los datos de     posición de las manos (dedos y muñecas).</font></li>       <li><font size="2" face="Verdana, Arial, Helvetica, sans-serif" align="justify"><b>Modificación Visual:</b> Permite la modificación interactiva     de los parámetros de visualización (diferentes vistas para modificar el foco,     ángulo y zoom) </font></li>       <li><font size="2" face="Verdana, Arial, Helvetica, sans-serif" align="justify"><b>Manejo de Escenarios Virtuales:</b> Define un formato propio     para guardar en archivos y reproducir todos los movimientos con todos los     detalles para su posterior utilización. Además, permite generar reportes     estadísticos de análisis de cada mano y dedos de los diferentes ejes en 3D,     i.e. coordenadas <i>(x,y,z)</i>, con respecto al tiempo en base a datos de     Escenarios Virtuales previamente guardados.</font></li>       <li><font size="2" face="Verdana, Arial, Helvetica, sans-serif" align="justify"><b>Producción de Sonido:</b> Brinda la posibilidad de agregar una     funcionalidad extra a sistemas desarrollados en base a los módulos del sistema     básico: Permite asociar sonidos a los componentes visualizados con respecto a     posiciones o movimientos.</font></li>     </ul>     <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Los módulos interactúan entre sí intercambiando datos y coordinando tareas. En la <a href="#f2">Figura 2</a> se muestra un esquema de interacción entre los módulos, sensor LeapMotion y el usuario. Se puede observar que el módulo de Coordinación General interactúa con otros 3 módulos activos para coordinar su funcionamiento paralelo: módulo de Interfaz Gráfica y Producción Visual, módulo de Escenarios Virtuales y módulo de Captura de Datos. </font></p>      <p align="justify"><a name="f2"></a></p>     <p align="center"><img src="/img/revistas/riyd/v1n16/a08_figura_02.gif" width="542" height="422"></p>     <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Se puede observar que el sensor LeapMotion interactúa con el módulo de Captura el cual provee datos requeridos al módulo de Representación Virtual, desde donde los otros módulos del sistema que requieran podrán accederán a la información necesaria almacenada. Otra interacción importante es la del módulo de Interfaz Gráfica y Producción Visual, el cual requiere los datos de Representación Virtual para recrear gráficamente la modelización de objetos que se encuentran en un Escenario Virtual. Por otra parte, el Módulo de Modificación Visual se relaciona directamente con el módulo de Interfaz Gráfica y Producción Visual para realizar los cambios visuales requeridos por el usuario. El módulo de Manejo de Escenarios Virtuales interactúa con los módulos de Interfaz Gráfica para la generación de datos estadísticos en base a Escenarios Virtuales guardados en archivos y con el módulo de Representación Virtual de Componentes para importar o exportar datos de Escenarios Virtuales a archivos. </font></p>      <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Las líneas grises gruesas en la <a href="#f2">Figura 2</a> indican el flujo de datos de las manos y datos de representación gráfica, las líneas continuas normales indican que la interacción está relacionada directamente a los datos de Escenarios Virtuales, las líneas punteadas indican que la interacción está relacionada con datos de coordinación (iniciar, pausar, finalizar una tarea determinada de algún módulo) y las líneas segmentada indican que la interacción es producida de manera directa por intervención del usuario, tal como realizar una modificación virtual, seleccionar alguna opción como generar datos estadísticos, guardar datos en archivos o reproducir un archivo, entre otros.</font></p>      ]]></body>
<body><![CDATA[<p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">El módulo de Producción de Sonido no está habilitado en el sistema básico, sin embargo, tiene las interfaces necesarias (<i>plugin</i>) para su extensión, donde interaccionaría con el módulo de Coordinación General y el módulo de Representación Virtual de Componentes produciendo sonidos en base a los datos de posición de los componentes del Escenario Virtual, e.g. se puede hacer que el sistema emita un sonido agudo (frecuencia alta dentro del rango de audición) cuando la punta de algún dedo llegue a una coordenada determinada (<i>x,y,z</i>).</font><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><i>&nbsp;</i></font></p>      <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><b>2.2&nbsp;&nbsp;&nbsp; Modelización del Software</b></font><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><b>&nbsp;</b></font></p>      <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">El sistema FiMAN fue diseñado utilizando UML (Unified Modeling Language) [9] y se implementó cada módulo en un paquete según la siguiente relación (ver <a href="#f3">Figura 3</a>):</font></p>  <ul>       <li><font size="2" face="Verdana, Arial, Helvetica, sans-serif" align="justify">El módulo de Captura de Datos en el paquete <b><i>Captura_Datos</i></b></font></li>       <li><font size="2" face="Verdana, Arial, Helvetica, sans-serif" align="justify">El módulo de Representación Virtual de Componentes en el paquete <b><i>Representacion_Virtual</i></b></font></li>       <li><font size="2" face="Verdana, Arial, Helvetica, sans-serif" align="justify">El módulo de Interfaz Gráfica y Producción Visual en el paquete <b><i>IG_Produccion_Visual</i></b></font></li>       <li><font size="2" face="Verdana, Arial, Helvetica, sans-serif" align="justify">El módulo de Modificación Virtual en el paquete <b><i>Modificacion_Virtual</i></b></font></li>       <li><font size="2" face="Verdana, Arial, Helvetica, sans-serif" align="justify">El módulo de Manejo de Escenarios Virtuales en el paquete <b><i>Manejo_Escenario</i></b></font></li>       <li><font size="2" face="Verdana, Arial, Helvetica, sans-serif" align="justify">El módulo de Producción de Sonido en el paquete <b><i>Produccion_Sonido</i></b></font></li>     </ul>     ]]></body>
<body><![CDATA[<p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><a name="f3"></a></font></p>     <p align="center"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><img src="/img/revistas/riyd/v1n16/a08_figura_03.gif" width="545" height="430"></font></p>     <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">La <a href="#f3">Figura 3</a> muestra el diagrama general de paquetes del   sistema. Como se puede observar, existen relaciones de dependencia (flechas   punteadas sin etiquetas), de unión (flechas punteadas con etiqueta “<b>&lt;&lt;merge&gt;&gt;</b>”) y de acceso (flechas punteadas   con etiqueta <b>“&lt;&lt;access&gt;&gt;</b>”),   que determinan el espacio de trabajo (workspace) y el alcance de cada paquete.</font></p>     <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">En caso del paquete     <b><i>Coordinacion_General</i></b> tiene una relación de unión con todos los paquetes excepto <b><i>Modificacion_Virtual</i></b> y <b><i>Manejo_Escenario</i></b>, ya que es el paquete principal del sistema desde donde se inicia y coordina todo el funcionamiento de los demás paquetes, por lo que puede acceder a todos ellos. En caso de la relación de dependencia, como es el de <b><i>Representacion_Virtual</i></b> y <b><i>Captura_Datos</i>, </b>como su nombre indica, tendrá una dependencia entre los elementos de los paquetes<b>,</b> es decir que si se realiza una modificación en <b><i>Captura_Datos</i></b> afectará a <b><i>Representación_Virtual</i></b>.</font></p>      <p align="justify">&nbsp;</p>      <p align="justify"><font size="3" face="Verdana, Arial, Helvetica, sans-serif"><b><a name="_Ref454235202"></a><a name="_Ref420273437"></a>2.&nbsp;&nbsp;&nbsp;&nbsp; IMPLEMENTACIÓN DE FiMAN</b></font></p>      <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Una vez la arquitectura de software modelizada como un sistema Orientado-Objeto, se seleccionó para la implementación de FiMAN el lenguaje de programación Java<a href="#_ftn4" name="_ftnref4" title="">[4]</a>, principalmente por su naturaleza multiplataforma[10], por sus bibliotecas de desarrollo de imágenes y manejo de sonido. Para el desarrollo de aplicaciones, LeapMotion dispone de varios kits de desarrollo o SDK (Software Development Kit), con sus respectivos interfaces de programación o API (Application Programming Interface), en diversos lenguajes de programación, entre ellos Java.</font></p>      <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">A continuación se describe las características del hardware y software de LeapMotion además de todos los módulos implementados en el sistema.</font></p>      <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><b>2.1.&nbsp;&nbsp;&nbsp;&nbsp; El Sensor Leap Motion</b></font></p>      <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">El dispositivo LeapMotion es un sensor infrarrojo que ha sido creado por la empresa LeapMotion Inc. Tiene la capacidad de capturar la posición de la mano, específicamente del antebrazo, muñeca y dedos. </font></p>  <ul>       ]]></body>
<body><![CDATA[<li><font size="2" face="Verdana, Arial, Helvetica, sans-serif" align="justify"><b>Especificaciones de Hardware:</b></font></li>     </ul>     <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Este dispositivo tiene unas dimensiones de 75 mm de largo, 25 mm de ancho y 11 mm de alto<a href="#_ftn5" name="_ftnref5" title="">[5]</a>. Cuenta con dos cámaras, tres LEDs y un microcontrolador. Cada una de estas cámaras cuenta con un sensor monocromático, sensible a la luz infrarroja, con una longitud de onda de 850 nm<a href="#_ftn6" name="_ftnref6" title="">[6]</a>. Estos sensores pueden trabajar a una velocidad de hasta 200 fps (<i>frames per second</i>), dependiendo del rendimiento de la computadora conectada. Los LEDs se encargan de iluminar la zona de cobertura por inundación, trabajan en el espectro de luz infrarroja a una longitud de onda de 850 nm que es la misma a la que son sensibles los sensores ópticos. Además, este dispositivo cuenta con un controlador USB para que el ordenador pueda reconocerlo, este controlador es de alta velocidad y puede soportar USB 3.0.<a href="#_ftn7" name="_ftnref7" title="">[7]</a>. La zona de cobertura del dispositivo es una semiesfera de 61 cm de radio, esta zona depende del ángulo de visión de las lentes de las cámaras y de la intensidad máxima que puede entregar la conexión USB a los LEDs. Tanto el ángulo de visión horizontal de LeapMotion como el vertical son de 150º delimitando la zona de interacción<a href="#_ftn8" name="_ftnref8" title="">[8]</a>. </font></p>  <ul>       <li><font size="2" face="Verdana, Arial, Helvetica, sans-serif" align="justify"><b>API de LeapMotion:</b></font></li>     </ul>     <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">LeapMotion cuenta con una API que provee métodos que brindan directamente la opción de trabajar con los datos del muestreo de la mano. Los lenguajes de programación que pueden utilizar las LeapMotion API son: C++, C#, Objective-C, Java, JavaScript, Unityy Python<a href="#_ftn9" name="_ftnref9" title="">[9]</a>.</font></p>      <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">En la API del dispositivo se define una zona de trabajo llamada “<i>Interaction Box</i>”<a href="#_ftn10" name="_ftnref10" title="">[10]</a>&nbsp; por un volumen de 110.55 mm de altura x 110.55 mm de ancho x 69.43 mm de profundidad, que varía sus dimensiones dependiendo de donde se encuentre el objeto a rastrear. Esta es la zona en la que se marca el centro del sistema de coordenadas cartesianas de LeapMotion. El sistema de coordenadas cartesianas tiene, desde la posición del usuario, el eje <i>y</i> con valores positivos hacia arriba, el <i>x</i> hacia la derecha y el <i>z </i>hacia el usuario. </font></p>      <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">El LeapMotion API obtiene los datos de las manos con una serie de capturas de escena llamados <i>frames</i>. Cada objeto <i>frame</i> contiene la información de cierto momento en el tiempo, esta información incluye datos de las manos (<i>Hands</i>). La cantidad de <i>frames</i> varía de acuerdo al uso que se está dando al dispositivo y puede variar desde 30 fps a 200 fps. <i>Frame</i> es un atributo de la clase <i>Controller</i>, la cual es la interfaz principal de LeapMotion. </font></p>      <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">En la <a href="#f4">Figura 4</a> se muestra un diagrama de clases (parcial) del API de LeapMotion donde se puede observar que la clase <i>Bone</i> compone (es una parte imprescindible, por definición) de <i>Finger</i> y este compone a <i>Hand</i>. Por otra parte, <i>Frame</i> es agregado (es una parte prescindible, puede o no existir) por <i>Hand</i> y, a su vez <i>Controller</i> es agregado por <i>Frame</i>.</font></p>      <p align=justify><a name="f4"></a></p>     ]]></body>
<body><![CDATA[<p align=center><img src="/img/revistas/riyd/v1n16/a08_figura_04.gif" width="620" height="109"></p>     <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Las clases que contienen la información relevante de las capturas de manos son <i>Finger</i> y <i>Bone</i>, que representan a los dedos de las manos y a los huesos de las falanges respectivamente. </font></p>      <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">La clase <i>Finger</i> representa al seguimiento o rastreo de un dedo. Los objetos <i>Finger</i> son atributos de <i>Hand</i> y contienen datos como el tipo de dedo, longitud, ancho, velocidad y posición de punta de dedo. </font></p>      <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">En la <a href="#f5">Figura 5</a> se puede observar un segmento de código de una implementación con datos de salida en texto mostrados en la <a href="#f5">Figura 6</a>. Este segmento de código muestra un bucle o ciclo donde se muestran los datos de cada <i>Finger</i> en un <i>Hand</i>. Entre los datos mostrados se encuentran el tipo de dedo (<i>type()</i>), el identificador (<i>id()</i>), largo del dedo (<i>length()</i>), ancho (<i>width()</i>), velocidad de la punta (<i>tipVelocity()</i>) en milímetros sobre segundo, para cada uno de sus componentes <i>x</i>,<i> y </i>y<i>z </i>obtenidos mediante los métodos <i>getX()</i>, <i>getY()</i> y <i>getZ() </i>respectivamente. Además, también se muestra los datos de la posición de la punta (obtenido mediante el método <i>tipPosition</i>()) en milímetros según los ejes <i>x, y, z</i>.</font></p>     <p align="justify"><a name="f5"></a></p>     <p align="center"><img src="/img/revistas/riyd/v1n16/a08_figura_06.gif" width="562" height="579"></p>     <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Los tipos de dedo (<i>type()</i>) están definidos en inglés y pueden ser <i>TYPE_THUMB</i>, <i>TYPE_INDEX, TYPE_MIDDLE, TYPE_RING </i>y<i> TYPE_PINKY</i> que corresponden los dedos pulgar, índice, medio, anular y meñique respectivamente.</font></p>      <p align=justify><font size="2" face="Verdana, Arial, Helvetica, sans-serif">La clase <i>Bone</i> representa a un hueso de la mano rastreado por el sensor LeapMotion. Cada <i>Finger</i> (dedo) tiene 4 <i>Bone</i> (hueso falange) excepto el pulgar (<i>Finger</i> tipo <i>TYPE_THUMB</i>) que tiene 3. Los huesos se ordenan desde la base hasta la punta, indexado de 0 a 3. Además, el tipo de hueso (<i>type()</i>) puede ser utilizado para indexar un hueso específico anatómicamente.</font></p>      <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><b>2.2.&nbsp;&nbsp;&nbsp;&nbsp; Módulos de FiMAN</b></font></p>      <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">A continuación se explica la implementación de cada paquete correspondiente a cada módulo de FiMAN en Java.</font></p>  <ul>       ]]></body>
<body><![CDATA[<li><font size="2" face="Verdana, Arial, Helvetica, sans-serif" align="justify"><b>Captura de Datos:</b></font><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><b>&nbsp;</b></font></li>     </ul>     <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">El módulo de Captura de Datos funciona en un hilo de procesamiento (<i>Thread</i>) que es iniciado y supervisado por el módulo de Coordinación General y se encarga en almacenar los datos en el Módulo de Representación Virtual mientras se realiza la captura de los mismos a tiempo real utilizando la biblioteca de LeapMotion.</font></p>      <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">El sensor envía los datos mediante un cable USB a la computadora y, gracias a la biblioteca Java (<b>LeapJava.jar</b>) de LeapMotion, se pueden interpretar los mismos como objetos, seleccionándose en el Módulo de Captura, los datos de la mano para posteriormente pasarle los mismos al módulo de Representación Virtual.</font></p>      <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">En la <a href="#f7">Figura 7</a> se muestra un esquema de la interacción general entre el Módulo de Captura, el Módulo de Coordinación General, el sensor LeapMotion y el Módulo de Representación Virtual. </font></p>      <p align="justify"><a name="f7"></a></p>     <p align="center"><img src="/img/revistas/riyd/v1n16/a08_figura_07.gif" width="547" height="355"></p> <ul>       <li><font size="2" face="Verdana, Arial, Helvetica, sans-serif" align="justify"><b>Representación Virtual:</b></font><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><b>&nbsp;</b></font></li>     </ul>     <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">El Módulo de Representación Virtual está muy relacionado al Módulo de Captura de Datos, ya que todos sus datos provienen del mismo. Éste módulo principalmente se encarga de estructurar y almacenar momentáneamente los datos considerados necesarios para la representación gráfica y posterior reproducción en FiMAN.</font></p>      ]]></body>
<body><![CDATA[<p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">El módulo está compuesto por las clases que representan a un escenario virtual, que contiene a las estructuras de las manos. Cada mano está compuesta por los dedos y a su vez, éstos están compuestos por huesos (falanges) tal como se muestra en la <a href="#f8">Figura 8</a>. Los componentes del escenario virtual contienen los datos de la posición en la que se encuentran (en milímetros), la velocidad de los dedos (en milímetros sobre segundo), además de otros datos relevantes para la representación gráfica.</font></p>     <p align="justify"><a name="f8"></a></p>     <p align="center"><img src="/img/revistas/riyd/v1n16/a08_figura_08.gif" width="565" height="110"></p>     <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">La estructura de Representación Virtual corresponde en parte a la estructura que LeapMotion utiliza; donde una mano (<i>Hand</i>) está compuesta por dedos (<i>Finger</i>) que a su vez están compuestos por huesos falanges (<i>Bone</i>). Sin embargo, se utilizan clases propias para crear objetos sólo con la información útil requerida, tales como su posición inicial en el espacio, la velocidad del componente, posición de la muñeca, ángulos de inclinación de los huesos y los vectores base que representan la posición de un hueso.</font></p>      <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">La Representación Virtual depende del Módulo Captura (para actualizar los datos  de la posición de un dedo, por ejemplo) y Manejo de Almacenamiento de Escenas (en grabación o reproducción).</font></p>  <ul>       <li><font size="2" face="Verdana, Arial, Helvetica, sans-serif" align="justify"><b>Interfaz Gráfica y Producción Visual:</b></font></li>     </ul>     <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">La Interfaz Gráfica y Producción Visual está compuesta por las clases que se encargan de producir las representaciones gráficas de los dedos y muñecas que tienen datos almacenados en Representación Virtual. Estas clases han sido implementadas desde ceroy no forman parte del API de Leap Motion. </font></p>      <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Para realizar la representación gráfica de la mano se utilizan los datos de los huesos de los dedos capturados y la posición de la muñeca, que se dibujan mediante mallas poligonales[11].</font></p>      <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">En FiMAN, los componentes son representados tomando un sistema de coordenadas diferente al de Representación Virtual que tiene el mismo sistema de coordenadas del API de Leap Motion. El sistema de coordenadas de éste módulo se sitúa a 30 centímetros detrás del origen (tomando como punto de referencia la posición de la pantalla en la cual se proyecta la imagen) y 15 centímetros más bajo de la horizontal (tomando como punto de referencia el centro de la pantalla en la cual se proyecta la imagen) ya que de ésta manera se puede visualizar las mallas poligonales como un observador externo.</font></p>      ]]></body>
<body><![CDATA[<p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">La biblioteca de visualización de mallas poligonales fue implementada de cero dentro del desarrollo de FiMAN a partir de principios matemáticos para la manipulación de objetos en 3 dimensiones[11]. Dicha biblioteca, no es específica a FiMAN, y puede ser utilizada en otros sistemas que requieran similar visualización. </font></p>      <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">En la <a href="#f9">Figura 9</a> se muestra el diagrama de clases utilizado en la biblioteca de visualización de mallas poligonales. Donde se define que, para que un objeto sea dibujado debe ser modelado con vértices y aristas, debiendo por lo tanto heredar de la clase <i>Malla</i>, que representa a una malla poligonal. La clase <i>Malla</i> está compuesta por una lista vértices y una lista de aristas, que son <i>VList</i> y <i>AList</i>, estas clases son listas doblemente enlazadas<a href="#_ftn11" name="_ftnref11" title="">[11]</a> de objetos <i>VNodo</i> y <i>ANodo</i>. A su vez, cada objeto <i>VNodo</i> y <i>ANodo</i> contiene a un vértice (atributo <i>vertice</i>) y una arista (atributo <i>arista</i>) respectivamente, además del siguiente <i>VNodo</i> o <i>ANodo</i> que componen una lista (atributo <i>next</i>). Por otra parte, cada objeto <i>Arista</i> es formado por dos vértices (atributos <i>v1</i> y <i>v2</i>).</font></p>      <p align=justify><a name="f9"></a></p>     <p align=center><img src="/img/revistas/riyd/v1n16/a08_figura_09.gif" width="539" height="365"></p>     <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Cada vértice contiene el dato de la posición en la que se encuentra (en un espacio 3 dimensiones) y además, contiene los datos de las posiciones respecto a unos marcos que muestran al espacio desde una posición frontal, lateral, superior y en perspectiva. Estos datos (contenidos en los atributos <i>posFrontal</i>, <i>posLateral</i>, <i>posSuperior</i> y <i>posPerspectiva</i>) están transformados a 2 dimensiones para poder ser dibujados en un <i>JFrame</i><a href="#_ftn12" name="_ftnref12" title="">[12]</a> mediante la clase <i>PGrafico</i>que contiene a <i>Graphics</i>, la cual permite realizar gráficos que serán mostrados en la pantalla transformados a 2 dimensiones para poder ser dibujados en un <i>JFrame</i><a href="#_ftn13" name="_ftnref13" title="">[13]</a> mediante la clase <i>PGrafico</i> que contiene a <i>Graphics</i>, la cual permite realizar gráficos que serán mostrados en la pantalla<a href="#_ftn14" name="_ftnref14" title="">[14]</a>.</font></p>      <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">En la <a href="#f10">Figura 10</a> se puede observar la representación de los dedos de la mano mediante mallas poligonales.</font></p>     <p align="justify"><a name="f10"></a></p>     <p align="center"><img src="/img/revistas/riyd/v1n16/a08_figura_10.gif" width="527" height="392"></p>     <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Las representaciones gráficas pueden ser modificadas mediante las clases de Modificación Virtual y, a su vez Producción Visual puede modificar la configuración visual según los cambios que realice el usuario a través de la Interfaz Gráfica.</font></p>      <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">El módulo de Interfaz Gráfica y Producción Visual también están compuestos por la interfaz mediante la que el usuario interactúa con el sistema, es decir, los <i>frames</i> y paneles que contienen los botones, imágenes, <i>checkboxes</i>, barras de deslizamiento (<i>slide bar</i>), cuadros de dialogo y cuadros estadísticos, siendo los últimos implementados en base a la biblioteca JFreeChart<a href="#_ftn15" name="_ftnref15" title="">[15]</a>.</font></p>  <ul>       ]]></body>
<body><![CDATA[<li><font size="2" face="Verdana, Arial, Helvetica, sans-serif" align="justify"><b>Modificación Virtual:</b></font></li>     </ul>     <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">El módulo de Modificación Virtual está compuesto por las clases que se encargan de modificar el entorno virtual representado en la visualización a nivel gráfico. </font></p>      <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">La interacción del usuario con el módulo de Modificación Virtual en FiMAN se realiza mediante el teclado y la interfaz gráfica que activan los eventos para modificar la representación gráfica de mallas poligonales en la pantalla. El usuario realiza petición de modificación virtual al teclado (para rotar, acercar o alejar la imagen) o al módulo de Interfaz Gráfica y Producción Visual (para desactivar la representación gráfica de un componente), posteriormente las peticiones son remitidas al módulo de Modificación Virtual donde se procesan las peticiones y se realizan los cambios a los parámetros correspondientes dentro del módulo de Interfaz Gráfica y Producción Visual. Hay que hacer notar que el módulo de Representación Virtual no es afectado por modificaciones realizadas, ya que todos los cambios son a nivel de representación gráfica únicamente, sin realizar cambios a los datos dicho módulo que sigue enviando los datos del Escenario Virtual para ser representados gráficamente con los cambios realizados. En la <a href="#f11">Figura 11</a> se puede observar la interacción entre los componentes relacionados a la modificación virtual.</font></p>     <p align="justify"><a name="f11"></a></p>     <p align="center"><img src="/img/revistas/riyd/v1n16/a08_figura_11.gif" width="579" height="315"></p>     <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">La modificación de visualización incluye los movimientos de rotación, acercamiento y alejamiento de la representación gráfica además de la activación o desactivación de componentes representados mediante mallas poligonales (para la habilitar o no habilitar el dibujo de los dedos y las muñecas). </font></p>  <ul>       <li><font size="2" face="Verdana, Arial, Helvetica, sans-serif" align="justify"><b>Manejo de Escenarios Virtuales:</b></font></li>     </ul>     <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">El módulo de Manejo de Escenarios Virtuales está compuesto por las clases que se encargan de generar archivos, leerlos y reproducirlos, crear gráficos estadísticos en base a archivos previamente guardados, así como también generar reportes en formato Excel mediante la biblioteca JExcel<a href="#_ftn16" name="_ftnref16" title="">[16]</a>en base a la información almacenada en Escenarios Virtuales.</font></p>      ]]></body>
<body><![CDATA[<p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">En el sistema FiMAN, el usuario puede iniciar el proceso de grabación de movimiento de manos mediante la interfaz gráfica, lo que generará un hilo de ejecución (<i>Thread</i>) para capturar los datos de las manos del Escenario Virtual. Posteriormente, mediante el mecanismo de serialización de Java[12] se procede a guardar los datos en un archivo temporal, para luego dar la opción de guardar la grabación en un archivo. Éstos datos, que son captados por el Módulo de Captura de Datos, pueden ser almacenados en archivos con la extensión <b>.fim</b>(FiMAM file)<a href="#_ftn17" name="_ftnref17" title="">[17]</a>.</font></p>      <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Otras opciones de FiMAN permiten al usuario reproducir los archivos previamente guardados. En este caso, de manera inversa a lo que  se realiza en la grabación, se genera un hilo de ejecución que procede a guardar los datos del archivo en el Escenario Virtual. De igual manera, se pueden generan gráficos estadísticos y el usuario tiene la opción de exportar los datos a Excel para un registro personal o para un análisis posterior. Estas opciones son habilitadas posteriormente al cargado de archivos <b>.fim</b> al sistema.</font></p>  <ul>       <li><font size="2" face="Verdana, Arial, Helvetica, sans-serif" align="justify"><b>Producción de Sonido:</b></font></li>     </ul>     <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">El módulo de Producción de Sonido fue desarrollado como un <i>plugin</i> del sistema y es el encargado de la activación de sonidos MIDI (Musical Instrument Digital Interface) . Esta funcionalidad fue implementada en base a la librería MIDI de Java<a href="#_ftn18" name="_ftnref18" title="">[18]</a> y consiste en un teclado (musical) virtual que reproduce sonidos correspondientes a las notas musicales activados mediante eventos.</font></p>      <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">MIDI es un protocolo estándar de comunicación para dispositivos musicales electrónicos, como los instrumentos de teclado electrónicos y computadoras personales. Los datos MIDI se pueden transmitir a través de cables especiales durante una actuación en vivo como también se pueden almacenar en un tipo estándar de archivo para la reproducción o la edición posterior<a href="#_ftn19" name="_ftnref19" title="">[19]</a>.</font></p>      <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Java, entre sus bibliotecas de clases, presenta un API que emula el comportamiento de un sintetizador MIDI mediante unas clases que están definidas en las bibliotecas de javax.sound.midi, donde existen secuenciadores, sintetizadores, transmisores (los relacionados con los puertos de entrada MIDI), receptores (los asociados con los puertos de salida MIDI), los datos de los archivos MIDI estándar y los datos de los archivos del banco de sonidos<a href="#_ftn20" name="_ftnref20" title="">[20]</a>. Las clases pertenecientes a este módulo corresponden a un hilo de proceso, al sintetizador (necesario para producir el sonido MIDI en Java), a las notas musicales para determinar el sonido a producir, la teclas y los estados de una tecla (activado y desactivado). </font></p>  <ul>       <li><font size="2" face="Verdana, Arial, Helvetica, sans-serif" align="justify"><b>Coordinación General:</b></font></li>     </ul>     <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">El módulo de Coordinación General es el encargado de controlar el funcionamiento del sistema mediante permisos que sirven para iniciar o finalizar <i>Threads</i> de los módulos del sistema. El sistema FiMAN funciona con 4 <i>Threads</i> ejecutándose de manera concurrente. Esos <i>Thread</i> son regulados (iniciados o detenidos) por Coordinación General y corresponden a las clases que son encargadas de manejar los procesos de los módulos Producción Visual, Producción de Sonido, Captura de Datos y Manejo de Escenarios Virtuales (para la funcionalidad de grabación y reproducción).</font></p>      ]]></body>
<body><![CDATA[<p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">El módulo contiene un registro los <i>Threads</i> activos del sistema por lo que, constantemente sirve como verificador para que todos los procesos funcionen de manera coordinada y accedan sin problemas a los diferentes objetos en tiempo de ejecución.</font></p>      <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">La <a href="#f12">Figura 12</a> muestra el sistema de base completo de FiMAN, que incluye todas las funcionalidades para realizar análisis de movimientos de las manos de manera visual, en tiempo real y además brinda al usuario las diferentes opciones de manejo del sistema: grabación, reproducción, exportación de datos, cargado de archivos, producción de gráficos estadísticos, activación y desactivación de representaciones gráficas, además de un visualizador de datos de posiciones de la punta de dedos y ángulos de dedos respecto al plano horizontal y vertical.</font></p>      <p align=justify><a name="f12"></a></p>     <p align=center><img src="/img/revistas/riyd/v1n16/a08_figura_12.gif" width="763" height="485"></p>     <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">La implementación completa de FiMANincluye 53 clases Java y más de 7700 líneas de código fuente (Lines of Code – LoC), y el programa fue compilado y empaquetado en un archivo ejecutable multiplataforma para su fácil despliegue y ejecución, requiriendo únicamente el entorno de ejecución Java (Java RuntimeEnvironment – JRE)<a href="#_ftn21" name="_ftnref21" title="">[21]</a>. </font></p>      <p align="justify">&nbsp;</p>      <p align="justify"><font size="3" face="Verdana, Arial, Helvetica, sans-serif"><b><a name="_Ref454235715"></a><a name="_Ref420273448"></a>3.&nbsp;&nbsp;&nbsp;&nbsp; ESTUDIO DE CASO: EXTENSIÓN DE FiMANPARA SU APLICACIÓN A LA EDUCACIÓN MUSICAL</b></font></p>      <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Una de las características más importantes de FiMAN es su modularidad, lo que permite desarrollar nuevas aplicaciones basadas en los datos capturados por un sensor LeapMotion. Para demostrar dicha modularidad, se implementó una extensión para la educación musical de técnicas de piano. Para esto se definieron algunos requerimientos específicos al Estudio de Caso mediante una consulta a expertos maestros de piano de la Academia Nacional de Música “Man Césped” de la ciudad de Cochabamba, Bolivia.</font></p>      <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">En este Estudio de Caso se muestra el potencial del sistema desarrollado, puesto que permite la inclusión de nuevos componentes (teclado virtual de un piano), el desarrollo de análisis específicos (posicionamiento de la mano), la inclusión de interacciones entre componentes virtuales (importancia de la posición de la yema del dedo con respecto a una tecla y la velocidad al tocar) y el análisis posterior que puede realizar el maestro para indicar de manera visual al estudiante, cómo corregir sus errores desde varios puntos de perspectiva y a diferentes velocidades. </font></p>      <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><b><a name="_Ref291945006">3.1.&nbsp;&nbsp;&nbsp;&nbsp; Soporte Físico</a></b></font></p>      ]]></body>
<body><![CDATA[<p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Para poder determinar el rango infrarrojo exacto en el que trabaja el sensor LeapMotion, se realizaron medidas con un espectrómetro. En la <a href="#f13">Figura 13</a> se puede observar el resultado que se obtuvo mediante el espectrómetro Ocean Optics STS-VIS<a href="#_ftn22" name="_ftnref22" title="">[22]</a> con el software de análisis <i>OceanOpticsSpectra Suite</i><a href="#_ftn23" name="_ftnref23" title="">[23]</a>. El LeapMotion trabaja con ondas electromagnéticas en el rango infrarrojo, es decir, longitudes de onda mayores a 750nm. Los 3 LEDs del LeapMotion emiten luz infrarroja tienen sus máximos en aproximadamente de 817 nm y de 863 nm.Las 2 cámaras infrarrojas del LeapMotion capturan los movimientos con longitudes de onda de 850 nm<a href="#_ftn24" name="_ftnref24" title="">[24]</a>.Como se observa en la <a href="#f11">Figura 11</a>, la intensidad para 850 nm. es suficiente para que las cámaras puedan capturar el movimiento.</font></p>      <p align="justify"><a name="f13"></a></p>     <p align="center"><img src="/img/revistas/riyd/v1n16/a08_figura_13.gif" width="473" height="265"></p>     <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Para la simulación del teclado virtual, se   diseñó un soporte físico de referencia que permite al usuario sentir una   superficie donde se represente al teclado virtual del piano. Se utilizó como   superficie una placa de vidrio común, puesto que este material tiene una   absorción mínima en estas longitudes de onda con respecto a otros materiales   (plástico, plexiglás, resina, etc.).</font></p>     <p align=justify><font size="2" face="Verdana, Arial, Helvetica, sans-serif">El soporte físico está conformado por la superficie de vidrio y una estructura metálica, formada por un marco, una vara vertical y vara horizontal, las cuales están unidas entre sí mediante prensas o seguros de presión. La <a href="#f14">Figura 14</a> muestra el soporte físico ensamblado.</font></p>      <p align="justify"><a name="f14"></a></p>     <p align="center"><img src="/img/revistas/riyd/v1n16/a07_figura_14.jpg" width="494" height="297"></p>     <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">La superficie de vidrio es una sección de vidrio de 2 mm de espesor, 38,5 cm de largo y 17 cm de ancho que funciona como superficie soporte a las manos del usuario y a la vez, permite al LeapMotion captar la posición de la mano ya que es un material que no interfiere o interfiere en muy poca medida con el infrarrojo.</font></p>      <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">El largo y el ancho fueron definidos en base a pruebas de alcance del LeapMotion, a la medida de 2 octavas del piano (33 cm) y la longitud de las teclas blancas del piano (14.7 cm) aumentando 2,3 cm de tolerancia y de sujeción al marco.</font></p>      <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><b>3.2.&nbsp;&nbsp;&nbsp;&nbsp; Diseño de Teclado Virtual</b></font></p>      ]]></body>
<body><![CDATA[<p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Para la representación del teclado virtual se desarrolló un modelo propio, tomando como parámetro referencias reales de la composición de las teclas (blancas y negras) siguiendo el Índice Acústico Científico [13]. La <a href="#f11">Figura 15</a> muestra los valores de los ocho vértices (V<sub>1 ,</sub>V<sub>2, … </sub>V<sub>8</sub>) de la tecla ‘sol’ tomando como referencia principal las coordenadas <i>(x,z)</i><a href="#_ftn25" name="_ftnref25" title="">[25]</a> correspondientes al vértice V<sub>1</sub>; donde la longitud N de las teclas negras es 9,5 cm., la longitud B de las blancas es 14,7 cm., S<sub>n</sub> y S<sub>b</sub> corresponden al grosor de las teclas negras y blancas respectivamente. </font></p>      <p align=justify><a name="f15"></a></p>     <p align=center><img src="/img/revistas/riyd/v1n16/a07_figura_15.jpg" width="582" height="363"></p>     <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Con los vértices identificados, el sistema permite calibrar el soporte físico de vidrio para identificar los vértices de la manera más realista posible. Para esto se determina la posición y el ángulo de contacto con un espacio y profundidad de tolerancia de toque, como muestra la <a href="#f16">Figura 16</a>. </font></p>      <p align=justify><a name="f16"></a></p>     <p align=center><img src="/img/revistas/riyd/v1n16/a08_figura_16.gif" width="507" height="216"></p>     <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">La parte funcional del teclado virtual fue desarrollado en base al módulo de sonido de FiMAN que proporciona las herramientas necesarias para la activación del sonido correspondiente a cada tecla. Una particularidad es el manejo de la profundidad de tolerancia de toque, puesto que se desea que el piano virtual sea lo más realista posible, controlando la intensidad del sonido dependiendo la posición de la punta del dedo, con respecto al lugar de la tecla tocada (espacio de tolerancia) y la velocidad de apoyo sobre la tecla virtual. Esto permite equilibrar la falta de una tecla real, con la intensidad del sonido generado.</font></p>      <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><b>3.3.&nbsp;&nbsp;&nbsp;&nbsp; Uso real del sistema</b></font></p>      <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Se realizaron pruebas reales con estudiantes de piano individuales para analizar técnicas de piano (ver <a href="#f17">Figura 17</a>) con un resultado óptimo.</font></p>     <p align="justify"><a name="f17"></a></p>     ]]></body>
<body><![CDATA[<p align="center"><img src="/img/revistas/riyd/v1n16/a07_figura_17.jpg" width="477" height="335"></p>     <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Entre las posibilidades de uso de FiMAN para el análisis de movimiento digital, la verificación de movimientos de dedo respecto al tiempo tiene una especial utilidad al momento de evaluar el desarrollo de la técnica pianística de un estudiante. </font></p>      <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Una de las formas de evaluar la técnica básica consiste en tocar “trinos” (alternación de dos notas repetidas de manera cíclica) con dos dedos contiguos realizando movimientos de subida y bajada sin variar la posición horizontal. Se puede realizar la evaluación de los dedos mediante trinos con cualquier combinación posible de dedos contiguos. Sin embargo existe mayor dificultad de movimiento con algunos dedos, siendo los dedos medio y anular una de las combinaciones más complicadas para los principiantes debido a la poca utilización independiente de estos dedos en la vida diaria, ya que casi siempre se mueven al mismo tiempo y en la misma dirección, lo que representa una dificultad natural anatómica a ser superada.</font></p>      <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Los trinos, en el caso ideal, deberían ser veloces y ser regulares en el tiempo (presentar el mismo lapso de tiempo entre la ejecución de una nota y otra, en todos los ciclos). La velocidad y regularidad de los trinos demuestra un control de los dedos implicados por parte del ejecutante, como también el desarrollo muscular requerido para avanzar técnicamente y tocar obras más difíciles. Esta evaluación actualmente se la realiza de manera auditiva, es decir, a criterio del maestro y del estudiante, quienes ajustan los parámetros de evaluación según su percepción. </font></p>      <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">La extensión desarrollada en el Estudio de Caso, permite grabar los movimientos de los dedos tocando trinos en dos teclas del teclado virtual en un lapso de tiempo determinado por el usuario y, posteriormente generar gráficos estadísticos de los movimientos verticales realizados (posiciones de la punta de dedos en eje <i>y</i>), dando la opción de activar o desactivar la muestra de datos de cualquier dedo en dicho gráfico.</font></p>      <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">En la <a href="#f18">Figura 17</a> y la <a href="#f19">Figura 18</a> se pueden observar los gráficos de la captura de dos grabaciones realizadas durante 15 segundos por estudiantes de piano con un mes y un año de aprendizaje respectivamente. </font></p>     <p align="justify"><a name="f18"></a></p>     <p align="center"><img src="/img/revistas/riyd/v1n16/a08_figura_17_.gif" width="566" height="277"></p>     <p align="center">&nbsp;</p>     <p align="center"><a name="f19"></a></p>     ]]></body>
<body><![CDATA[<p align="center"><img src="/img/revistas/riyd/v1n16/a08_figura_18.gif" width="569" height="284"></p>     <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">En las imágenes se observan los datos de la posición vertical (en milímetros) de la punta de los dedos medio y anular de la mano derecha respecto al tiempo. La notación utilizada “RH 3” y “RH 4” corresponden a la notación internacional de piano utilizada en la actualidad, donde “RH” es mano derecha (abreviación de “Right Hand”) y los números 3 y 4 corresponden a los dedos medio y anular respectivamente. </font></p>      <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Como se muestra en la <a href="#f18">Figura 17</a> y  <a href="#f19">Figura 18</a>, se puede observar la diferencia entre de capacidad motriz en los dedos medio y anular en un lapso de 15 segundos. Se aprecia que el estudiante con un mes de aprendizaje de piano realiza 6 ciclos de subida y bajada de dedos, a diferencia de los 11 ciclos que realiza un estudiante de piano con un año de práctica, además se puede apreciar que el tiempo que el estudiante tarda en levantar cada dedo es, en el primer caso, más pronunciado, formando un arco en la gráfica, debido a que los músculos extensores de sus dedos tienen mucha menor capacidad que sus músculos flexores lo que, a diferencia del segundo caso,  no se aprecia de manera evidente. Viendo la gráfica resultante, el maestro de piano puede plantearse la posibilidad de brindar al primer estudiante la práctica de ejercicios adicionales para aumentar su capacidad de extensión de los dedos medio y anular de la mano derecha. Asimismo, la reproducción de los movimientos con visualización de la posición de la mano y los dedos, en 3D y a diferentes velocidades y con diferentes perspectivas, permiten al maestro visualizar en detalle la evolución de los estudiantes, y dar guías para corregir la posición de las manos y los dedos si es necesario.</font></p>      <p align="justify">&nbsp;</p>      <p align="justify"><font size="3" face="Verdana, Arial, Helvetica, sans-serif"><b><a name="_Ref454236001"></a><a name="_Ref420273481"></a>4.&nbsp;&nbsp;&nbsp;&nbsp; CONCLUSIÓN Y DESARROLLO FUTURO</b></font></p>      <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">En este artículo se presentó el desarrollo de FiMAN, un Sistema Computarizado para Análisis de Movimientos Digitales. FiMAN utiliza un sensor Leap Motion para capturar datos de los movimientos de las manos, y genera las representaciones en 3D y en tiempo real para su análisis inmediato o posterior.Todo el software de FiMANfue desarrollado de cero, de manera modular y utilizando únicamente el interface de programación de Leap Motion para acceder a datos en bruto. Fueron descritos los diferentes módulos de software y la interacción entre ellos para manejar tanto el flujo de datos como el flujo de control relacionado a las interacciones del usuario. Para demostrar la modularidad de FiMAN, se desarrolló una extensiónpara elárea de educación musical, a través de la modelización de un piano virtual. La extensión incluye un <i>pluggin</i> para la generación de sonidos de acuerdo a los movimientos que el usuario realiza, con respecto a la posición de las teclas virtuales. Se demostró la utilidad de FiMAN en un uso real con estudiantes de piano, donde el maestro pudo realizar un análisis de los movimientos y de la posición de las manos y dedos de los estudiantes, para así poder hacer un seguimiento de la evolución de la técnica pianística de sus estudiantes. Actualmente no existen herramientas tecnológicas similares a FiMAN para el análisis de movimientos y posición de las manos y dedos para la corrección de técnicas de interpretación de piano, lo que muestra el carácter innovador de FiMAN.</font></p>      <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Las perspectivas de desarrollo futuro incluyen el uso de varios sensores, puesto que en algunos casos, el uso de un sensor puede ser limitante, esto se debe a que algunas partes de las manos no son captadas correctamente (normalmente por superposición de objetos en el rango del haz infrarrojo), lo que puede resultar en análisis más complejos o erróneos. Asimismo el análisis de datos requiere un desarrollo adicional, ya que la cantidad de datos recolectados puede ser muy grande. En el sistema de base de FiMAN, se limitó dicha producción de datos a través de filtros donde se seleccionan las partesde interés de la mano.</font></p>      <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">De manera general podemos concluir que FiMANes una base para el desarrollo futuro de aplicaciones en varios dominios que requieren análisis de movimientos, como la salud (recuperación en fisioterapia), responsabilidad social (aprendizaje de lenguaje de señas),la realidad virtual aumentada, el control de robots, el entretenimientoy otros. Este desarrollo futuro puede ser realizado gracias a la modularidad del sistema, el cual brinda flexibilidad y adaptabilidad.</font></p>     <p align="justify">&nbsp;</p>     <p align="justify"><font size="3" face="Verdana, Arial, Helvetica, sans-serif"><b>5.&nbsp;&nbsp;&nbsp;&nbsp; AGRADECIMIENTOS</b></font></p>      ]]></body>
<body><![CDATA[<p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Los autores agradecen a Koichi Fujii, director de la Academia Nacional de Música “ManCesped” de Cochabamba, Bolivia, el permitir probar el sistema FiMAN con estudiantes de piano de la Academia.</font></p>     <p align="justify">&nbsp;</p>     <p align="justify"><font size="3" face="Verdana, Arial, Helvetica, sans-serif"><b>6.&nbsp;&nbsp;&nbsp;&nbsp; BIBLIOGRAFÍA</b></font></p>     <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">[1] Y.-J. Chang, S.-F. Chen, and J.-D. Huang, “A Kinect-based system for physical rehabilitation: A pilot study for young adults with motor disabilities,” <i>Res. Dev. Disabil.</i>, vol. 32, no. 6, pp. 2566–2570, 2011.</font></p>      <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">[2] I. J. Garcia Agenjo, “Uso de Leap Motion en juegos didácticos para niños con necesidades educativas especiales,” Universidad Politécnica de Madrid, Madrid, Spain, 2015.</font></p>      <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">[3] I.-C. Chung, C.-Y. Huang, S.-C. Yeh, W.-C. Chiang, and M.-H. Tseng, “Developing Kinect Games Integrated with Virtual Reality on Activities of Daily Living for Children with Developmental Delay,” in <i>Advanced Technologies, Embedded and Multimedia for Human-centric Computing</i>, I.-C. Chung, H.-C. Chao, D.-J. Deng, and J. J. Park, Eds. Springer Netherlands, 2014, pp. 1091–1097.</font></p>      <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">[4] D. Bassily, C. Georgoulas, J. Guettler, T. Linner, and T. Bock, “Intuitive and Adaptive Robotic Arm Manipulation using the Leap Motion Controller,” in <i>ISR/Robotik 2014. 41st International Symposium on Robotics</i>, 2014, pp. 1–7.</font></p>      <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">[5] Y. Wu and T. S. Huang, “Human hand modeling, analysis and animation in the context of HCI,” in <i>International Conference on Image Processing. ICIP’99</i>, 1999, vol. 3, pp. 6–10.</font></p>      <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">[6] D. A. Alfaro Vives and D. M. Velarde Robles, “Desarrollo de aplicaciones con Leap Motion,” Universidad Peruana de Ciencias Aplicadas - UPC, Lima, Perú, 2015.</font></p>      <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">[7] J. H. Fonteles, É. S. Silva, and M. A. Formico Rodrigues, “Gesture-Driven Interaction Using the Leap Motion to Conduct a 3D Particle System: Evaluation and Analysis of an Orchestral Performance,” <i>SBC J. Interact. Syst.</i>, vol. 6, no. 2, pp. 11–21, 2015.</font></p>      ]]></body>
<body><![CDATA[<p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">[8] E. S. Silva, A. J. O. De Abreu, H. P. De Almeida, V. Teichrieb, and G. L. Ramalho, “A Preliminary Evaluation of the Leap Motion Sensor as Controller of New Digital Musical Instruments,” Recife, Brasil, 2013.</font></p>      <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">[9] J. Rumbaugh, I. Jacobson, and G. Booch, <i>The Unified Modeling Language Reference Manual</i>, 2nd Editio. Addison Wesley, 2005.</font></p>      <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">[10] J. Gosling, B. Joy, G. L. Steele, and G. Bracha, <i>The Java Language Specification, Third Edition</i>. Addison-Wesley, 2005.</font></p>      <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">[11] J. D. Foley, A. van Dam, S. K. Feiner, and J. F. Hughes, <i>Computer Graphics: Principles and Practice in C</i>, 2nd ed. Addison-Wesley, 2004.</font></p>      <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">[12] L. Opyrchal and A. Prakash, “Efficient Object Serialization in Java,” in <i>Workshops on Electronic Commerce and Web-based Applications/Middleware. 19th IEEE International Conference on Distributed Computing Systems.</i>, 1999, pp. 96–101.</font></p>      <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">[13] R. W. Young, “Terminology for Logarithmic Frequency Units,” <i>J. Acoust. Soc. Am.</i>, vol. 11, no. 1, p. 134, 1939.</font></p>  <hr align=JUSTIFY size=1 width="33%">        <p><font size="3"><b><font face="Verdana, Arial, Helvetica, sans-serif">NOTAS</font></b></font></p>     <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><a href="#_ftnref1" name="_ftn1" title="">[1]</a> <a href="http://www.wii.com/" target="_blank">http://www.wii.com/</a></font></p>        <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><a href="#_ftnref2" name="_ftn2" title="">[2]</a> <a href="http://www.microsoft.com/en-us/kinectforwindows/develop/" target="_blank">http://www.microsoft.com/en-us/kinectforwindows/develop/</a></font></p>        <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><a href="#_ftnref3" name="_ftn3" title="">[3]</a> <a href="https://www.leapmotion.com/product/desktop" target="_blank">https://www.leapmotion.com/product/desktop</a></font></p>        ]]></body>
<body><![CDATA[<p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><a href="#_ftnref4" name="_ftn4" title="">[4]</a> <a href="https://www.java.com/" target="_blank">https://www.java.com/</a></font></p>        <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><a href="#_ftnref5" name="_ftn5" title="">[5]</a> <a href="http://blog.leapmotion.com/designing-leap-motion-controller/" target="_blank">http://blog.leapmotion.com/designing-leap-motion-controller/</a></font></p>        <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><a href="#_ftnref6" name="_ftn6" title="">[6]</a>     <a href="https://developer.leapmotion.com/documentation/java/devguide/Leap_Overview.html" target="_blank">https://developer.leapmotion.com/documentation/java/devguide/Leap_Overview.html</a></font></p>        <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><a href="#_ftnref7" name="_ftn7" title="">[7]</a> La norma USB 3.0 permite velocidades de hasta de 480 Mbps.</font></p>        <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><a href="#_ftnref8" name="_ftn8" title="">[8]</a>     <a href="http://blog.leapmotion.com/hardware-to-software-how-does-the-leap-motion-controller-work/" target="_blank">http://blog.leapmotion.com/hardware-to-software-how-does-the-leap-motion-controller-work/</a></font></p>        <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><a href="#_ftnref9" name="_ftn9" title="">[9]</a> <a href="https://developer.leapmotion.com/documentation/" target="_blank">https://developer.leapmotion.com/documentation/</a></font></p>        <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><a href="#_ftnref10" name="_ftn10" title="">[10]</a>     <a href="https://developer.leapmotion.com/documentation/java/api/Leap.InteractionBox.html" target="_blank">https://developer.leapmotion.com/documentation/java/api/Leap.InteractionBox.html</a></font></p>        <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><a href="#_ftnref11" name="_ftn11" title="">[11]</a> Tipo de dato auto-referenciado compuesto por nodos que a su vez contienen un puntero a otro dato del mismo tipo. Cada nodo (excepto el último) enlaza con el nodo siguiente.</font></p>        <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><a href="#_ftnref12" name="_ftn12" title="">[12]</a> La clase <i>JFrame</i> se utiliza como un contenedor de alto nivel de los componentes gráficos de una interfaz gráfica de usuario (<a href="https://docs.oracle.com/javase/7/docs/api/javax/swing/JFrame.html" target="_blank">https://docs.oracle.com/javase/7/docs/api/javax/swing/JFrame.html</a>)</font></p>        <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><a href="#_ftnref13" name="_ftn13" title="">[13]</a> La clase <i>JFrame</i> se utiliza como un contenedor de alto nivel de los componentes gráficos de una interfaz gráfica de usuario (<a href="https://docs.oracle.com/javase/7/docs/api/javax/swing/JFrame.html" target="_blank">https://docs.oracle.com/javase/7/docs/api/javax/swing/JFrame.html</a>)</font></p>        ]]></body>
<body><![CDATA[<p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><a href="#_ftnref14" name="_ftn14" title="">[14]</a>     <a href="https://docs.oracle.com/javase/7/docs/api/java/awt/Graphics.html" target="_blank">https://docs.oracle.com/javase/7/docs/api/java/awt/Graphics.html</a></font></p>        <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><a href="#_ftnref15" name="_ftn15" title="">[15]</a> <a href="http://www.jfree.org/jfreechart/" target="_blank">http://www.jfree.org/jfreechart/</a></font></p>        <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><a href="#_ftnref16" name="_ftn16" title="">[16]</a> <a href="https://www.teamdev.com/jexcel" target="_blank">https://www.teamdev.com/jexcel</a></font></p>        <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><a href="#_ftnref17" name="_ftn17" title="">[17]</a> Se utiliza un tipo de fichero específico a FiMAN con la representación de las escenas completas.</font></p>        <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><a href="#_ftnref18" name="_ftn18" title="">[18]</a>     <a href="https://docs.oracle.com/javase/7/docs/api/javax/sound/midi/package-summary.html" target="_blank">https://docs.oracle.com/javase/7/docs/api/javax/sound/midi/package-summary.html</a></font></p>        <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><a href="#_ftnref19" name="_ftn19" title="">[19]</a> <a href="http://docs.oracle.com/javase/tutorial/sound/overview-MIDI.html" target="_blank">http://docs.oracle.com/javase/tutorial/sound/overview-MIDI.html</a></font></p>        <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><a href="#_ftnref20" name="_ftn20" title="">[20]</a> <a href="http://docs.oracle.com/javase/tutorial/sound/accessing-MIDI.html" target="_blank">http://docs.oracle.com/javase/tutorial/sound/accessing-MIDI.html</a></font></p>        <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><a href="#_ftnref21" name="_ftn21" title="">[21]</a>     <a href="http://www.oracle.com/technetwork/java/javase/" target="_blank">http://www.oracle.com/technetwork/java/javase/</a></font></p>        <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><a href="#_ftnref22" name="_ftn22" title="">[22]</a>     <a href="http://oceanoptics.com/product/sts-vis-microspectrometer/" target="_blank">http://oceanoptics.com/product/sts-vis-microspectrometer/</a></font></p>        <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><a href="#_ftnref23" name="_ftn23" title="">[23]</a> <a href="http://oceanoptics.com/support/software-downloads/" target="_blank">http://oceanoptics.com/support/software-downloads/</a></font></p>        ]]></body>
<body><![CDATA[<p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><a href="#_ftnref24" name="_ftn24" title="">[24]</a>     <a href="http://blog.leapmotion.com/hardware-to-software-how-does-the-leap-motion-controller-work/" target="_blank">http://blog.leapmotion.com/hardware-to-software-how-does-the-leap-motion-controller-work/</a></font></p>        <p align="justify"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><a href="#_ftnref25" name="_ftn25" title="">[25]</a> El componente <i>x</i> corresponde a la cantidad de milímetros en dirección positiva derecha y <i>z</i> en dirección positiva al usuario teniendo como origen y punto de referencia al sensor LeapMotion</font></p>     <p align="justify">&nbsp;</p>      ]]></body><back>
<ref-list>
<ref id="B1">
<label>1</label><nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Chang]]></surname>
<given-names><![CDATA[Y.-J.]]></given-names>
</name>
<name>
<surname><![CDATA[Chen]]></surname>
<given-names><![CDATA[S.-F.]]></given-names>
</name>
<name>
<surname><![CDATA[Huang]]></surname>
<given-names><![CDATA[J.-D.]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[A Kinect-based system for physical rehabilitation: A pilot study for young adults with motor disabilities]]></article-title>
<source><![CDATA[Res. Dev. Disabil.]]></source>
<year>2011</year>
<volume>32</volume>
<numero>6</numero>
<issue>6</issue>
<page-range>2566-2570</page-range></nlm-citation>
</ref>
<ref id="B2">
<label>2</label><nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Garcia Agenjo]]></surname>
<given-names><![CDATA[I.J.]]></given-names>
</name>
</person-group>
<source><![CDATA[Uso de Leap Motion en juegos didácticos para niños con necesidades educativas especiales]]></source>
<year>2015</year>
<publisher-loc><![CDATA[Madrid ]]></publisher-loc>
<publisher-name><![CDATA[Universidad Politécnica de Madrid]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B3">
<label>3</label><nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Chung]]></surname>
<given-names><![CDATA[I.-C.]]></given-names>
</name>
<name>
<surname><![CDATA[Huang]]></surname>
<given-names><![CDATA[C.-Y.]]></given-names>
</name>
<name>
<surname><![CDATA[Yeh]]></surname>
<given-names><![CDATA[S.-C.]]></given-names>
</name>
<name>
<surname><![CDATA[Chiang]]></surname>
<given-names><![CDATA[W.-C.]]></given-names>
</name>
<name>
<surname><![CDATA[Tseng]]></surname>
<given-names><![CDATA[M.-H.]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Developing Kinect Games Integrated with Virtual Reality on Activities of Daily Living for Children with Developmental Delay]]></article-title>
<person-group person-group-type="editor">
<name>
<surname><![CDATA[Chung]]></surname>
<given-names><![CDATA[I.-C.]]></given-names>
</name>
<name>
<surname><![CDATA[Chao]]></surname>
<given-names><![CDATA[H.-C.]]></given-names>
</name>
<name>
<surname><![CDATA[Deng]]></surname>
<given-names><![CDATA[D.-J.]]></given-names>
</name>
<name>
<surname><![CDATA[Park]]></surname>
<given-names><![CDATA[J.J.]]></given-names>
</name>
</person-group>
<source><![CDATA[Advanced Technologies, Embedded and Multimedia for Human-centric Computing]]></source>
<year></year>
<page-range>1091-1097</page-range><publisher-loc><![CDATA[Springer ]]></publisher-loc>
</nlm-citation>
</ref>
<ref id="B4">
<label>4</label><nlm-citation citation-type="confpro">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Bassily]]></surname>
<given-names><![CDATA[D.]]></given-names>
</name>
<name>
<surname><![CDATA[Georgoulas]]></surname>
<given-names><![CDATA[C.]]></given-names>
</name>
<name>
<surname><![CDATA[Guettler]]></surname>
<given-names><![CDATA[J.]]></given-names>
</name>
<name>
<surname><![CDATA[Linner]]></surname>
<given-names><![CDATA[T.]]></given-names>
</name>
<name>
<surname><![CDATA[Bock]]></surname>
<given-names><![CDATA[T.]]></given-names>
</name>
</person-group>
<source><![CDATA[Intuitive and Adaptive Robotic Arm Manipulation using the Leap Motion Controller]]></source>
<year>2014</year>
<conf-name><![CDATA[ ISR/Robotik 41st International Symposium on Robotics]]></conf-name>
<conf-loc> </conf-loc>
<page-range>1-7</page-range></nlm-citation>
</ref>
<ref id="B5">
<label>5</label><nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Wu]]></surname>
<given-names><![CDATA[Y.]]></given-names>
</name>
<name>
<surname><![CDATA[Huang]]></surname>
<given-names><![CDATA[T.S.]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Human hand modeling, analysis and animation in the context of HCI]]></article-title>
<source><![CDATA[International Conference on Image Processing. ICIP’99]]></source>
<year>1999</year>
<volume>3</volume>
<page-range>6-10</page-range></nlm-citation>
</ref>
<ref id="B6">
<label>6</label><nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Alfaro Vives]]></surname>
<given-names><![CDATA[D.A.]]></given-names>
</name>
<name>
<surname><![CDATA[Velarde Robles]]></surname>
<given-names><![CDATA[D.M.]]></given-names>
</name>
</person-group>
<source><![CDATA[Desarrollo de aplicaciones con Leap Motion]]></source>
<year>2015</year>
<publisher-loc><![CDATA[Lima ]]></publisher-loc>
<publisher-name><![CDATA[Universidad Peruana de Ciencias Aplicadas - UPC]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B7">
<label>7</label><nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Fonteles]]></surname>
<given-names><![CDATA[J.H.]]></given-names>
</name>
<name>
<surname><![CDATA[Silva]]></surname>
<given-names><![CDATA[É.S.]]></given-names>
</name>
<name>
<surname><![CDATA[Formico Rodrigues]]></surname>
<given-names><![CDATA[M.A.]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Gesture-Driven Interaction Using the Leap Motion to Conduct a 3D Particle System: Evaluation and Analysis of an Orchestral Performance]]></article-title>
<source><![CDATA[SBC J. Interact. Syst.]]></source>
<year>2015</year>
<volume>6</volume>
<numero>2</numero>
<issue>2</issue>
<page-range>11-21</page-range></nlm-citation>
</ref>
<ref id="B8">
<label>8</label><nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Silva]]></surname>
<given-names><![CDATA[E.S.]]></given-names>
</name>
<name>
<surname><![CDATA[De Abreu]]></surname>
<given-names><![CDATA[A.J.O.]]></given-names>
</name>
<name>
<surname><![CDATA[De Almeida]]></surname>
<given-names><![CDATA[H.P.]]></given-names>
</name>
<name>
<surname><![CDATA[Teichrieb]]></surname>
<given-names><![CDATA[V.]]></given-names>
</name>
<name>
<surname><![CDATA[Ramalho]]></surname>
<given-names><![CDATA[G.L.]]></given-names>
</name>
</person-group>
<source><![CDATA[A Preliminary Evaluation of the Leap Motion Sensor as Controller of New Digital Musical Instruments]]></source>
<year>2013</year>
<publisher-loc><![CDATA[Recife ]]></publisher-loc>
</nlm-citation>
</ref>
<ref id="B9">
<label>9</label><nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Rumbaugh]]></surname>
<given-names><![CDATA[J.]]></given-names>
</name>
<name>
<surname><![CDATA[Jacobson]]></surname>
<given-names><![CDATA[I.]]></given-names>
</name>
<name>
<surname><![CDATA[Booch]]></surname>
<given-names><![CDATA[G.]]></given-names>
</name>
</person-group>
<source><![CDATA[The Unified Modeling Language Reference Manual]]></source>
<year>2005</year>
<edition>2</edition>
<publisher-name><![CDATA[Addison Wesley]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B10">
<label>10</label><nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Gosling]]></surname>
<given-names><![CDATA[J.]]></given-names>
</name>
<name>
<surname><![CDATA[Joy]]></surname>
<given-names><![CDATA[B.]]></given-names>
</name>
<name>
<surname><![CDATA[Steele]]></surname>
<given-names><![CDATA[G.L.]]></given-names>
</name>
<name>
<surname><![CDATA[Bracha]]></surname>
<given-names><![CDATA[G.]]></given-names>
</name>
</person-group>
<source><![CDATA[The Java Language Specification]]></source>
<year>2005</year>
<edition>3</edition>
<publisher-name><![CDATA[Addison-Wesley]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B11">
<label>11</label><nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Foley]]></surname>
<given-names><![CDATA[J.D.]]></given-names>
</name>
<name>
<surname><![CDATA[van Dam]]></surname>
<given-names><![CDATA[A.]]></given-names>
</name>
<name>
<surname><![CDATA[Feiner]]></surname>
<given-names><![CDATA[S.K.]]></given-names>
</name>
<name>
<surname><![CDATA[Hughes]]></surname>
<given-names><![CDATA[J.F.]]></given-names>
</name>
</person-group>
<source><![CDATA[Computer Graphics: Principles and Practice in C]]></source>
<year>2004</year>
<publisher-name><![CDATA[Addison-Wesley]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B12">
<label>12</label><nlm-citation citation-type="confpro">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Opyrchal]]></surname>
<given-names><![CDATA[L.]]></given-names>
</name>
<name>
<surname><![CDATA[Prakash]]></surname>
<given-names><![CDATA[A.]]></given-names>
</name>
</person-group>
<source><![CDATA[Efficient Object Serialization in Java]]></source>
<year>1999</year>
<conf-name><![CDATA[ Workshops on Electronic Commerce and Web-based Applications/Middleware. 19th IEEE International Conference on Distributed Computing Systems]]></conf-name>
<conf-loc> </conf-loc>
<page-range>96-101</page-range></nlm-citation>
</ref>
<ref id="B13">
<label>13</label><nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Young]]></surname>
<given-names><![CDATA[R.W.]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Terminology for Logarithmic Frequency Units]]></article-title>
<source><![CDATA[J. Acoust. Soc. Am.]]></source>
<year>1939</year>
<volume>11</volume>
<numero>1</numero>
<issue>1</issue>
<page-range>134</page-range></nlm-citation>
</ref>
</ref-list>
</back>
</article>
