Macros


Las macros son objetos gráficos compuestos y pueden ser de dos o tres dimensiones. Muchas escenas que tienen un solo espacio pueden generar un macro y convertirse así en un objeto gráfico compuesto con posibilidad de usarse en otras escenas. Por ejemplo, los ejes coordenados que aparecen en la escena izquierda, están definidos a partir de objetos gráficos básicos, mientras que los de la escena de la derecha, son un solo objeto gráfico, es decir, un macro.

Los macros pueden tener parámetros que sirven para modificar su aspecto y su comportamiento. Por ejemplo los controles numéricos que hay en la escena derecha actúan sobre los parámetros del macro, que, en este caso, son longitud y punta, y representan la longitud de cada eje y el tamaño de la punta de flecha que hay en cada uno.

Pero los macros además pueden tener un conjunto de funciones y algoritmos propios que les otorgan una funcionalidad predefinida y/o modificable. Por ejemplo la siguiente escena utiliza dos macros (dinamica/resorte y dinamica/masa) para crear de una manera muy sencilla una escena con mucha funcionalidad.

El propósito de esta página es describir qué son, cómo se crean y cómo se usan los macros.

¿Qué es un macro?

Un macro es un archivo de texto que debe colocarse en un sitio específico. Hay dos formas posibles de acomodar los macros: con direccionamiento general o con direccionamiento particular.

1) Direccionamiento general.  (Macros del Sistema.)

Hay que colocar los macros en ciertos subdirectorios relativos al codebase, es decir, relativo a donde se sitúa Descartes3.jar. Los macros de dos dimensiones deben colocarse en el subdirectorio:

macros/g2d/

y los de tres dimensiones en:

macros/g3d/

o bien en subdirectorios de ellos. El nombre del macro debe incluir los subdirectorios adicionales a los arriba especificados. Por ejemplo si un macro se coloca en la dirección relativa

macros/g2d/dinamica/masa

el identificador del macro, es decir lo que hay que escribir en el campo de texto expresión es:

dinamica/masa.

Los macros que se colocan con direccionamiento general podrán ser públicos y utilizados por diversos autores.

2) Direccionamiento particular. (Macros particulares o de las aplicaciones.)

Se pueden colocar los macros en la misma carpeta donde se encuentra la página que contiene a la escena o en subcarpetas de ella.

Para que el direccionamiento particular sea posible es necesario que el codebase sea del tipo "./", "../", "../../","../../../", etc..., es decir, es necesario que las páginas con las escena se encuentren en subcarpetas de la que contiene a Descartes.jar o en subcarpetas de ellas, etc...

¿Qué contenido tiene un macro?

Un archivo de texto que es un macro contiene varias líneas. La primera especifica si es de dos o tres dimensiones: tipo_de_macro=R2  o  tipo_de_macro=R3. Luego vienen líneas que definen los auxiliares del macro, y, finalmente, las líneas que definen los gráficos del macro. Las líneas que definen auxiliares y gráficos son exactamente las que aparecen al pulsar las etiquetas azules Auxiliar o Gráfico en los respectivos paneles de configuración.

Por ejemplo el contenido del archivo de texto que constituye el macro dinamica/masa que es uno de los utilizados en la segunda escena de arriba es éste:

Si su navegador reconociese la etiqueta de applet, aquí vería un applet

Como puede comprobarse (por ejemplo mirando el título de la ventana) la dirección relativa al codebase de este archivo es: macros/g2d/dinamica/masa.

Nota: Cuando una escena se transforma en macro sólo se traspasan al macro los auxiliares y los gráficos. Los controles, la animación y las demás partes de una escena no pasan al macro.

¿Cómo utiliza los macros un autor de escenas de Descartes?

El sistema puede tener un conjunto amplio de macros registrados explícitamente. Estos serán los llamados macros del sistema y deben tener direccionamiento general.

La utilización de los macros para configurar escenas es como la de cualquier otro gráfico. Si se desea usar un macro del sistema, bastará buscarlo recurriendo a los menúes que se encuentran en el panel de configuración de macros y seleccionarlo. Si se desea usar un macro que no es del sistema, es decir que no está registrado, entonces deberá ser un macro con direccionamiento particular y será necesario escribir su nombre explícitamente, incluyendo las posibles subcarpetas a partir desde donde esté la página web que contiene la escena.

Todos los macros se pueden girar o trasladar utilizando los campos rotini y posini que aparecen en sus paneles de configuración. He aquí el panel de configuración de un macro de dos dimensiones:

y el de un macro de tres dimensiones:

Es importante poner un nombre diferente para cada instancia de cada macro que se utilice en una escena. Los auxiliares del macro (constantes, variables, vectores, funciones y algoritmos) pueden utilizarse en la escena precediendo la llamada a uno de ellos por el nombre de la instancia del macro y un punto. Por ejemplo la masa del objeto definido por el macro dinamica/masa de nombre M es M.m.

¿Cómo se registra un macro en el sistema?

Para registrar un macro en el sistema es necesario que, si está en un subdirectorio, éste aparezca en el archivo menu.txt de macros/g2d si es de 2 dimensiones o en macros/g3d si es de 3 dimensiones y que el nombre del macro aparezca en el archivo index.txt que está dentro de dicho directorio. En otras palabras, el archivo menu.txt debe contener el nombre del subdirectorio <dir> donde está el macro y el archivo <dir>/index.txt debe contener el nombre del macro.

¿Cómo podemos conocer cuáles son los parámetros de un macro?

