Práctica 6. Gráficos 3D

 
 
En esta práctica se trata de como introducir diferentes contenidos en los espacios tridimesionales, denominados "Gráficos 3D".
En los espacios tridimensionales podemos introducir los siguientes elementos: puntos, segmentos, polígonos, curvas, triángulos, polígonos, caras, superficies, textos, macros y diferentes figuras tridimensionales regulares (cubos, esferas, paralepípedos, conos, cilíndros, etc.).
Procedimiento para introducir un elemento gráfico en una escena es el siguiente:

1. Acceder al editor de la escena (editor de configuraciones) y pulsar sobre el botón graficos 3D.


2. Añadir un nuevo gráfico. Seleccionar el panel Graficos 3D. Añadir un control

2.1. Desde el panel Gráficos 3D pulsar sobre el botón +

2.2. Seleccionar el elemento gráfico a añadir a través del menú desplegable pulsando sobre la pestaña.

2.3. Identificar el elemento gráfico a introducir.

2.4. Aceptar.

Hay diez tipos de gráficos 3-D básicos y son los que aparecen arriba 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 3-D 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 3-D, 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.

nombre

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.

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.

fondo

Si se selecciona fondo, el gráfico 3-D sólo se calcula una vez y se actualiza sólo cuando se pulsa inicio.
Cuando un gráfico 3-D 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.

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.

color_reverso
Botón del color en el 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.
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 >0).

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).

expresión
Debe ser una expresión cuyo contenido varía según el tipo de gráfico 3D.
familia
Selector que al activarse convierte al objeto gráfico en una familia de objetos parametrizada por la variable cuyo nombre aparece en el campo de texto a la derecha de este selector.
parámetro
Nombre de la variable con la que está parametrizada la familia de objetos gráficos 3D.
intervalo
Intervalo de variación de la variable que parametriza la familia de objetos gráficos 3D.
pasos
Número de subintervalos en los que se subdivide uniformemente el intervalo del parámetro para definir los elementos de la familia.
rotini

Rotación inicial.

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.

Si se agrega la palabra 'Euler' antes de la terna ordenada, es decir, se escribe Euler(A,B,C), entonces los ángulos A, B y C se interpretan como rotaciones de Euler, es decir, A es una rotación alrededor del eje z, B alrededor del nuevo eje x (el que se obtiene tras la primera rotación) y C alrededor del nuevo eje z (el que se obtiene después de las primeras dos rotaciones).

Nota: Se aplica antes que la translación inicial.

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.
rotfin

Rotación final.

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.

Si se agrega la palabra 'Euler' antes de la terna ordenada, es decir, se escribe Euler(A,B,C), entonces los ángulos A, B y C se interpretan como rotaciones de Euler, es decir, A es una rotación alrededor del eje z, B alrededor del nuevo eje x (el que se obtiene tras la primera rotación) y C alrededor del nuevo eje z (el que se obtiene después de las primeras dos rotaciones).

Nota: Se aplica después de la translación inicial y antes de la translación final.

posfin

Traslación final.

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 final.

cortar
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.
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.

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.
ancho
Cuando el cuerpo es regular: diámetro de la esfera que circunscribe al cuerpo regular. Cuando el cuerpo tiene dimensiones diferentes a lo ancho, largo y alto, se establecen éstas con: ancho, largo y alto.

Variables para la escala y los giros

En gráficos 3-D se agregaron unas variables para conocer y controlar los ángulos de giro del espacio : <Espacio>.rot.y y <Espacio>.rot. 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.

Esta unidad interactiva requiere la máquina virtual de Java J2RE.

Fondo

En gráficos 3-D se agregó el atributo fondo que significa que el gráfico no va a modificarse, 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 cuando todos los gráficos R3 de un espacio tienen fondo=si es que 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.

Esta unidad interactiva requiere la máquina virtual de Java J2RE.

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. La siguiente 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.

Esta unidad interactiva requiere la máquina virtual de Java J2RE.