• Gráficos 3D

    Se llaman gráficos 3D a todos los objetos que se pueden dibujar en un espacio R3: puntos, segmentos, curvas, superficies 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áficos 3D» en la ventana de edición. Ha de señalarse que este panel está accesible sólo si hay definido al menos un espacio R3.

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

    panel_graficos_3D

    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.

    Si se hace un clic sobre la etiqueta azul Gráficos, aparecerá una ventana con un área de texto que contiene el código de todos los gráficos 3D incorporados a la escena, 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 encontrarán 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 debe escogerse el tipo de gráfico que se desea crear.
    agregar

    Con el botón – se podrá eliminar el gráfico seleccionado y con el * duplicar un gráfico y tomarlo como referencia para, modificándolo, obtener otro.
    Hay diez tipos de gráficos 3D básicos: punto, segmento, polígono, curva, triángulo, cara, polígono regular, superficie, texto, y macros. En el menú anterior también aparecen figuras 3D incorporadas para mayor comodidad a la hora de construir una escena a la que queramos incorporar alguna de ellas (Cubo, paralelepípedo, tetraedro, octaedro, dodecaedro, icosaedro, esfera, elipsoide, cono y esfera).

    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 polireg y curvas sólo aparece Nu.

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

    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

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

     

    (puede descargar la escena anterior desde este enlace)

    La escena anterior 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.

    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 sexagesimales) 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 traslación inicial.

    posini

    Es un vector de tres componentes (A,B,C) que representa una traslació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 traslación inicial y antes de la traslación final.

    posfin

    Traslación final.Vector de tres componentes (A,B,C) que representa una traslació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 intersecan y convenga hacer un poco más rápida la ejecución.

    aristas

    Se aplica a caras, polireg, 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, polireg, 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.

    Variables para la escala y los giros

    En gráficos 3D se cuenta con unas variables que permiten conocer y controlar los ángulos de giro del espacio : nombre.rot.y y nombre.rot.z donde «nombre» es el nombre del espacio. También se dispone de las variables nombre.escala y nombre.observador que sirven para controlar la escala y la distancia aparente al observador, ambas se miden en píxeles. 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

    El atributo fondo indica que el gráfico no va a modificarse, por lo tanto si «fondo=sí» 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=sí» es que se ahorra trabajo. La escena anterior es un ejemplo donde se puso «fondo=sí» en todos los gráficos 3D. Abajo aparece la misma escena pero con fondo desactivado en uno sólo de los gráficos. Puede que pueda observar (dependiendo del procesador que disponga) 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.

    (Puede descargar esta escena y la anterior desde este enlace)

  • Gráficos

    Se llaman gráficos (o gráficos 2-D) a todos los objetos que se pueden dibujar en un espacio R2: puntos, segmentos, curvas, arcos, (lugares geométricos de) ecuaciones, textos, imágenes, macros, etc. Los gráficos de una escena pueden editarse usando el panel de configuración de gráficos, al que se accede seleccionando «Gráficos» en la ventana de edición. Ha de señalarse que este panel está accesible sólo si hay definido al menos un espacio R2.

    El Panel de configuración de Gráficos tiene este aspecto.

    Panel de configuración de Gráficos

    A la izquierda aparece la lista de todos los gráficos de la escena (en este caso hay uno de cada tipo). A la derecha veremos un panel (que será diferente para 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.

    Si en el menú de selección que hay encima de la etiqueta azul gráficos se selecciona algún espacio se mostrarán sólo los gráficos correspondientes a ese espacio, si se selecciona * se muestran todos los gráficos de esa escena.

    Si se hace un clic sobre la etiqueta azul de Gráficos, aparecerá una ventana con un área de texto que contiene el código de todos los gráficos, 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 encontrarán 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 debe escogerse el tipo de gráfico que se desea crear.

    agregar

    Si se selecciona un gráfico y se pulsa el botón -, dicho gráfico se eliminará. Y si se pulsa el botón etiquetado con *, se duplica el gráfico seleccionado con el objeto de que pueda crearse un gráfico tomando como referencia uno análogo.

    Hay doce tipos de gráficos diferentes: ecuación, curva, sucesión, punto, segmento, flecha, polígono, arco, rellenotexto, imagen y macro, y cada uno tiene su propio panel de configuración.

    Campos comunes

    Los paneles de configuración de los distintos tipos de gráficos se parecen entre sí pues la mayoría comparten algunos campos,  concretamente, los que se muestran en el siguiente panel.

    panel_configuracion

    En la siguiente tabla se explican esos campos comunes a todos los gráficos.

    Campos Descripción
    espacio Menú desplegable con la lista de los espacios de dos dimensiones que se hayan definido. Si sólo hay un espacio de dos 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 sólo se dibuja en el «fondo» de la escena y por lo tanto se actualiza sólo cuando se pulsa inicio y cuando se modifica la escala o la posición del origen (O.x y O.y). Cuando un gráfico está siempre fijo en la escena, es decir, 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 dibujarlo cada vez que hay un cambio en la escena.
    dibujar-si Es un campo de texto donde se puede escribir 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).
    color El botón sin etiqueta que aparece en general a la derecha de la primera línea del panel de edición, muestra el color con que se dibujará el gráfico.Haciendo un clic sobre el botón aparece la ventana de configuración de colores (ver colores).El color defecto de todos los gráficos es azul.Los gráficos de tipo imagen y macro no tienen color.Para flechas: Es el color de la orilla o borde de la flecha, su interior se dibuja en el color flecha.
    expresión Es un campo de texto. Su contenido debe ser una expresión cuyo contenido varía según el tipo de gráfico. Por ejemplo en las curvas la expresión debe tener la forma (f(t),g(t)), donde f y g son funciones cualesquiera del parámetro t. El valor por defecto de la expresión también cambia según el tipo de gráfico.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 valores por defecto en cada tipo.Los gráficos arco, texto e imagen no tienen expresión. En el caso del arco la expresión se sustituye por campos para radio, inicio y fin.

    rastro

    (y su color)

    Si se selecciona rastro el objeto gráfico deja un rastro en la escena del color seleccionado. Para elegir un color hay que pulsar el botón cuadrado que aparece junto al selector (ver colores).Cuando un gráfico deja rastro se puede apreciar su trayectoria en la escena. Pulsando el botón de limpiar se borran los rastros de los gráficos.El valor por defecto es no seleccionado y el color del rastro por defecto es gris.
    familia Este selector permite convertir un gráfico en toda una familia de gráficos dependiente de un parámetro. Al seleccionar familia se activan los otros campos de la última línea: parámetro, intervalo y pasos. y el autor puede así configurar la familia.El valor por defecto es no seleccionado.
    parámetro Debe ser una sola palabra, de preferencia corta. Por defecto es s. El nombre del parámetro se puede utilizar en la definición del objeto gráfico para definir la familia. El programa dibujará los gráficos con los valores del parámetro recorriendo el intervalo especificado en el número de pasos elegido.
    intervalo Debe contener dos expresiones reales entre corchetes y separadas por una coma, es decir, [ti,tf].El intervalo por defecto es [0,1]. El parámetro recorre el intervalo definido entre ti y tf en el número de pasos especificado.
    pasos El parámetro recorre el intervalo definido entre el primero y el segundo valor en el número de pasos especificado y dibuja la curva como un polígono con vértices (f(t),g(t)) cont = ti,t = ti+(tf-ti)/pasos,t = ti+2*(tf-ti)/pasos,etc… hasta llegar at = ti+pasos*(tf-ti)/pasos = tf.En otras palabras, pasos es el  número de subintervalos iguales en que se divide el intervalo. y el parámetro pasa por los extremos de los subintervalos.
    texto Es una etiqueta que acompaña al objeto gráfico y se escribe cerca de su posición o algo que puede considerarse como su posición. Por ejemplo en un punto se escribe un poco arriba y a la derecha.Los textos se dibujan en el mismo color que el objeto gráfico.Los textos pueden tener varias líneas y además pueden incluir valores numéricos variables (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.
    coord_abs Hace que el gráfico se interprete en pixels y en coordenadas absolutas con el origen en el vértice superior izquierdo del rectángulo del espacio al que pertenece el gráfico y la escala igual a 1 pixel por unidad.Los gráficos definidos en coordenadas absolutas no se mueven al cambiar el origen del sistema o la escala.
    tamaño Para puntos: es el radio del «punto». En realidad el programa dibuja un disco de radio tamaño. Si tamaño=0 el punto no se dibuja. Esto último puede aprovecharse para dibujar textos asociados a puntos visibles, usando las coordenadas del espacio.Para segmentos: es el radio de los extremos del segmento, que se dibujan como dos discos.Para sucesiones: es el radio de los «puntos» de la sucesión. En realidad el programa dibuja discos de radio tamaño. Si tamaño=0 los puntos no se dibujan.

     

  • Controles

    Un objeto que sirve para que el usuario o usuaria modifique los parámetros que intervienen en una escena se llama un control. Descartes cuenta con cinco tipos de controles: numérico, gráfico, texto, audio y vídeo.

    Los controles numéricos o pulsadores sirven para modificar el valor de un solo parámetro. Éste es un ejemplo de un control numérico para un parámetro p :

    A la izquierda aparece el nombre del parámetro (o del control). A la derecha aparece un campo de texto que exhibe el valor actual del parámetro y al centro dos flechas, llamadas pulsadores, que sirven para aumentar o disminuir en una cantidad predeterminada el valor del parámetro. Puede descargar la escena desde este enlace. Un detalle de los controles numéricos lo tiene en este artículo.

    Los controles gráficos son objetos que aparecen sobre la escena y que puede arrastrar con el ratón o con las flechas del teclado, con lo cual modifica en realidad un punto de la escena cuyas  coordenadas se pueden usar como parámetros de la escena. Los controles gráficos se representan por pequeños discos cuyo radio y color pueden ser elegidos por el autor o autora. El siguiente ejemplo contiene dos controles gráficos etiquetados con las letras A y B. Puede descargarlo desde este enlace.

    Un detalle sobre los controles gráficos lo tiene en este artículo.

    Los controles de texto son áreas en las que el usuario puede escribir o corregir textos y fórmulas y comprobar si lo hizo correctamente, comparando con el modelo dado por el autor al que se puede acceder pulsando el botón S (de Solución). En DescartesJS no está disponible la opción de edición de fórmulas en campos de texto.

    He aquí un ejemplo para el intérprete de Descartes5 por lo que necesitará Java y autorizar la ejecución del mismo. Puede descargarlo desde este enlace.

    Un detalle sobre este tipo de controles de texto lo tiene en este artículo.

    Finalmente se cuenta con controles para audio y vídeo. La siguiente escena muestra un control de audio y un control de video que puede ser reproducido/pausado/parado bien desde el propio reproductor del control o a través de unos controles numéricos tipo botón.

    Puede descargar la escena anterior desde este enlace. Un detalle sobre los controles de audio y vídeo lo tiene en el siguiente artículo.

    Para crear y editar controles tanto gráficos, numéricos como de texto, hay que abrir la ventana de edición de configuraciones (pulsando config) y seleccionar Controles:

    controles

    Al hacerlo aparece el Panel de configuración de Controles que tiene este aspecto:

    confControl

    Nota: Si se hace un clic sobre la etiqueta azul de Controles, aparecerá una ventana con un área de texto que contiene el código de todos los controles, 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.

    confControl

  • Ejercicios con gráficos 3D – Relaciones espaciales

    Descripción del ejercicio

    En este apartado, construiremos una escena que muestre un cubo compuesto por varios bloques generados aleatoriamente. Debemos incluir un texto que pregunte por el número de bloques y otro texto que muestre “correcto” o “incorrecto”, según la respuesta.

    Tamaño de la escena.  Debemos cambiar las dimensiones de la escena a 600×400.

    Espacio de trabajo. Insertaremos un espacio 3D con las características que  se observan en la imagen de abajo. Asignamos 50 al desplazamiento en y (0.y = 50), -100 al desplazamiento en x (O.x = -100), escala de 90, despliegue pintor y una imagen de fondo.

    rel1

    Controles. Usaremos tres controles.

    Control de escala. El programa Descartes trae un control de escala que usaremos en otra sesión. Por ahora añadimos, al interior de la escena, un control numérico tipo barra identificado por la letra a (id) y de nombre Escala. El valor inicial es de 1.5, incremento de 0.1, mínimo 1.5 y máximo 3, con posición en el sur (parte inferior de la escena).

    Control de inicio. Añadimos un control numérico tipo botón con el siguiente nombre “Otro ejercicio”, con posición y tamaño definidos por (E1._w-125, 10, 120,30) y cuya acción será similar a la de inicio; sin embargo, el efecto es recalcular las variables usadas en la escena, de tal forma que se reinicie.

    rel1b

     Control para pregunta.  Insertamos un control numérico tipo campo de texto cuya posición, como en el primer control, será en el sur de la escena. El nombre de este control es “¿cuántos bloques hay?” Su identificación (id) será n3 (ver imagen siguiente).

    rel2

    Es importante modificar el alto de los controles que se ubican en la parte inferior de la escena, para facilitar la interacción en dispositivos móviles. Para ello, en la opción botones, hacemos el cambio como se indica en la siguiente imagen:

    rel2b

    Algoritmo de inicio. Usaremos cinco variablesr, cuyos valores iniciales son números aleatorios. Si bien el cubo es un paralelepípedo que tiene sus tres dimensiones iguales, generaremos tres variables que harán variar las divisiones en cada uno de los lados del cubo. Para este efecto, hablaremos de largo, ancho y alto.

    •  Largo. Definido por  p = ent(rnd*4)+1. La usaremos para generar aleatoriamente el número de divisiones que tendrá el largo del cubo. Varía entre 1 y 4.
    •  Ancho. Definido por q = ent(rnd*5)+1. La usaremos para generar aleatoriamente el número de divisiones que tendrá el ancho del cubo. Varía entre 1 y 5.
    •  Alto. Definido por  r = ent(rnd*4)+1. La usaremos para generar aleatoriamente el número de divisiones que tendrá la altura del cubo. Varía entre 1 y 4.

     Rotaciones del espacio. Otro efecto que añadiremos es la rotación aleatoria del espacio E1. El Nippe Descartes ofrece un parámetro que permite este tipo de rotación.

    • E1.rot.z. Permite rotar el espacio E1 alrededor del eje z un número de grados asignados. Por ejemplo, E1.rot.z = 30 lo hará rotar 30 grados.
    • E1.rot.y. Permite rotar el espacio E1 alrededor del eje y un número de grados asignados. Por ejemplo, E1.rot.y = 30 lo hará rotar 30 grados.

    De acuerdo a lo anterior, insertaremos en el algoritmo de inicio las variables, tal como se indica en la imagen:

    rel3

    • E1.rot.z = ent(45*rnd)+10. Permite rotar el espacio alrededor del eje z un valor de n grados, donde n varía entre 10 y 54 grados.
    • E1.rot.y = ent(25*rnd)+10. Permite rotar el espacio alrededor del eje y un valor de n grados, donde n varía entre 10 y 34 grados.

    Gráficos 3D.  Usaremos seis superficies y tres textos.

    rel4Cara 1 del cubo.  Insertamos una superficie cuya expresión es “x=a*u y=a*v z=0”. Es decir, un plano sobre xy. Observemos que el tamaño en que podemos ver el plano depende del factor de escala que llamamos a. Por defecto este plano se dibujaría como la primera imagen de abajo (izquierda). Si activamos las aristas, la imagen cambia (ver imagen central) a un plano dividido por siete líneas en cada uno de sus lados, dado que Nu = 7 y Nv = 7. Si cambiamos estos valores por Nu = p y Nv = q, las aristas variarán aleatoriamente cada vez que hacemos clic en el botón Otro ejercicio. Finalmente, debemos escoger un color para esta cara.

    rel5

    rel6Cara 2 del cubo. Insertamos otra superficie cuya expresión es la de cara anterior. Es decir, expresión: x=a*u y=a*v z=0. La rotaremos 90 grados alrededor del eje x, para ello usamos un rotini de (90, 0, 0). Si observamos la figura del lado derecho comprenderemos lo que estamos haciendo. Para garantizar que las divisiones del lado común sean iguales, usaremos Nu = p (Nu va sobre el eje x). La otra dimensión es el alto del cubo, es decir Nv = r. Terminamos esta cara activando las aristas y usando otro color.

    Cara 3 del cubo. Insertamos una superficie igual a la anterior. Lo único que cambiaremos es su posición a un posini de (0, a, 0). De esa manera creamos una cara paralela a la anterior. Activa aristas y cambia color.

    rel7

    rel8Cara 4 del cubo. Insertamos una superficie igual a la anterior cambiando posini a (0, 0, a) y rotini a (0, 0, 0). De esa manera creamos la cara superior del cubo. Como esta cara es paralela a la primera, entonces Nu = p y Nv = q. Activamos aristas y cambiamos el color.

    rel9Cara 5 del cubo. Insertamos una superficie con expresión igual a las anteriores. Es decir x=a*u y=a*v z=0. Para esta cara veremos la utilidad de lo que aprendimos en la clase 13. La cara inicial es la de color amarillo de la imagen derecha. La cara de color rojo es la segunda cara que agregamos. La cara que vamos a agregar es la de color magenta. Para lograr esta cara debemos desplazar la amarilla a lo largo del eje x con un posini de (a, 0, 0) y rotarla alrededor del eje y con un rotini  de (0, -90, 0). Nu = r y Nv = q ¿por qué?

    Activamos aristas y usamos otro color.

    Cara 6 del cubo. Esta cara es igual a la anterior (cara opuesta) con posini (0, 0, 0). Activamos aristas y usamos otro color.

    Texto 1. Este texto escribirá el mensaje “¡Correcto!” cuando n3 = p*q*r, que ubicaremos en [20, 200]. Observemos en la imagen de abajo un ejemplo de la escena.

    rel10

    Texto 2. Este texto escribirá el mensaje “¡Incorrecto!” cuando n3 es diferente de p*q*r y mayor que cero (esta última condición, para evitar que aparezca al inicio de la escena). Lo ubicaremos en [20, 150]. El programa Descartes representa el símbolo de “diferente” con la combinación de estos dos símbolos !=. De acuerdo con lo anterior, el texto aparecerá  cuando esta condición sea verdadera: dibujar-si = (n3!=p*q*r)&(n3>0).

    Texto 3. Este texto escribirá el mensaje “Escribe el número y presiona ENTER” en la posición [5, 360].

    Texto 4. Un título para la escena, similar al que aparece en la escena final:

    EJERCICIOS

    Con lo aprendido anteriormente,  proponemos realizar ejercicios más complejos, como los que se describen a continuación:

    Ejercicio 1.  Construir una escena que muestre un cubo compuesto por varios bloques generados aleatoriamente. Las divisiones del alto deben ser iguales a las del largo. La escena final que se espera es la siguiente:

    Ejercicio 2.  Construir una escena que muestre un cubo compuesto por varios bloques generados aleatoriamente y un paralelepípedo compuesto, también de bloques aleatorios, ubicados sobre la cara superior del cubo. El alto del paralelepípedo no tiene divisiones.

    Ejercicio 3. Construir una escena que muestre un cubo compuesto por varios bloques generados aleatoriamente. Las divisiones del alto son sólo dos. De la división superior se deben restar algunos bloques.

    Puede descargarse todas las escenas anteriores desde este enlace.

    ¡Eso es todo!