Gráficos 3D

> Gráficos 3D:

1. Punto.
2. Segmento.
3. Polígono.
4. Curva.
5. Triángulo.
6. Cara.
7. Polireg.
8. Superficie.
9. Texto.
10. Macro.
11. Otros.

Gráficos 3D

Se llaman gráficos 3D a todos los objetos que se pueden dibujar en un espacio R3: puntos, segmentos, curvas, supericies y varios cuerpos formados por caras poligonales, así como textos y macros. Los gráficos 3D de una escena pueden editarse usando el panel de configuración de gráficos 3D, al que se accede seleccionando "GráficosR3" en la ventana de edición.

El Panel de configuración de gráficos 3D tiene este aspecto:

A la izquierda aparece la lista de todos los gráficos de la escena (en este caso hay uno de cada uno de los tipos básicos). A la derecha aparece un panel (que varía un poco con cada tipo de gráfico) en el que se pueden editar todos los parámetros que definen al objeto gráfico seleccionado en la lista. En esta página se explica el contenido y significado de todos los gráfico y sus campos o atributos.

Nota: Si se hace un clic sobre la etiqueta azul de Gráficos3D, aparecerá una ventana con un área de texto que contiene el código de todos los gráficos 3D, uno en cada línea. Este texto se puede editar manualmente y pulsando aceptar se actualiza el editor con los cambios realizados. Los autores experimentados pueden encontrar este método de edición muy cómodo y útil para cierto tipo de modificaciones.

Para crear un nuevo gráfico hay que hacer un clic sobre el botón + . Al hacerlo aparece una ventana de diálogo con una lista en la que se debe escoger el tipo de gráfico que se desea crear.

Hay diez tipos de gráficos 3D básicos y son los primeros nueve que aparecen en la lista: punto, segmento, polígono, curva, triángulo, cara, polireg, superficie, texto y macro.

Campos comunes.

Los paneles de configuración de los distintos tipos de gráficos 3D se parecen mucho entre sí pues tienen varios campos comunes. La imagen muestra el panel de configuración de una superficie. Los campos de las primeras tres líneas más el color los comparten todos los gráficos 3D, excepto los textos que en lugar de rotini y posini tienen texto. La tercera línea la tienen todos los gráficos bidimensionales como caras, poliregs y superficies. La última línea sólo aparece en superficies, polireg, curvas y algunos gráficos especiales como esfera y cono. En el caso de poliregs y curvas sólo aparece Nu.

En la siguiente tabla se explican estos campos.

