ETSAM - DELEGACION ALUMNOS DISEÑO PARAMÉTRICO Y ALGORITMICO - INTRODUCCION
ADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS - ARCHIOLOGICS.COM
En este caso, seleccionaremos 4 puntos, 3 correspondientes a la base de la pirámide, y el último a la altura de la misma. No importa la forma, puesto que el programa se ocupa de dividir los segmentos correspondientes independientemente de su posición. 1 -5 6
9-11 14 15
18 21-24 25-30 31-36 37-40 42 50 52-53 55-90 55 60 69-74 75-78 80-83 85
Aunque está perfectamente comentado, vamos a ver brevemente las partes más relevantes del código: Option Explicit pide a Rhino que mire que TODAS las variables se han declarado antes de usarse, esto esútil para verificar la corrección del script. Las líneas 2,3 y 5 son comentarios. Llamada a la subrutina principal Comienzo de la subrutina, que abarca hasta la línea 16, cuando se cierra. Todo el bloque enrte la línea 9 y la 16 se considera subrutina. Declaración de la variable tetrah, y adquisición de las coordenadas de los 4 puntos que se necesitan para la ejecución del script. En esta línea establecemos el límite de la subdivisión: cuando una de las aristas de la pirámide alcance la longitud especificada, el script dejará de correr. Llamada a la función principal de subdivisión “subdivideTetrahedron”, que se llamará a si misma en las líneas 80 a 83. Fíjate que la función necesita solamente los cuatro puntos de la matriz tetrah, y la condición de parada de la función. Si no introducimos dicha función, el programa correría hasta agotar la memoria del ordenador [es decir, ¡subdiviría hasta el infinito!] Comienzo de la función SubdivideTetrahedron, que se llama en la línea 15. Declaraciones de las variables que se van a usar en el script. Creación de las líneas auxiliares que nos van a permitir hacer la subdivisión [de estas líneas se obtiene el punto medio]. Otención de la longitud de cada una de dichas líneas. Creación de las cuatro superficies que constituyen las caras de la pirámide. Unión de dichas superficies en una única polisuperficie. Asignación de la longitu del primer borde como mínima distancia para comprobar si se debe continuar ejecutando el script. Borrado de las curvas auxiliares. Es aquí donde se hace el truco completo. Evaluaremos la condiciones que hemos establecido y, si procede, se llamará de nuevo a la función “subdivideTetrahedron” ¡desde ella misma! Veamos en detalle: Evaluación de la condición de longitud de artista mediante la estructura de control de flujo “If... then...end if” Borrar la polisuperficie hecha hasta ahora, ya que vamos a subdividir de nuevo Calcular todos los puntos medios que necesitamos, 6 en total. Crear las pirámides con los puntos obtenidos, son cuatro caras a partir de 6 puntos. Llamar la función de nuevo para cada uno de los tetraedros, esto es, subdividir cada una de las pirámides nuevas en tantas veces como para la orginal [el crecimiento de geometría es claramente exponencial, como puedes ver. Final de la función
2. Recursividad II: un pabellón panelizado. El pabellón que se propone surge de la misma idea de subdivisión recursiva. El fractal propuesto es semejante al triángulo de Sierpinski, pero toma cierto volumen de la manera en que se muestra en la figura 3. El triángulo medio se desplaza en la dirección normal al primero, de manera que los triángulos perimetrales se colocan con cierta pendiente. Para cada uno de estos elementos, el proceso se repite hasta que el perímetro del triángulo alcanza un límite mínimo por debajo del cual no hay más recursividad y se detiene la subdivisión.
mid 1
mid 2
mid 3
BASE SURFACE
SUBDIVISION
[Fig 3. Desarrollo del triángulo de Sierpinski modificado]
[ 47 ]
ELEVATION