BREVE RESEÑA HISTÓRICA SOBRE LENGUAJES DE PROGRAMACIÓN A mediados del Siglo XX se inició la revolución tecnológica con la invención del transistor. Revolución que no termina aun y que por el contrario crece con el encapsulamiento de millones de transistores, cada vez en menos espacio. Con el avance de las máquinas electrónicas se hizo necesario diseñar lenguajes para programar sistemas computacionales. Las primeras utilidades de los lenguajes de programación se observan especialmente en el diseño aeroespacial y la tecnología militar. A continuación se presenta una breve reseña histórica sobre los lenguajes de programación: Lenguaje FLOW-MATIC desarrollado por Grace Hopper en 1957. Lenguaje FORTRAN (FORmula TRANslator) diseñado por un equipo de programación para aplicaciones a la ingeniería por la IBM En 1958. Lenguaje Algol 60 (ALGOrithmic Language) diseñado por el Comité del Insituto Internacional Americano en 1960. Lenguajes CPL y BCPL desarrollados en Cambridge por Martin Richards en 1963 y 1967 respectivamente. Lenguaje Unix desarrollado en 1969 en los laboratorios de Bell en New Jersey implantado en pequeños ordenadores DEC PDP-7. Lenguaje BASIC diseñado por Ken Thompson en los laboratorios de Bell en 1970. Lenguaje C diseñado por Dennis Ritchie también en los laboratorios de Bell en 1972. Lenguaje ANSI C estandarizado por el comité del Instituto Internacional Americano en 1983. Lenguajes PASCAL y C++ Estructurados por Bill Gates en los laboratorios de Microsoft en 1985-1992. Lenguaje C++ BUILDER Desarrollado en Oxford en 1992 por profesores y maestros de la computación para entornos gráficos de alta resolución. Los lenguajes de programación contemporáneos están estructurados de forma muy abstracta y requieren de conocimientos sobre algoritmia y métodos numéricos. El objetivo de la División de Desarrollo Borland Internacional como diseñadores de lenguajes de programación es el de simplificar la estructura del lenguaje e introducir la simbología matemática en los métodos numéricos. Estos objetivos logrados aceleran el cálculo y diseño de proyectos, además permiten comprender más fácilmente los algoritmos de sintaxis matemática. Con la llegada del Siglo XXI y el rápido avance de la tecnología aplicada a la vida cotidiana, aumenta la utilización de la simulación computacional y se promociona su aprendizaje. La simulación con realismo le permite al usuario tener una idea concreta y calculada de sus objetivos. La característica fundamental de un Lenguaje Dimensional es el espacio virtual como herramienta esencial de trabajo. El Taller Tridimensional facilita la construcción de un espacio virtual con objetos espaciales. El lenguaje de programación Dimentor hace posible la utilización del cálculo avanzado generado sobre todos los objetos del Taller Tridimensional y además la edición de simulaciones audiovisuales de larga duración. Dimentor también puede estructurar diseños espaciales pero, los usuarios prefieren hacerlo de forma gráfica y no programada porque es más sencillo diseñar de este modo, aunque no sea más práctico. De todas formas, hemos analizado la mecánica del diseño espacial intentando ofrecer todos los métodos posibles para aplicar sus ideas y creatividad; y sabemos que ha medida que crezca la experiencia, el usuario encontrará interés en el diseño espacial programado. A medida que avanzan los capítulos, este manual profundiza en diversas técnicas utilizadas para resolver todo tipo de problemas. El material de este manual le permitirá adiestrarse en la programación de sintaxis científica, la cual además de ser de utilidad, es necesaria para el desarrollo de proyectos modernos sobre Física, Electrónica, Mecánica, Química, y los diferentes campos del Diseño Computacional. Minuciosamente se han seleccionado decenas de ejemplos, problemas y ejercicios básicos para el aprendizaje del sistema, innovando la práctica con herramientas calculadoras avanzadas. Esperamos que sea de su agrado y fácil comprensión. Es importante seguir paso a paso los temas de cada capítulo o de lo contrario le será difícil memorizar cada una de las funciones sintácticas del lenguaje. 1 EL TALLER TRIDIMENSIONAL 1.1 TABLERO PRINCIPAL El Tablero Principal esta diseñado para facilitar el trabajo del usuario. Este tablero contiene acceso gráfico a todas las herramientas del proyecto. Cuando la aplicación se inicia, el Tablero Principal se ubica automáticamente en la parte superior de la pantalla de forma permanente. Al cerrar el Tablero Principal, también se cierra toda la aplicación. A continuación se presenta el Tablero Principal del Taller Tridimensional. En la parte izquierda del Tablero Principal se encuentran cuatro grupos de botones, los cuales contienen las herramientas básicas del Taller Tridimensional. En la parte derecha del Tablero Principal esta la carpeta de objetos simples definidos por la aplicación. Un proyecto es el conjunto de todos los objetos en el Espacio Virtual. Las propiedades de un proyecto son: el tamaño y la posición del espacio virtual, la imagen de fondo, la paleta de colores, las lámparas de iluminación y el estado de la Cámara Virtual. CARPETA DE OBJETOS SIMPLES Esta carpeta contiene acceso directo a los formatos de cada uno de los objetos definidos por el Taller Tridimensional, estos botones gráficos se utilizan para crear e insertar objetos simples al espacio virtual. Los objetos simples son las formas geométricas superficiales con las que el usuario estructura sus proyectos. De acuerdo al cálculo espacial, el Taller Tridimensional soporta las formas superficiales básicas que son simples para lograr ensamblar el objeto que el usuario necesite. En síntesis la congruencia entre objetos simples le brinda al usuario posibilidades infinitas. Los objetos simples del Taller Tridimensional son: partículas, líneas, elipses, polígonos, pirámides, cilindros, conos, cajas rectas, cajas cónicas, elipsoides, toroides, filetes de tornillo, superficies de revolución, portaimágenes espaciales y funciones espaciales. Para cumplir con las características de un taller espacial profesional, todos los objetos de revolución son elípticos y la mayoría de los objetos sólidos permiten la intersección de planos en sus superficies inferior y superior. La simulación espacial necesita de realismo para que el espectador de una animación comprenda fácilmente lo que se le presenta, el Taller Tridimensional soporta la reflexión lumínica de los focos de iluminación sobre los objetos simples; además genera la proyección de sombras entre objetos de acuerdo a la ubicación de las lámparas de iluminación, aun sobre objetos con superficies transparentes. Por último, la Cámara Virtual utilizada para generar cada proyección tridimensional se calcula de acuerdo a la realidad, es decir, con la simulación de una lente que proporciona la perspectiva correcta de las animaciones. 1.2 ESPACIO VIRTUAL Esta es la ventana donde se proyecta el Espacio Virtual, aquí se construye un proyecto espacial. En el centro de la siguiente gráfica se observa el Sistema de Referencia Absoluto. TABLERO ESTADÍSTICO DEL ESPACIO VIRTUAL El tablero estadístico contiene las propiedades más importantes del estado de la cámara virtual que proyecta al espacio tridimensional. A continuación se describe la información del tablero: Posición de la Cámara Virtual: Es un vector que indica la posición de la cámara en el espacio virtual con respecto al sistema de referencia absoluto del proyecto. Lugar de Enfoque: Es un vector que indica el punto donde la cámara esta enfocando. Zoom de la Lente: Es la distancia focal de la lente, se utiliza para acercar o alejar el lugar de enfoque. 1.3 EDITOR DE PROGRAMAS Es la ventana de programación del Espacio Virtual. Todos los programas edita-dos en Dimentor tienen sintaxis matemática científica. Esta sintaxis mejora la comprensión de un algoritmo espacial y facilita la funcionalidad del lenguaje. El tablero estadístico tiene el objetivo de informar permanentemente el estado del Editor de Programas, de esta manera el usuario no necesita abrir otras ventanas para estar al tanto de lo que esta ocurriendo en cada compilación o ejecución de un programa. Dimentor fue dise-ñado de acuerdo a las necesidades del Taller Tridimensional. Cuando la cantidad de tareas tales como: inserción o movimiento de objetos se extiende y se requiere de simular con mucha precisión, se necesita de un algoritmo que pueda resolver los inconvenientes del usuario. El editor de programas permite que el usuario ahorre tiempo y diseñe con gran precisión proyectos para ingeniería y arquitectura, además de las ilimitadas animaciones para publicidad y cine. Dentro del Editor de Programas todas las cifras numéricas que son validas serán resaltadas de azul marino y todas las palabras claves del lenguaje aparecerán en negrilla, esto con el objetivo de cumplir con las características y estándares de los lenguajes de programación distribuidos a nivel mundial. Todos los programas espaciales están parametrizados temporalmente, es decir, comienzan en un tiempo inicial t y terminan justo en un tiempo final tf definido por el usuario, esta característica a sido introducida en la programación para sobrepasar las dificultades encontradas en versiones anteriores de lenguajes de programación. Al parametrizar los programas el compilador determina y ajusta automáticamente el intervalo entre cada imagen. En el caso de contener variables físicas el comportamiento de las animaciones es mucho más real y no hay que programarlo de forma independiente como en el caso de lenguajes no parametrizados. La sintaxis matemática científica del lenguaje hace que el análisis y la comprensión algorítmica, así como la edición de programas, se acerque más a la simbología aprendida en clase, mejorando la aplicación de los métodos de aprendizaje, aspecto fundamental, para el buen desempeño de estudiantes y profesionales que se preparan con un riguroso aprendizaje matemático. Al compilar un programa el editor actualiza una ventana de información sobre el estado del algoritmo, la cual contiene avisos y mensajes de cada error, características que aceleran el desarrollo de tareas, ilustrando cada línea donde existe un error sintáctico. PLATAFORMA PARA APLICACIONES ESPACIALES Una plataforma para aplicaciones espaciales contiene toda la información necesaria para iniciar la codificación de un programa. Una plataforma básica consta de un procedimiento INICIAL( ) el cual se ejecuta una sola vez al inicio de cada programa, utilizado para definir el rango de tiempo durante el cual se ejecutará la animación. La segunda parte es un procedimiento PRICIPAL( ) temporizado que se ejecutará de acuerdo a la parametrización del programa. En general una plataforma para aplicaciones espaciales es la forma más conveniente de aprender las técnicas y métodos de la programación científica. Un lenguaje de programación es extenso y el usuario requiere de experiencia para dominarlo, pero una plataforma le proporciona de forma segura el primer paso para conseguir el éxito. En adelante se hará referencia a esta opción del menú gráfico para iniciar programas espaciales. El siguiente ejemplo ilustra un procedimiento INICIAL( ). La parametrización de un programa espacial se representa con el dato variable t. Entonces el Taller Tridimensional ejecutará el programa desde el tiempo t hasta tf en lapsos o intervalos de tiempo dt. En el caso del procedimiento en el cuadro la parametrización se ejecutará 100 veces en intervalos de 1 milisegundo. Es posible que generar una proyección del espacio virtual tarde más de un milisegundo, pero una grabación audiovisual si cumple con las condiciones requeridas por el usuario para simular las situaciones físicas con mucho realismo y precisión. En la última línea se declara un nuevo espacio virtual con cada nueva ejecución. 1.4 CÁMARA La Cámara Virtual se utiliza para generar proyecciones del contenido del espacio virtual enfocando en un lugar definido. La cámara puede moverse a través de los botones gráficos para encontrar diferentes proyecciones del espacio virtual. Para mover la cámara a algún lugar determinado del espacio utilice la ventana de opciones del proyecto ubicada en el submenú de herramientas del Tablero Principal. También para definir el ángulo de rotación y la diferencia de altura de los botones de la ventana de cámara. Más adelante se presentará la forma de programar los movimientos de la Cámara Virtual con el Editor de Programas, para simplificar el trabajo del usuario y obtener resultados más precisos en cada simulación espacial editada en el Taller Tridimensional. 1.5 LUGAR DE ENFOQUE Esta ventana hace referencia al lugar del espacio donde enfoca la Cámara Virtual. El Lugar de Enfoque de la Cámara Virtual es un vector espacial. En la gráfica se observan las propiedades de esta ventana. Para comprender mejor el El vector de enfoque de la cámara se puede asignar desde un programa en curso, tan simple como asignando un vector. En el siguiente ejemplo se ilustra la forma de controlar las propiedades del estado de la Cámara Virtual en un procedimiento INICIAL() donde la proposición gramatical “Enfoque = <1,3,1.2>” enfocará la Cámara en el vector asignado. Para mover la cámara se hace de la misma forma; Por ejemplo “Cámara = <0,2,1.4>” reubica la Cámara en el vector asignado. Finalmente para aumentar o disminuir la Distancia Focal se asigna un valor real al Zoom de la cámara; Por ejemplo “Zoom = 0.34” ajusta la Distancia Focal a 0.34 metros del plano de proyección dentro de la caja oscura de la Cámara Virtual. Las palabras Cámara, Enfoque y Zoom son palabras claves de este lenguaje de programación. Esas 3 palabras claves representan las diferentes propiedades del estado de la Cámara Virtual. También es posible asignar las propiedades del Espacio Virtual con la palabra clave Espacio como se ilustrará en capítulo 3. 1.6 PALETA DE COLORES La ventana ilustrada contiene todas las propiedades para que el usuario pueda crear, guardar, abrir y editar en general infinitas gamas de colores con nombre propio. La Paleta se representa con una lista que contiene todas las gamas de colores con las cuales se proyectan los objetos en el Espacio Virtual. Una gama de colores se compone de tonalidades para simular la sombra real de un objeto mediante la reflexión lumínica. A continuación se presentan las propiedades y los botones de la paleta de colores que están señalados en la gráfica de la derecha. GAMAS DE COLORES Una gama de colores se define como un tono conformado por la mezcla de los colores básicos Rojo, Verde y Azul. Para el usuario debe quedar claro que el color de un objeto será el tono básico y que tanto la sombra proyectada por un foco luminoso como la iluminación del mismo foco luminoso sobre la superficie del objeto estarán representados por la cantidad de tonos y la intensidad especificada en la Paleta. Es posible crear objetos opacos definiendo una intensidad baja y también crear tonos muy brillantes definiendo un rango de intensidad alto. La cantidad de gamas de tonalidades que puede definir el usuario con éxito depende del tipo de tarjeta de video que utiliza en su computadora, pero por lo general en equipos de más de 1Ghz de velocidad se tiene la posibilidad de representar más de mil colores; así el usuario podrá dividir la cantidad de colores disponibles en la cantidad de gamas de tonalidades que va a utilizar. Para una mejor comprensión de esta explicación el usuario debe experimentar con esta herramienta y comprobar por si mismo hasta donde puede llegar, sin embargo aun con una tarjeta de video que soporte tan solo 255 colores los resultados de cada proyección serán aceptables para una simulación simple o para la portabilidad de animaciones a una página HTML para el Internet. En general esta ventana es una herramienta importante para el usuario una vez que aprende a mezclar las cantidades de colores básicos rojo, verde y azul para dar realismo a cada objeto del espacio virtual. Otro aspecto interesante es la capacidad del Taller Tridimensional para convertir tonalidades en transparencias, esto le da mucho mas realismo a las animaciones cuando se requiere, además, es posible proyectar sombras de objetos transparentes y sobre objetos transparentes; Mas adelante se presentará esta técnica en algunos ejemplos básicos. 1.7 LÁMPARAS Esta ventana contiene los focos de iluminación del proyecto. Estos focos de iluminación se representan mediante una lista de Lámparas con nombre propio, la siguiente gráfica ilustra esta ventana y sus propiedades. En general esta herramienta es muy eficiente para la simulación con realismo. Cuando el usuario inserta objetos en el espacio virtual, el Taller Tridimensional verifica la lista de Lámparas para proyectar los objetos de acuerdo a la reflexión lumínica que se produce en un contexto real. Además, de forma automática calcula las sombras que se proyectan entre los objetos cuando ellos se interponen a un foco de iluminación. 1.8 ESTRUCTURA DEL PROYECTO Todos los proyectos diseñados por el usuario se estructuran de forma arbórica para facilitar el manejo, reubicación y animación de cada uno de los objetos simples o grupos de objetos. En la gráfica se observa un ejemplo clásico sobre sistemas o estructuras arbóricas. En anatomía, nos enseñan que un cuerpo humano esta dividido en diferentes sistemas, de acuerdo a su funcionalidad. El explorador del proyecto se caracteriza por cumplir con las condiciones de todos los sistemas incluyendo el humano de representarse de forma arbórica. El método gráfico utilizado para editar la estructura de un proyecto agiliza el trabajo del usuario, este método consiste en seleccionar con el ratón el objeto deseado y seguidamente utilizar el menú del explorador que se activa presionando el botón derecho sobre el objeto seleccionado. Existe un menú para sistemas o grupos y otro menú para objetos simples. La ventana incluye botones para guardar y abrir objetos en la estructura. En el capítulo 3 se amplía la información sobre la Estructura del Proyecto y su manejo. La estructuración de un proyecto es necesaria para lograr todas las transformaciones que se presentan a medida que se edita una simulación espacial. La estructuración de un proyecto también facilita y simplifica el trabajo del usuario, porque organiza sin limitaciones la composición de cada grupo de objetos en un espacio virtual. En el tablero ubicado en la parte baja de la ventana se informa sobre la posición y focalización de cada objeto predefinido cuando esta seleccionado. 1.9 PROYECTOR El Proyector es una aplicación independiente que sirve para animar las grabaciones que elabora el usuario en el Taller Tridimensional. Cuando se define el nombre de una grabación en el Taller Tridimensional o en Dimentor se crea un archivo de extensión 3da (Animación 3D), este archivo contiene una estructura con propiedades de la animación tales como: tamaño, lapso de tiempo y otras propiedades internas necesarias para la inicialización y el funcionamiento del Proyector. CARACTERÍSTICAS DEL PROYECTOR El tiempo que se demora el Taller Tridimensional en generar una proyección del espacio virtual, depende de cuantos objetos necesita calcular y proyectar. Es claro que entre más objetos hay en el Espacio Virtual, más tiempo le tomará a la computadora generar una imagen. Otro factor que incide en la demora de una proyección es la definición de los objetos del espacio, es decir, para definir un objeto con mucha precisión se necesita una gran cantidad de tiempo de cálculo para todos los segmentos superficiales que contenga dicho objeto. En general el usuario notará que ha medida que aumenta la cantidad de objetos del Espacio Virtual, la aplicación se vuelve más lenta; para superar este inconveniente inevitable se diseñó el Proyector de secuencia de archivos gráficos de extensión jpg (Java Picture Graphic). El Proyector es una herramienta para complementar la grabación de una simulación o animación tridimensional. El usuario en muchas ocasiones necesita editar una grabación para acomodar las secuencias o escenas, entonces en ese caso, la aplicación simplifica el proceso de edición. Una simulación animada, con frecuencia necesita de efectos sonoros en sincronía con las diapositivas tomadas; el Proyector le permite al usuario programar cada secuencia de sonido y sincronizar los efectos sonoros gráficamente. Una grabación se inicia en el Taller Tridimensional con la creación de cada proyección de forma independiente, de esa manera el usuario tiene acceso directo a todas y cada una de las proyecciones en forma de archivos gráficos de extensión jpg (Java Picture Graphic) en el explorador de MS Windows antes de comprimir y encapsular la grabación final. En general las propiedades de la ventana le permiten al usuario alterar las características de una simulación o animación tridimensional. Además, esta aplicación no limita la cantidad de diapositivas de una grabación, esta ventaja aumenta la duración de cualquier simulación espacial hasta que se agota el espacio en los discos de la computadora. La siguiente gráfica presenta las propiedades de la ventana para añadir audio a una animación. Para insertar un archivo de sonido presione el botón gráfico que contiene la carpeta y seleccione un archivo de sonido. Indique el número de diapositiva donde inicia el audio, por último presione el botón Insertar. La lista es actualizada automáticamente de forma que no necesita repetir el procedimiento anterior cada vez que se abre la animación. 1.10 MS GIF ANIMATOR Esta aplicación independiente se utiliza para crear imágenes animadas para Internet. Cuando el usuario quiere portar sus animaciones a una página HTML, MS Gif Animador es una herramienta que comprime en un archivo de extensión gif una secuencia animada; el sonido se añade a cada página y no al caso de una gráfica animada como en el Proyector. Para portar una imagen desde el Taller Tridimensional utilice la combinación ctrl.-c o también ctrl.-ins desde el Espacio Virtual para insertarla en la memoria del sistema, posteriormente utilice la combinación ctrl.-p o también shift-ins en el MS Gif Animator para insertarla en la posición deseada. Esta aplicación le proporciona al usuario la herramienta ideal para generar páginas HTML de alta calidad con las simulaciones iniciadas en el Taller Tridimensional. MS Gif Animator comprime al máximo cada archivo con tan solo 256 colores diferentes, esta característica no es una desventaja cuando se necesita transmitir con rapidez a través de una red de comunicaciones. Es más, este formato de imágenes es uno de los pocos estandarizados para ser portables en una página HTML. Sin duda estará de acuerdo como usuario que concluir los trabajos en esta aplicación, es ideal. Aunque MS Gif Animador esta diseñado en el idioma ingles, la División de Desarrollo de Borland Internacional y por cortesía de Microsoft Corporations la incluye como una herramienta más del Taller Tridimensional por las cualidades únicas del formato final de cada archivo editado en la aplicación. A continuación se presenta una explicación general de algunas propiedades importantes de la ventana, para el usuario que no comprende el idioma ingles. Es importante saber que las imágenes se insertan en forma de pila, es decir, la última en entrar será la primera en salir, comprender esta mecánica es de gran ayuda. Para que las animaciones no queden en orden invertido, el usuario debe definir el lugar de la secuencia donde insertar cada imagen, esto se logra moviendo el marco de color azul que encierra la imagen activa con las flechas del teclado o los botones gráficos. Para crear imágenes animadas para Internet desde el Taller Tridimensional utilice el Pisapapeles de MS Windows como vehículo para copiar y crear cada una de las diapositivas de la animación. Esta aplicación no incluye dentro de las animaciones una banda de sonido, esta banda de sonido debe incluirse dentro de la página HTML. La aplicación contiene 3 carpetas llamadas Opciones, Animación e Imagen que le ayudarán a construir un archivo animado para Internet. A continuación se describen las propiedades de cada carpeta. 1.11 AYUDAS DE LA APLICACIÓN Esta ventana será su manual virtual cuando necesite investigar algo, los temas de ayuda contienen toda la información relacionada sobre el Taller Tridimensional y Dimentor. La ventana se activa con la tecla F1 desde cualquier parte de la aplicación. La característica principal de esta ventana es un indicador de búsqueda rápida, la función de esta propiedad es la de sincronizar la lista de todos los temas de ayuda a medida que el usuario escribe las primeras letras de un tema. Entonces, la mecánica del indicador ilustra una gran cantidad de posibilidades que hacen referencia a lo que el usuario esta buscando. A continuación se presenta la ventana de los temas de ayuda de la aplicación 1.12 OPCIONES DEL PROYECTO La ventana de opciones contiene gran parte de las propiedades de un proyecto, esta ventana se incorpora en la aplicación para brindarle al usuario una lista compacta de propiedades que son necesarias para la edición de un trabajo. Las opciones están organizadas en carpetas y a su vez en tableros por título, tratando de agrupar las propiedades que son afines. En general, el usuario necesita de las opciones de forma constante cuando esta trabajando en un proyecto. La ventana tiene una forma rectangular para no impedir la visibilidad del Espacio Virtual cuando se están utilizando las opciones. En la gráfica se observa la ventana de opciones y algunas de sus propiedades. La carpeta activa en la gráfica es la carpeta del Espacio Virtual, donde se observan 3 tableros que son: Tamaño de la imagen, Fondo del Espacio Virtual y Cámara virtual respectivamente. El primer tablero contiene el Ancho y Largo de la ventana del Espacio Virtual. El segundo tablero contiene el color del Fondo del Espacio Virtual, también se utiliza para definir la imagen de Fondo desde un archivo. El tercer tablero contiene algunas propiedades importantes de la cámara virtual, como son: el Vector de posición de la cámara, la distancia focal, los Grados de Rotación y la Altura de cada movimiento simple de la cámara; la Escala se utiliza para definir la proyección del espacio virtual en la pantalla del Espacio Virtual, esta propiedad es importante para la generación de imágenes escaladas de un proyecto. Las otras propiedades de la ventana contiene en varios tableros: El lapso de temporización de los botones de los espacios virtuales en los formatos de objetos simples, la longitud de los vectores que conforman los sistemas de referencia y el ángulo de visión de la cámara virtual. En la gráfica se explica geométricamente el significado del ángulo de visión de la cámara virtual. Este ángulo se utiliza para reducir el rango de proyección de un espacio virtual; en general se requiere definir este ángulo cuando se tiene muchos objetos alrededor de la cámara que pueden producir errores o retardos de cálculo interno bloqueando la aplicación.