espacio | Se trata de un selector que tiene la lista de los espacios de tres dimensiones que se hayan definido en la escena. Si sólo hay un espacio de tres dimensiones y éste no tiene nombre, la lista aparece vacía. Si hay más de un espacio, entonces debe seleccionarse el espacio al cual ha de pertenecer el gráfico.
tipo | Es un campo de texto no editable que muestra el tipo del gráfico.
fondo | Si se selecciona fondo, el gráfico 3D sólo se calcula una vez y se actualiza sólo cuando se pulsa inicio. Cuando un gráfico 3D no depende de los controles ni de los auxiliares, conviene definirlo como de fondo pues así se ahorra trabajo al procesador que no tendrá que calcularlo cada vez que haya un cambio en la escena.
dibujar-si | Campo de texto que puede contener una expresión booleana. El gráfico se dibuja si la expresión es vacía o si la expresión tiene valor verdadero (o es positivo). Si la expresión depende de x o y y el gráfico es una ecuación, entonces sólo se dibujan los puntos de la gráfica que satisfacen la expresión. Si el valor de x o y hace que la expresión no se cumpla en el momento en que se va a dibujar un objeto, entonces no se dibuja (es responsabilidad del autor controlar el valor de las variables x e y fuera de las ecuaciones).
nombre | Es un campo de texto libre que sólo se utiliza en el caso de los macros, sin embargo a veces conviene dar nombre a otros gráficos para distinguirlos unos de otros. Para referirse a un parámetro p de un macro cuyo nombre es nom, se utiliza el identificador nom.p.
expresión | Es un campo de texto. Debe ser una expresión cuyo contenido varía según el tipo de gráfico 3D. Por ejemplo en las curvas la expresión debe tener la forma 'x=f(u) y=g(u) z=h(u)' , donde f, g y h son funciones cualesquiera del parámetro u. El valor por defecto de la expresión también cambia según el tipo de gráfico. Si se pulsa el botón expresión se abre el editor de textos y se puede escribir el texto en varias líneas, lo cual puede ser conveniente al definir curvas y superficies. En la documentación de cada tipo de gráfico se explica cual debe ser el contenido de la expresión y cuál es el valor por defecto en cada tipo.
rotini | Es un vector de tres componentes (A,B,C) cuyos elementos son rotaciones (en grados) alrededor del eje x, del eje y y del eje z, respectivamente que se aplicarán sobre el objeto gráfico antes de dibujarse. Nota: Se aplica antes que la translación.
posini | Es un vector de tres componentes (A,B,C) que representa una translación que se aplicará al objeto gráfico antes de dibujarse. Nota: Se aplica después de la rotación.
color | Es un botón que se dibuja en el color seleccionado y en el que se dibujará el gráfico. En el caso de las superficies es el color del anverso del gráfico. El color por defecto de todos los gráficos es magenta. Haciendo un clic sobre el botón aparece la ventana de configuración de colores (ver colores).
color_reverso | Es un botón que se dibuja en el color seleccionado y en el que se dibujará el reverso del gráfico si se trata de un polígono, una superficie o un macro (los gráficos de otro tipo no tienen reverso). El color del reverso por defecto de todos los gráficos es rosa. Haciendo un clic sobre el botón aparece la ventana de configuración de colores (ver colores).
aristas | Se aplica a caras, poliregs, superficies y algunos gráficos especiales. Es un selector que determina si las orillas de las caras que forman el objeto deben dibujarse o no. Las orillas se dibujan en color gris.
modelo | Se aplica a caras, poliregs, superficies y algunos gráficos especiales. Es un selector con cuatro opciones: color, luz, metal y alambre. Son las cuatro formas de dibujar las caras del objeto gráfico. color hace que se dibuje con colores fijos. luz hace que el color sea más o menos brillante según la orientación, para dar sensación de iluminación. metal es como luz, pero con brillos más contrastados para dar la impresión de que la superficie es metálica. alambre dibuja sólo las orillas en el color seleccionado. El valor por defecto del modelo es metal. Nota: Con modelo alambre las aristas se dibujan en el color seleccionado y no en gris como ocurre en los otros modelos.
cortar | Es un selector que indica si la superficie debe ser cortada por los gráficos del mismo espacio que la preceden en la lista en caso de intersección. Es recomendable mantener esta opción siempre activada, a menos que se estén utilizando muchos gráficos que no se intersectan y convenga hacer un poco más rápida la ejecución.
Nu | Se trata de un campo de texto para definir el número Nu. Las curvas se definen paramétricamente y en ellas se utiliza siempre u como parámetro. Nu es el número de intervalos en los que se parte el segmento unitario [0,1] para dibujar la curva. Las superficies se definen también en forma paramétrica y se utlilizan los parámetros u y v ambos recorriendo el intervalo unitario [0,1]. Nu es el número de intervalos en los que se parte el intervalo para el parámetro u.
Nv | Se trata de un campo de texto para definir el número Nv. Las superficies se definen en forma paramétrica y se utlilizan los parámetros u y v ambos recorriendo el intervalo unitario [0,1]. Nv es el número de intervalos en los que se parte el intervalo para el parámetro v.

Variables para la escala y los giros

En gráficos 3D se agregaron unas variables para conocer y controlar los ángulos de giro del espacio : <Espacio>.rot.y y <Espacio>.rot.y donde <Espacio> es el nombre del espacio. También se agregaron las variables <Espacio>.escala y <Espacio>.observador que sirven para controlar la escala y la distancia aparente al observador, ambas se miden en pixeles. Estas variables se usan arriba (con nombres externos diferentes) en la escena de los poliedros. La siguiente escena ilustra explícitamente el uso de estas variables. Observe que si el usuario cambia la escala o gira el espacio arrastrando el ratón, los controles numéricos se actualizan con los nuevos valores de la escala y las rotaciones.