Para obtener esta información basta pulsar el botón Aux que se encuentra a la derecha del campo de texto y de los menús desplegables que se usan para poner la trayectoria y el nombre del macro. Al hacerlo se abre una ventana como esta:

en la que aparecen todos los auxiliares con sus valores iniciales. Si se trata de algoritmos o de funciones con algoritmo sólamente aparece la palabra algoritmo entre paréntesis. En el caso de constantes y algoritmos que no son funciones, a la derecha aparece una-sola-vez o siempre, indicando cuándo se evalúa. A las constantes que se evalúan siempre no podrá modificarlas el usuario del macro desde una aplicación. En principio las funciones algorítmicas y los algoritmos son para ser usados desde las aplicaciones, tampoco deberían sobreescribirse en las aplicaciones, pues representan funcionalidad propia del macro. En cambio todas las variables que se evalúan una sola vez y las funciones no algorítmicas pueden sobreescribirse, siempre y cuando el autor de la aplicación entienda su significado.

¿Cómo puede saberse el significado de los auxiliares de un macro?

En el caso de los macros del sistema, pulsando el botón Doc se abre la página web donde está la escena que define al macro, y la misma página en general debe tener una o varias escenas que muestran cómo se usa dicho macro, e ilustran el significado de cada uno de sus auxiliares. (Debería haber también una documentación más explícita pero limitaciones de tiempo y recursos no han permitido llegar a ese grado de detalle.)

En el caso de los macros particulares, será responsabilidad del autor ofrecer esta documentación y deberá hacerlo en una página con el mismo nombre y dirección del macro, pero con extensión html o htm. Allí deberá poner la escena que usó para generar el macro y algún ejemplo de cómo puede utilizarse.

¿Qué escenas pueden convertirse en macros?

Para que una escena pueda convertirse en un macro debe satisfacer las siguientes condiciones:

  1. Tener un solo espacio.
  2. No debe contener macros.

Algunos gráficos como las ecuaciones, sucesiones, rellenos e imágenes no son convenientes para utilizarse en un macro si se desea que éste pueda girarse y transladarse usando rotini y posini.

¿Cómo se convierte una escena en un macro?

Es muy fácil. Cuando una escena tiene un solo espacio, se habilita el botón macro, que aparece arriba a la derecha de la ventana de edición de configuraciones, como puede verse en la imagen del panel de configuración de la escena donde se crearon los ejes.

Al pulsar este botón aparece otra ventana con el macro, es decir, con el texto del macro.

Para crear el macro basta copiar ese texto y guardarlo en un archivo de texto con cualquier nombre. Ése será el nombre del macro y el directorio donde lo guardó será su trayectoria. Dicho archivo deberá colocarse como se indica arriba según vaya a tener direccionamiento general o particular. Hecho esto el nuevo macro ya puede usarse en cualquier escena.

Si el macro tiene direccionamiento general, para que sea macro "del sistema" deberá registrarse en el mismo, para poder así elegirlo en el editor usando los menús desplegables. Esto debería hacerlo un administrador de macros del sistema, quien deberá asegurarse que el subdirectorio donde lo puso está en el archivo menu.txt y deberá agregar el nombre del macro en el archivo index.txt del subdirectorio donde lo colocó.

Nota: Recuerde que cuando una escena se transforma en macro sólo se traspasan al macro los auxiliares y los gráficos. Los controles, la animación y las demás partes de una escena no pasan al macro.

Nota: A pesar de que el botón macro se habilita siempre que hay un solo espacio en la escena, esto no garantiza que el macro resultante sea un macro auténtico. Para ello es necesario asegurarse que no tiene macros y si es de dos dimensiones y se desea que gire con rotini y se translade con posini, tampoco debe tener ecuaciones, sucesiones, rellenos ni imágenes.

¿Qué ventajas y limitaciones tienen los macros como objetos gráficos?

Los macros pueden trasladarse y girarse mediante unos atributos específicos que aparecen en su panel de configuración. Esto, junto con la posibilidad de tener parámetros y algoritmos propios, les da gran flexibilidad y aplicabilidad.

Una  de sus limitaciones sin embargo, es que no se les pueden cambiar los colores, a menos que éstos se definan a través de sus cantidades de rojo, verde y azul y éstas se traten como parámetros del macro. Otra es que los macros no cuentan con controles gráficos propios.

¿Qué utilidad tienen los macros?

En principio los macros fueron ideados para crear bancos de objetos gráficos específicos para un área de aplicación. Por ejemplo una librería para circuitos (eléctricos) como la que actualmente existe en el banco de macros. En el futuro podría crearse una librería más extensa de macros útiles en diversas áreas.

Cada autor puede desarrollar los macros que le convenga, ya sea para ahorrarse trabajo al observar que utiliza varias veces la misma construcción, para uniformizar la presentación de varias escenas o para organizar mejor su trabajo. Los macros son una herramienta abierta cuyas aplicaciones las definirán los propios usuarios. Como ejemplos de aplicación de macros pueden verse Ley De Ohm y la última escena de  LentesEsfericas y los diversos ejemplos que hay en las páginas del Banco de Macros, en especial se recomienda mirar y estudiar los ejemplos del macro dinamica/masa por ser, desde el punto de vista gráfico, uno muy sencillo, pero de una gran funcionalidad que hereda gracias a sus auxiliares.


Autor: José Luis Abreu León
con la colaboración de Norma Apodaca, Lilia Morales, Deyanira Monroy y Mariana Villada