{"id":2403,"date":"2014-10-28T20:08:16","date_gmt":"2014-10-28T19:08:16","guid":{"rendered":"http:\/\/descartesjs.org\/documentacion\/?p=2403"},"modified":"2021-08-07T16:42:42","modified_gmt":"2021-08-07T15:42:42","slug":"macros-en-el-editor-de-configuracion","status":"publish","type":"post","link":"https:\/\/reddescartes.org\/documentacion\/macros-en-el-editor-de-configuracion\/","title":{"rendered":"Macros en el editor de configuraci\u00f3n Java y en el int\u00e9rprete Java"},"content":{"rendered":"<div style=\"text-align: center;\">\n<h3 style=\"text-align: left;\"><strong>\u00bf<\/strong><strong>Qu\u00e9 es una macro?<\/strong><\/h3>\n<p style=\"text-align: left;\">Una\u00a0<em><strong>macro<\/strong><\/em>\u00a0es un\u00a0<strong>archivo de texto<\/strong>\u00a0que contiene parte del c\u00f3digo de una escena de Descartes y que interpretado por Descartes act\u00faa como un gr\u00e1fico en una escena.<\/p>\n<p style=\"text-align: left;\">Podemos distinguir dos tipos de macros: Macros del Sistema o Macros de usuario. Los primeros son macros que previamente se han construido y que est\u00e1n incorporados al c\u00f3digo del int\u00e9rprete de Descartes en Java Descartes5.jar, y los segundo son macros que puede definir el usuario y que no est\u00e1n integrados en el int\u00e9rprete.<\/p>\n<p style=\"text-align: left;\">objetos cartesianos debe colocarse en un sitio espec\u00edfico. Hay dos formas posibles de acomodar las macros: con\u00a0<strong>direccionamiento general<\/strong>\u00a0o con\u00a0<strong>direccionamiento particular<\/strong>.<\/p>\n<p style=\"text-align: left;\">1)\u00a0<strong>Macros del Sistema<\/strong><\/p>\n<p style=\"text-align: left;\">Los macros del sistema tienen una organizaci\u00f3n interna en diversos subdirectorios y para su localizaci\u00f3n es necesario aportar el direccionamiento adecuado. Este direccionamiento es aportado por el editor de configuraci\u00f3n de manera autom\u00e1tica y ha de respetarse para que pueda ser accesible. En la figura siguiente puede observarse a un primer nivel el directorio <em>macros<\/em>, en un segundo nivel <em>g2d<\/em> y<em> g3d<\/em> (macros de gr\u00e1ficos 2d y 3d respectivamente) y un tercer nivel y sucesivos donde se agrupan los macros por su tem\u00e1tica. Para un detalle completo de todos estos macros puede consultarse el art\u00edculo\u00a0<a href=\"https:\/\/descartesjs.org\/documentacion\/?p=2415\">Relaci\u00f3n de macros del sistema<\/a>.<\/p>\n<div id=\"attachment_2418\" style=\"width: 399px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/descartesjs.org\/documentacion\/wp-content\/uploads\/2014\/10\/macros-sistema.jpg\"><img aria-describedby=\"caption-attachment-2418\" class=\"wp-image-2418 size-full\" src=\"https:\/\/descartesjs.org\/documentacion\/wp-content\/uploads\/2014\/10\/macros-sistema.jpg\" alt=\"Organizaci\u00f3n interna de los macros del sistema\" width=\"389\" height=\"300\" srcset=\"https:\/\/reddescartes.org\/documentacion\/wp-content\/uploads\/2014\/10\/macros-sistema.jpg 389w, https:\/\/reddescartes.org\/documentacion\/wp-content\/uploads\/2014\/10\/macros-sistema-300x231.jpg 300w\" sizes=\"(max-width: 389px) 100vw, 389px\" \/><\/a><p id=\"caption-attachment-2418\" class=\"wp-caption-text\">Organizaci\u00f3n interna de los macros del sistema<\/p><\/div>\n<p style=\"text-align: left;\">Dado que los macros 2d est\u00e1n ubicados en el subdirectorio\u00a0<em>macros\/g2d\/<\/em> y los 3d en <em>macros\/g3d\/<\/em> el editor de configuraci\u00f3n presupone este direccionamiento y s\u00f3lo aporta como par\u00e1metro en la escena el direccionamiento relativo a esos dos subdirectorios anteriores.<\/p>\n<p style=\"text-align: left;\">As\u00ed pues el macro\u00a0<em>masa<\/em> que est\u00e1 ubicado en\u00a0<em>macros\/g2d\/dinamica\/masa<\/em> en el par\u00e1metro\u00a0<strong>expresi\u00f3n<\/strong>\u00a0del c\u00f3digo de la escena aparecer\u00e1 referenciado como\u00a0<em>dinamica\/masa<\/em>.<\/p>\n<p style=\"text-align: left;\">Todos estos macros son\u00a0p\u00fablicos y pueden ser utilizados por cualquier\u00a0desarrollador de escenas.<\/p>\n<p style=\"text-align: left;\">2)\u00a0<strong>Macros de usuario o particulares<\/strong><\/p>\n<p style=\"text-align: left;\">Un usuario puede crear sus macros y ubicarlos en la misma carpeta donde se encuentra la p\u00e1gina que contiene a la escena o en subcarpetas de ella.\u00a0Para usarlos tendr\u00e1 que indicar el direccionamiento adecuado para que el int\u00e9rprete de Descartes pueda acceder a ese fichero y leer su contenido.<\/p>\n<h3 style=\"text-align: left;\"><strong>\u00bfQu\u00e9 contenido tiene una macro?<\/strong><\/h3>\n<p style=\"text-align: left;\">Un archivo de texto que es una macro contiene varias l\u00edneas. La primera especifica si es de dos o tres dimensiones:\u00a0<em>tipo_de_macro=R2<\/em> o\u00a0<em>tipo_de_macro=R3<\/em>.\u00a0Luego vienen l\u00edneas que definen los objetos auxiliares del macro y, finalmente, las l\u00edneas que definen los gr\u00e1ficos del macro. Las l\u00edneas que definen auxiliares y gr\u00e1ficos son exactamente las que aparecen al pulsar las etiquetas azules Auxiliar o Gr\u00e1fico en los respectivos paneles de configuraci\u00f3n.<\/p>\n<p style=\"text-align: left;\">Por ejemplo el contenido del archivo de texto que constituye el macro\u00a0<strong>dinamica\/masa<\/strong>\u00a0que es uno de los utilizados en la segunda escena de arriba es \u00e9ste:<\/p>\n<div style=\"text-align: center;\">\n<!-- iframe plugin v.4.5 wordpress.org\/plugins\/iframe\/ -->\n<iframe src=\"https:\/\/descartesjs.org\/repositorio\/documentacion_4D\/Macros_JS\/escena4.html\" width=\"770\" height=\"430\" scrolling=\"yes\" class=\"iframe-class\" frameborder=\"0\"><\/iframe>\n<\/div>\n<p style=\"text-align: left;\"><strong>Nota<\/strong>: Cuando una escena se transforma en macro s\u00f3lo se traspasan al macro los\u00a0<strong>auxiliares<\/strong>\u00a0y los\u00a0<strong>gr\u00e1ficos<\/strong>. Los\u00a0<em>controles<\/em>, la\u00a0<em>animaci\u00f3n<\/em>\u00a0y las dem\u00e1s partes de una escena\u00a0<strong>no<\/strong>\u00a0pasan al macro.<\/p>\n<h3 style=\"text-align: left;\"><strong>\u00bfC\u00f3mo utiliza los macros un autor de escenas de Descartes?<\/strong><\/h3>\n<p style=\"text-align: left;\">La utilizaci\u00f3n de los macros para configurar escenas es como la de cualquier otro gr\u00e1fico. Si se desea usar un macro del sistema, bastar\u00e1\u00a0<strong>buscarlo<\/strong>\u00a0recurriendo a los men\u00fas que se encuentran en el panel de configuraci\u00f3n de macros y\u00a0<strong>seleccionarlo<\/strong>. Si se desea usar un macro que no es del sistema, es decir que no est\u00e1 registrado, entonces deber\u00e1 ser un macro con direccionamiento particular y ser\u00e1 necesario\u00a0<strong>escribir<\/strong>\u00a0su nombre expl\u00edcitamente, incluyendo las posibles subcarpetas a partir desde donde est\u00e9 la p\u00e1gina web que contiene la escena.<\/p>\n<p style=\"text-align: left;\">Todos los macros se pueden girar o trasladar utilizando los campos\u00a0<strong>rotini<\/strong>\u00a0y\u00a0<strong>posini<\/strong>\u00a0que aparecen en sus paneles de configuraci\u00f3n.\u00a0He aqu\u00ed el panel de configuraci\u00f3n de un macro de dos dimensiones:<\/p>\n<p><a href=\"https:\/\/descartesjs.org\/documentacion\/wp-content\/uploads\/2014\/06\/macro1.png\"><img class=\"size-full wp-image-1662 aligncenter\" src=\"https:\/\/descartesjs.org\/documentacion\/wp-content\/uploads\/2014\/06\/macro1.png\" alt=\"macro1\" width=\"570\" height=\"150\" srcset=\"https:\/\/reddescartes.org\/documentacion\/wp-content\/uploads\/2014\/06\/macro1.png 570w, https:\/\/reddescartes.org\/documentacion\/wp-content\/uploads\/2014\/06\/macro1-300x78.png 300w\" sizes=\"(max-width: 570px) 100vw, 570px\" \/><\/a><\/p>\n<p style=\"text-align: left;\">y el de un macro de tres dimensiones:<\/p>\n<p><a href=\"https:\/\/descartesjs.org\/documentacion\/wp-content\/uploads\/2014\/06\/macro2.png\"><img class=\"size-full wp-image-1663 aligncenter\" src=\"https:\/\/descartesjs.org\/documentacion\/wp-content\/uploads\/2014\/06\/macro2.png\" alt=\"macro2\" width=\"572\" height=\"181\" srcset=\"https:\/\/reddescartes.org\/documentacion\/wp-content\/uploads\/2014\/06\/macro2.png 572w, https:\/\/reddescartes.org\/documentacion\/wp-content\/uploads\/2014\/06\/macro2-300x94.png 300w\" sizes=\"(max-width: 572px) 100vw, 572px\" \/><\/a><\/p>\n<p style=\"text-align: left;\">Es importante poner un\u00a0<strong>nombre<\/strong>\u00a0diferente para cada instancia de cada macro que se utilice en una escena. Los auxiliares del macro (<em>constantes<\/em>,\u00a0<em>variables<\/em>,\u00a0<em>vectores<\/em>,\u00a0<em>funciones<\/em>\u00a0y\u00a0<em>algoritmos<\/em>) 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\u00a0<strong>masa<\/strong>\u00a0del objeto definido por el macro\u00a0dinamica\/masa\u00a0de nombre\u00a0M\u00a0es\u00a0M.m<\/p>\n<h3 style=\"text-align: left;\"><strong>\u00bfC\u00f3mo podemos conocer cu\u00e1les son los par\u00e1metros de un macro del sistema?<\/strong><\/h3>\n<p style=\"text-align: left;\">Para obtener esta informaci\u00f3n basta pulsar el bot\u00f3n Aux que se encuentra a la derecha del campo de texto y de los men\u00fas desplegables que se usan para poner la trayectoria y el nombre del macro. Al hacerlo se abre una ventana como esta:<\/p>\n<p><a href=\"https:\/\/descartesjs.org\/documentacion\/wp-content\/uploads\/2014\/06\/macro3.png\"><img class=\"size-full wp-image-1664 aligncenter\" src=\"https:\/\/descartesjs.org\/documentacion\/wp-content\/uploads\/2014\/06\/macro3.png\" alt=\"macro3\" width=\"612\" height=\"438\" srcset=\"https:\/\/reddescartes.org\/documentacion\/wp-content\/uploads\/2014\/06\/macro3.png 612w, https:\/\/reddescartes.org\/documentacion\/wp-content\/uploads\/2014\/06\/macro3-300x214.png 300w\" sizes=\"(max-width: 612px) 100vw, 612px\" \/><\/a><\/p>\n<p style=\"text-align: left;\">en la que aparecen todos los auxiliares con sus valores iniciales. Si se trata de algoritmos o de funciones con algoritmo s\u00f3lamente aparece la palabra\u00a0algoritmo\u00a0entre par\u00e9ntesis. En el caso de constantes y algoritmos que no son funciones, a la derecha aparece\u00a0<em>una-sola-vez<\/em>\u00a0o\u00a0<em>siempre<\/em>, indicando cu\u00e1ndo se eval\u00faa. A las constantes que se eval\u00faan siempre no podr\u00e1 modificarlas el usuario del macro desde una aplicaci\u00f3n. En principio las funciones algor\u00edtmicas y los algoritmos son para ser usados desde las aplicaciones, tampoco deber\u00edan sobreescribirse en las aplicaciones, pues representan funcionalidad propia del macro. En cambio todas las variables que se eval\u00faan una sola vez y las funciones no algor\u00edtmicas pueden sobreescribirse, siempre y cuando el autor de la aplicaci\u00f3n entienda su significado.<\/p>\n<h3 style=\"text-align: left;\"><strong>\u00bfC\u00f3mo puede saberse el significado de los auxiliares de un macro?<\/strong><\/h3>\n<p style=\"text-align: left;\">En el caso de las macros del sistema, pulsando el bot\u00f3n\u00a0<strong>Doc<\/strong>\u00a0se abre la p\u00e1gina web donde est\u00e1 la escena que define la macro, y la misma p\u00e1gina en general debe tener una o varias escenas que muestran c\u00f3mo se usa dicho macro, e ilustran el significado de cada uno de sus auxiliares.\u00a0(El comentario anterior no tiene validez en la versi\u00f3n5 y se mantiene por si el desarrollador de escenas quiere aplicarlo a sus macros particulares, seg\u00fan se detalla en el siguiente p\u00e1rrafo)<\/p>\n<p style=\"text-align: left;\">En el caso de los macros particulares, ser\u00e1 responsabilidad del autor ofrecer esta documentaci\u00f3n y deber\u00e1 hacerlo en una p\u00e1gina con el mismo nombre y direcci\u00f3n del macro, pero con extensi\u00f3n\u00a0<strong>html<\/strong>\u00a0o\u00a0<strong>htm<\/strong>. All\u00ed deber\u00e1 poner la escena que us\u00f3 para generar el macro y alg\u00fan ejemplo de c\u00f3mo puede utilizarse.<\/p>\n<h3 style=\"text-align: left;\"><strong>\u00bfQu\u00e9 escenas pueden convertirse en macros?<\/strong><\/h3>\n<p style=\"text-align: left;\">Para que una escena pueda convertirse en un macro debe satisfacer las siguientes condiciones:<\/p>\n<ol>\n<li style=\"text-align: left;\">Tener un solo espacio.<\/li>\n<li style=\"text-align: left;\">No debe contener macros.<\/li>\n<\/ol>\n<p style=\"text-align: left;\">Algunos gr\u00e1ficos como las\u00a0<strong>ecuaciones<\/strong>,\u00a0<strong>sucesiones<\/strong>,\u00a0<strong>rellenos<\/strong>\u00a0e\u00a0<strong>im\u00e1genes<\/strong>\u00a0no son convenientes para utilizarse en un macro si se desea que \u00e9ste pueda girarse y transladarse usando\u00a0<strong>rotini<\/strong>\u00a0y\u00a0<strong>posini<\/strong>.<\/p>\n<h3 style=\"text-align: left;\"><strong>\u00bfC\u00f3mo se convierte una escena en un macro?<\/strong><\/h3>\n<p style=\"text-align: left;\">Es muy f\u00e1cil. Cuando una escena tiene un solo espacio, se habilita el bot\u00f3n\u00a0<strong>macro<\/strong>, que aparece arriba a la derecha de la ventana de edici\u00f3n de configuraciones, como puede verse en la imagen del panel de configuraci\u00f3n de la escena donde se crearon los ejes.<\/p>\n<p><a href=\"https:\/\/descartesjs.org\/documentacion\/wp-content\/uploads\/2014\/06\/macro4.png\"><img class=\"alignleft wp-image-1665 \" src=\"https:\/\/descartesjs.org\/documentacion\/wp-content\/uploads\/2014\/06\/macro4.png\" alt=\"macro4\" width=\"620\" height=\"246\" srcset=\"https:\/\/reddescartes.org\/documentacion\/wp-content\/uploads\/2014\/06\/macro4.png 834w, https:\/\/reddescartes.org\/documentacion\/wp-content\/uploads\/2014\/06\/macro4-300x119.png 300w\" sizes=\"(max-width: 620px) 100vw, 620px\" \/><\/a><\/p>\n<p>Al pulsar este bot\u00f3n aparece otra ventana con el macro, es decir, con el texto del macro.<\/p>\n<p><a href=\"https:\/\/descartesjs.org\/documentacion\/wp-content\/uploads\/2014\/06\/macro5.png\"><img class=\" wp-image-1666 aligncenter\" src=\"https:\/\/descartesjs.org\/documentacion\/wp-content\/uploads\/2014\/06\/macro5.png\" alt=\"macro5\" width=\"621\" height=\"155\" srcset=\"https:\/\/reddescartes.org\/documentacion\/wp-content\/uploads\/2014\/06\/macro5.png 983w, https:\/\/reddescartes.org\/documentacion\/wp-content\/uploads\/2014\/06\/macro5-300x74.png 300w\" sizes=\"(max-width: 621px) 100vw, 621px\" \/><\/a><\/p>\n<\/div>\n<p>Para crear la macro basta\u00a0<em>copiar<\/em>\u00a0ese texto y\u00a0<em>guardarlo<\/em>\u00a0en un archivo de texto con cualquier nombre. \u00c9se ser\u00e1 el nombre de la macro y el directorio donde lo guard\u00f3 ser\u00e1 su trayectoria. Dicho archivo deber\u00e1 colocarse como se indica arriba seg\u00fan vaya a tener direccionamiento general o particular. Hecho esto la\u00a0nueva macro ya puede usarse en cualquier escena.<\/p>\n<p><em><strong>Nota<\/strong><\/em>: Recuerde que cuando una escena se transforma en macro s\u00f3lo se traspasan a la macro los\u00a0<strong>auxiliares<\/strong>\u00a0y los\u00a0<strong>gr\u00e1ficos<\/strong>. Los\u00a0<em>controles<\/em>, la\u00a0<em>animaci\u00f3n<\/em>\u00a0y las dem\u00e1s partes de una escena no pasan al macro.<\/p>\n<p><em><strong>Nota<\/strong><\/em>: A pesar de que el bot\u00f3n macro se habilita siempre que hay un solo espacio en la escena, esto no garantiza que la macro resultante sea un macro aut\u00e9ntico. Para ello es necesario asegurarse que\u00a0<strong>no<\/strong>\u00a0tiene\u00a0<strong>macros<\/strong>\u00a0y si es de\u00a0<strong>dos<\/strong>\u00a0dimensiones y se desea que gire con\u00a0<strong>rotini<\/strong>\u00a0y se translade con\u00a0<strong>posini<\/strong>, tampoco debe tener\u00a0<strong>ecuaciones<\/strong>,\u00a0<strong>sucesiones<\/strong>,<strong>rellenos<\/strong>\u00a0ni\u00a0<strong>im\u00e1genes.<\/strong><\/p>\n<h3><strong>\u00bfQu\u00e9 ventajas y limitaciones tienen las macros como objetos gr\u00e1ficos?<\/strong><\/h3>\n<p>Las macros pueden trasladarse y girarse mediante unos atributos espec\u00edficos que aparecen en su panel de configuraci\u00f3n. Esto, junto con la posibilidad de tener par\u00e1metros y algoritmos propios, les da gran flexibilidad y aplicabilidad.<\/p>\n<p>Una\u00a0 de sus limitaciones sin embargo, es que no se les pueden cambiar los colores, a menos que \u00e9stos se definan a trav\u00e9s de sus cantidades de rojo, verde y azul y \u00e9stas se traten como par\u00e1metros del macro. Otra es que las macros no cuentan con controles gr\u00e1ficos propios.<\/p>\n<h3><strong>\u00bfQu\u00e9 utilidad tienen las macros?<\/strong><\/h3>\n<p>En principio las macros fueron ideados para crear bancos de objetos gr\u00e1ficos espec\u00edficos para un \u00e1rea de aplicaci\u00f3n. Por ejemplo una librer\u00eda para circuitos (el\u00e9ctricos) como la que actualmente existe en el banco de macros del sistema.<\/p>\n<p>Cada autor puede desarrollar las macros que le convenga, ya sea para ahorrarse trabajo al observar que utiliza varias veces la misma construcci\u00f3n, para uniformizar la presentaci\u00f3n de varias escenas o para organizar mejor su trabajo. <span style=\"color: #ff0000;\">Como ejemplos de aplicaci\u00f3n de macros pueden verse<\/span>\u00a0<a href=\"https:\/\/descartesjs.org\/repositorio\/documentacion_4D\/Macros_JS\/macros\/fisica\/calor\/MaquinasTermicas.htm\" target=\"_blank\" rel=\"noopener noreferrer\">M\u00e1quinas T\u00e9rmicas<\/a>\u00a0y <a href=\"https:\/\/descartesjs.org\/repositorio\/documentacion_4D\/Macros_JS\/macros\/fisica\/optica\/EspejosEsfericos.htm\" target=\"_blank\" rel=\"noopener noreferrer\">Espejos Esfericos\u00a0<\/a><span style=\"color: #ff0000;\">, en especial se recomienda mirar y estudiar los ejemplos del macro\u00a0<strong>dinamica\/masa<\/strong>\u00a0por ser, desde el punto de vista gr\u00e1fico, uno muy sencillo, pero de una gran funcionalidad que hereda gracias a sus auxiliares.<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u00bfQu\u00e9 es una macro? Una\u00a0macro\u00a0es un\u00a0archivo de texto\u00a0que contiene parte del c\u00f3digo de una escena de Descartes y que interpretado por Descartes act\u00faa como un gr\u00e1fico en una escena. Podemos distinguir dos tipos de macros: Macros del Sistema o Macros de usuario. Los primeros son macros que previamente se han construido y que est\u00e1n incorporados al c\u00f3digo del int\u00e9rprete de Descartes en Java Descartes5.jar, y los segundo son macros que puede definir el usuario y que no est\u00e1n integrados en el int\u00e9rprete. objetos cartesianos debe colocarse en un sitio espec\u00edfico. Hay dos formas posibles de acomodar las macros: con\u00a0direccionamiento general\u00a0o<\/p>\n<a class=\"more-link\" rel=\"nofollow\" href=\"https:\/\/reddescartes.org\/documentacion\/macros-en-el-editor-de-configuracion\/\">[Leer m\u00e1s...]<\/a>","protected":false},"author":9,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[34],"tags":[],"_links":{"self":[{"href":"https:\/\/reddescartes.org\/documentacion\/wp-json\/wp\/v2\/posts\/2403"}],"collection":[{"href":"https:\/\/reddescartes.org\/documentacion\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/reddescartes.org\/documentacion\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/reddescartes.org\/documentacion\/wp-json\/wp\/v2\/users\/9"}],"replies":[{"embeddable":true,"href":"https:\/\/reddescartes.org\/documentacion\/wp-json\/wp\/v2\/comments?post=2403"}],"version-history":[{"count":9,"href":"https:\/\/reddescartes.org\/documentacion\/wp-json\/wp\/v2\/posts\/2403\/revisions"}],"predecessor-version":[{"id":3522,"href":"https:\/\/reddescartes.org\/documentacion\/wp-json\/wp\/v2\/posts\/2403\/revisions\/3522"}],"wp:attachment":[{"href":"https:\/\/reddescartes.org\/documentacion\/wp-json\/wp\/v2\/media?parent=2403"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/reddescartes.org\/documentacion\/wp-json\/wp\/v2\/categories?post=2403"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/reddescartes.org\/documentacion\/wp-json\/wp\/v2\/tags?post=2403"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}