Fondo

En gráficos 3D se agregó el atributo fondo que significa que el gráfico no se va a modificar, por lo tanto si fondo=si entonces los cambios de valores no deben cambiar el gráfico. Esto debe usarse siempre que sea posible para ahorrar trabajo al procesador. En realidad sólo si todos los gráficos R3 de un espacio tienen fondo=si es cuando se ahorra trabajo. La escena anterior es un ejemplo donde se puso fondo=si en todos los gráficos 3-D. Abajo aparece la misma escena pero con fondo desactivado en uno sólo de los gráficos. El lector observará que la reacción a los giros provocados por los controles numéricos resultan mucho más lentos en esta segunda escena.

La razón es que en este caso cada vez que se cambia un parámetro mediante uno de los controles numéricos, todas las superficies y sus intersecciones vuelven a calcularse, mientras que en la primera escena todo eso se evita.

Nota: En versiones anteriores a la 3.5 el atributo dibujar-si no existía o no funcionaba correctamente. Este atributo sirve para determinar si el gráfico se dibuja o no. Igual que en el caso 2D, si dibujar-si es vacío, el gráfico sí se dibuja, Si dibujar-si no es vacío entonces el gráfico se dibuja sólo cuando la expresión dibujar-si es verdadera o tiene valor mayor que cero. Esta escena utiliza el atributo dibujar-si para cambiar el poliedro regular que presenta. En ella se ha puesto que cada poliedro se dibuje sólo si el número de caras es el que le corresponde.

Punto.

Éste es el panel de configuración de un punto.

Los puntos son los únicos gráficos 3D a los que se les puede asociar un texto.

expresión | Es un campo de texto. Su contenido debe tener la forma: (X,Y,Z) donde X,Y y Z son expresiones numéricas.
texto | Es una etiqueta que acompaña al punto gráfico y se escribe cerca de él, a su derecha. Por defecto los textos se dibujan en el mismo color que el objeto gráfico y con fuente monoespaciada, pero pueden tener varias líneas, fuentes y colores y pueden incluir fórmulas y valores numéricos variables. Si se quiere utilizar estas opciones hay que pulsar el botón texto para abrir el editor de textos. (ver Textos). El valor por defecto es vacío..
decimales | Es el número de decimales con los que se escribirán los números incluidos en el texto. Puede ser cualquier número o expresión. Al evaluarse se redondea para decidir el número de decimales. Su valor por defecto es 2.
fijo | Determina si el número de decimales es fijo o si, por el contrario, se usa la notación "ajustada" en la que se eliminan los ceros innecesarios y el punto decimal si también es innecesario. Por ejemplo: en lugar de 25.3400 se escribe 25.34 y en lugar de 13.0 se escribe 13 (sin punto decimal). Si se usa notación exponencial siempre se escriben los números en forma ajustada, es decir, el atributo fijo no interviene en ese caso. El valor por defecto es fijo=si.
ancho | Es el tamaño del punto en pixels.

Nota: Se pueden asociar textos a los puntos en 3D. En versiones anterores a la 3.5, en las escenas 3D sólo podían usarse textos en coordenadas absolutas. Los textos asociados a puntos pueden utilizarse por ejemplo para poner etiquetas a los gráficos 3D como se hace en este ejemplo .

Segmento.

Éste es el panel de configuración de un segmento.

expresión | Es un campo de texto. Su contenido debe tener la forma: (X1,Y1,Z1)(X2,Y2,Z2) donde X1, Y1, Z1, X2, Y2, Z2 son expresiones numéricas.
Nu | Es el número de intervalos en los que se parte el segmento al dibujarlo. El valor puede ser 0 si cortar está activado pues en este caso el programa mismo calcula los cortes que debe hacer para separar las partes del segmento que quedan a uno y otro lado de una superficie. Si cortar está desactivado y el segmento intersecta superficies, entonces es conveniente poner un valor alto de Nu.

Polígono.

Éste es el panel de configuración de un polígono (o poligonal).

Estos polígonos constan de varios segmentos, no tienen caras. Son objetos de una dimensión.

expresión | Es un campo de texto. Su contenido debe tener la forma: (X1,Y1,Z1)(X2,Y2,Z2)...(Xn,Yn,Zn) donde X1, Y1, Z1, X2, Y2, Z2,..., Xn,Yn,Zn son expresiones numéricas.
Nu | Es el número de intervalos en los que se parten los diferentes segmentos del polígono. El valor puede ser 0 si cortar está activado pues en este caso el programa mismo calcula los cortes que debe hacer para separar las partes de los segmentos que quedan a uno y otro lado de una superficie. Si cortar está desactivado y el segmento intersecta superficies, entonces es conveniente poner un valor alto de Nu.

Curva.

Éste es el panel de configuración de un curva.

Las curvas se representan paramétricamente y en realidad se dibujan como polígonos.

expresión | Es un campo de texto. Su contenido debe tener la forma: x=X(u) y=Y(u) z=Z(u) donde X, Y y Z son expresiones numéricas dependientes del parámetro u. La curva se dibuja como una polígonal con Nu lados cuyos Nu+1 vértices son los puntos: (X(i/Nu),Y(i/Nu),Z(i/Nu)) para i=0,...,Nu+1. Antes de x, y, z se pueden definir variables intermedias que sólo se usan para los cálculos que se realizan al dibujar la curva.
Nu | Es el número de lados que tendrá la poligonal que representará a la curva. Si se quiere una curva suave hay que elegir un número Nu grande. Pero no conviene siempre elegir números grandes pues eso aumenta el número de cálculos que teiene que hacer el programa. Si la escena es interactiva es importante llegar a un buen equilibrio entre una buena representación gráfica y una buena velocidad de procesamiento.

Triángulo.

Éste es el panel de configuración de un triíngulo.

Estos triángulos son superficies en 3D, es decir tienen dos cara (anverso y reverso), tres aristas y requieren de una especificación del modo de colorearse.

expresión | Es un campo de texto. Su contenido deben ser las coordenadas de tres puntos del espacio, es decir, una expresión de la forma: (X1,Y1,Z1)(X2,Y2,Z2)(X3,Y3,Z3) donde Xi, Yi, para i=1,2,3 pueden ser expresiones numéricas.

Nota: En versiones anteriores a Descartes 3.5 era posible crear triángulos y diversos objetosa partir de ellos, pero había que usar el tipo cara con 3 aristas y era complicado colocar a base de translaciones y rotaciones dicha cara en una posición deseada. Los triángulos 3D en cambio son muy fáciles de construir y es fácil combinar varios para crear diversos objetos. El octaedro irregular de esta escena está construido con triángulos 3D.

Cara.

Éste es el panel de configuración de una cara.

expresión | Es un campo de texto. Su contenido deben ser las cooredenadas de un polígono en el plano, es decir, una expresión de la forma: (X1,Y1)(X2,Y2)...(Xn,Yn) donde Xi, Yi, para i=1,...,n son expresiones numéricas.

Polireg.

Éste es el panel de configuración de un polireg o polígono regular..

expresión | Es un campo de texto. Su contenido puede ser cualquier cosa, en realidad este texto sólo se usa como identificador durante la edición. El número de lados del polígono regular queda determinado por Nu y su radio es la mitad de ancho, siempre y cuando ancho=largo. Si ancho#largo entonces el polígono no es regular sino que es una deformación de uno regular.
Nu | Es un campo de texto. Su contenido es el número de lados del polígono regular..
ancho | Es un campo de texto. Su contenido es la mitad del radio del polígono regular si ancho=largo. Si ancho#largo entonces el polígono no es regular sino que es una deformación de uno regular.
largo | Es un campo de texto. Su contenido es la mitad del radio del polígono regular si ancho=largo. Si ancho#largo entonces el polígono no es regular sino que es una deformación de uno regular.

Superficie.

Éste es el panel de configuración de una superficie.

expresión | Es un campo de texto. Su contenido debe tener la forma: x=X(u,v) y=Y(u,v) z=Z(u,v) donde X, Y y Z son expresiones numéricas dependientes de los parámetros u y v. La superficie consta de la red de cuadriláteros formada por los puntos: (X(i/Nu,j/Nv),Y(i/Nu,j/Nv),Z(i/Nu,j/Nv)) para i=0,...,Nu+1 y j=0,...,Nv+1. Antes de x, y, z se pueden definir variables intermedias que sólo se usan para los cálculos que se realizan al dibujar la superficie.

Texto.

Éste es el panel de configuración de un texto.

expresión | Es un campo de texto. Su contenido debe tener la forma: [X,Y] donde X e Y son expresiones numéricas que determinan la posición del texto en pixeles medidos de izquierda a derecha y de arriba abajo con respecto al vértice superior izquierdo de la ventana del espacio.
texto | Los textos pueden tener varias líneas, fuentes y colores y pueden incluir fórmulas y valores numéricos variables. Si se quiere utilizar estas opciones hay que pulsar el botón texto para abrir el editor de textos. (ver Textos). El valor por defecto es vacío.
decimales | Es el número de decimales con los que se escribirán los números incluidos en el texto. Puede ser cualquier número o expresión. Al evaluarse se redondea para decidir el número de decimales. Su valor por defecto es 2.
fijo | Determina si el número de decimales es fijo o si, por el contrario, se usa la notación "ajustada" en la que se eliminan los ceros innecesarios y el punto decimal si también es innecesario. Por ejemplo: en lugar de 25.3400 se escribe 25.34 y en lugar de 13.0 se escribe 13 (sin punto decimal). Si se usa notación exponencial siempre se escriben los números en forma ajustada, es decir, el atributo fijo no interviene en ese caso. El valor por defecto es fijo=si.

Macro.

Éste es el panel de configuración de un macro.

macro | Se trata de un campo de texto y dos menús desplegables. El campo de texto debe contener la trayectoria y el nombre del archivo que contiene los datos del macro. Los menús desplegables que aparecen a la derecha del campo de texto muestran las trayectorias y nombres de los macros registrados en el sistema y sirven para seleccionar cualquiera de ellos. El primero de los menús desplegables muestra las trayectorias incluidas en el archivo macros/g3d/menu.txt y el segundo muestra los nombres de los macros incluidos en el archivo macros/g3d/<trayectoria>/index.txt. El archivo macros/g3d/index.txt contiene los nombres de los macros que tienen trayectoria vacía, es decir, los que se encuentran en el directorio macros/g3d. Para que un macro aparezca en estos menús es necesario que su trayectoria esté registrada en macros/g3d/menu.txt y que su nombre esté registrado en el archivo macros/g3d/<trayectoria>/index.txt. No es necesario que un macro y su trayectoria aparezca en las listas para poder usarlo. También se pueden usar macros que se encuentran en la carpeta donde está la página que contiene a la escena o en subcarpetas de ella, pero estos macros no aparecen en los menús desplegables. (Ver Macros.)
Aux | Botón que sirven para obtener información del macro seleccionado. Un clic en él mostrará una lista con todos los auxiliares del macro a los que el autor puede asignar valores (o redefinir si se trata de funciones o algoritmos).
Doc | Un clic en este botón abre la página web que contiene la escena que define al macro seleccionado.

Otros.

Aparte de los gráficos básicos documentados arriba, Descartes3 tiene algunos gráficos más que podrían construirse como macros, pero que se incluyen entre los gráficos del sistema por comodidad. En general estos gráficos siguen la misma tónica, dependen de algunos de los parámetros ancho, largo, alto, Nu y Nv y su expresión es sólo un identificador para la edición. He aquí la lista de estos gráficos con un dibujo de cada uno:

Cubo |
Paralelepípedo |
Tetraedro |
Octaedro |
Dodecaedro |
Icosaedro |
Esfera |
Elipsoide |
Cono |
Cilindro |

``Autor: José Luis Abreu León``