AAD Algotithms Aided Design Parametric - Arturo Tesdechi
AAD Algotithms Aided Design Parametric - Arturo Tesdechi
AAD Algotithms Aided Design Parametric - Arturo Tesdechi
Los arquitectos siempre han dibujado antes de construir, acto que diferencia la
arquitectura de la mera construcción. Los dibujos han sido el medio de los
arquitectos para organizar ideas, recursos, espacio, etc. y representan la facultad
de los arquitectos para predecir los resultados del diseño. A medida que han
evolucionado los métodos de representación, han surgido nuevos estilos.
Herramientas como la perspectiva en el Renacimiento y la geometría proyectiva en el
Modernismo han marcado avances en el diseño. Sin embargo, estas herramientas han
dependido de un conjunto estable de instrumentos durante siglos: papel, utensilios
de dibujo, regla y brújula. En este modelo cada acto creativo se traduce en un
alfabeto geométrico mediante gestos que establecen un vínculo directo entre la idea
y el signo.
PÁGINA 22
Modelado algorítmico
NOTA 2
El término "algoritmo" lleva el nombre del matemático persa del siglo IX Al-
Khwarizmi.
Los algoritmos constan de diferentes clases, una clase de algoritmo que conduce a
un número se llama procedimiento de cálculo, mientras que un algoritmo que genera
sí o no se llama procedimiento de decisión. Los algoritmos también pueden generar
geometrías. Por ejemplo, si se utiliza un editor integrado dentro de CAD u otro
software de modelado, se crea una geometría 3D manipulando el conjunto estándar de
primitivas proporcionadas por el software o definidas por procedimientos mediante
una secuencia de instrucciones. Por ejemplo, una línea se puede definir por dos
puntos, un inicio y un final; los puntos a su vez se pueden definir por sus
coordenadas {x, y, z}. Por ejemplo, un modelo de jarrón se puede definir como una
revolución de una curva de perfil alrededor de un eje, y se pueden obtener objetos
más complejos estableciendo un conjunto de reglas.
• el editor (A);
• el entorno de modelado 3D (B).
• el algoritmo;
• la salida del algoritmo, constituida por geometría asociativa 3D o 2D.
La salida final no es sólo una "señal digital", sino que puede considerarse como un
modelo digital interactivo que responde a variaciones en la entrada manipulando
todo el sistema. Por ejemplo, si las coordenadas de los puntos se cambian de {x, y,
z} a {x \ y ', z'} de la línea mencionada, el algoritmo mantiene la relación
establecida de que la línea está definida por los dos puntos y no por su ubicación.
. Los algoritmos establecen relaciones asociativas entre diferentes entidades como
números, primitivas geométricas y datos. Por ejemplo, las geometrías complejas se
pueden definir mediante una secuencia inequívoca de instrucciones que impulsan las
interrelaciones. El diseño de algoritmos permite a los usuarios diseñar un proceso
en lugar de un solo objeto.
Bruce Mau, en su Manifiesto incompleto para el crecimiento de 1998, afirma que "un
proceso es más importante que el resultado. Cuando el resultado impulsa el proceso,
solo llegaremos a donde ya hemos estado. Si el proceso impulsa el resultado, es
posible que no sepamos dónde vamos, pero lo haremos, ahora queremos estar ahí". La
cita de Mau resume el concepto central del diseño algorítmico; el potencial para
generar y controlar la complejidad del diseño más allá de las capacidades humanas.
Un conjunto de reglas y restricciones asociativas bien definidas puede dar lugar a
formas sin precedentes o resultados impredecibles y coherentes con los parámetros
establecidos. El diseño algorítmico permite a los diseñadores encontrar nuevas
soluciones y superar las limitaciones del software CAD tradicional y los
modeladores 3D.
Los algoritmos pueden definir todo tipo de geometría. El método para construir
geometrías procedimentalmente se basa en escribir un borrador y traducirlo a un
lenguaje de programación. Por ejemplo, la imagen a continuación se puede dibujar
escribiendo la siguiente lista de instrucciones:
Muchos software han permitido a los usuarios interactuar con objetos digitales
mediante una manipulación directa o mediante diagramas basados en nodos. Los
sistemas de software basados en nodos, como Generative Components® de Bentley
Systems y Grasshopper® de Robert McNeel & Associates, son dos softwares que
permiten a los usuarios construir geometrías complejas asociando primitivas
paramétricas. Las secuencias de comandos visuales hacen posible un proceso en el
que se puede construir una línea conectando dos objetos puntuales, un cuadrado
conectando cuatro objetos de línea, etc.
Los diagramas de nodos se pueden utilizar para crear geometrías. Por ejemplo, la
siguiente figura es la transposición visual del algoritmo "redactado" en la página
26.
El diagrama consta de nodos y conexiones. Los nodos cuadrados son las funciones
principales: dibujar un círculo, dividir un círculo, crear una línea. Los nodos
circulares son los parámetros: el radio de cada círculo y el número de
subdivisiones. La salida del diagrama es la misma geometría generada a través del
procedimiento paso a paso mostrado anteriormente.
La geometría se puede modificar aún más manipulando uno de los parámetros (R), el
radio de (R3) se incrementa en la figura.
La geometría se puede modificar una vez más manipulando (R1, R2, R3, R4) como se
muestra en la figura.
"Si bien los atributos de las primitivas gráficas / digitales [...] se determinan y
fijan completamente en cualquier momento, dentro del diagrama paramétrico siguen
siendo variables. Esta variabilidad podría estar restringida dentro de un rango
definido sobre la base de funciones asociativas que imbuyen el proceso diagramático
con una inteligencia incorporada "^.
PÁGINA 40
2. Componentes de entrada
PÁGINA 69
Un algoritmo se puede imaginar como una red de flujos de datos y, para operar
selectivamente en la red, es necesario filtrar, desviar y modificar datos para
manipular virtualmente la geometría. Dentro de este contexto, las matemáticas y la
lógica son el mouse y el teclado.
2.1 filtros
Una operación simple como conectar dos puntos arbitrarios entre el conjunto de 22
puntos de división (ver siguiente imagen), parece imposible de conseguir usando el
componente Línea, ya que aún no conocemos las técnicas para seleccionar elementos
individuales.
Grasshopper clasifica los datos según la forma en que se configuran. Por ejemplo,
los objetos establecidos en Rhino se organizarán en Grasshopper en el mismo orden
en que se seleccionan en Rhino. En el caso de Dividir curva, los puntos se ordenan
según la dirección de la curva.
De esta manera, se pueden generar dos líneas especificando dos elementos de índice
de la salida P utilizando el componente Elemento de lista.
El componente List Item se puede utilizar para filtrar cualquier dato formateado en
una lista. Por ejemplo, el componente List Item se puede utilizar para seleccionar
un círculo específico dentro de una lista de círculos.
El componente Cull Index {Sets> Sequence) realiza la acción inversa del componente
List Item:
Los modelos repetidos pueden basarse en patrones de más de dos declaraciones. Como
se muestra en la siguiente imagen, el Cull Pattern se basa en una repetición de
tres valores booleanos (Verdadero, Verdadero, Falso).
El componente Shift List (Sets> List) desplaza los números de índice, hacia arriba
o hacia abajo. La entrada S del componente es el desplazamiento de desplazamiento,
la entrada L es la lista para cambiar y la entrada W (Wrap) es un parámetro
booleano que declara si el desplazamiento resultante debe volver a agregarse. Los
números negativos desplazan la lista hacia abajo y los números positivos hacia
arriba. Por ejemplo, si el desplazamiento de desplazamiento (S) se establece en -3
y el ajuste (W) se establece en verdadero, los índices originales de la lista se
desplazan 3 unidades hacia el final de la lista y la lista se vuelve a agregar, lo
que significa que los tres índices inferiores 8, 9 y 10 se convierten en índices 0,
1 y 2 respectivamente.
El componente Cull Index se puede utilizar para eliminar la línea que conecta el
índice 10 de la Curva 01 con el índice 0 de la Curva 02, especificando el número de
índice.
El componente Split List (Conjuntos> Lista) divide una lista de entrada única en un
índice específico en dos listas A y B.
El componente List Length (Conjuntos> Lista) calcula cuántos elementos hay en una
lista. Para mostrar la longitud de las listas, conecte un panel a la salida L de
List Length.
Los componentes Series, Repeat Data, Random y Range crean y manipulan secuencias
numéricas para crear listas que gestionan la geometría.
2.2.1 Serie
El componente Serie puede crear infinitas secuencias numéricas únicas que aumentan
o disminuyen según los parámetros de entrada.
La serie se usa a menudo junto con componentes de transformación, como Move, para
obtener múltiples transformaciones. El componente Mover (Transformar> Euclidiano)
traduce una geometría (G) según un vector (T). El componente Serie describe una
lista de valores escalares que se pueden multiplicar por un vector unitario para
definir un vector de traslación (T) para el componente Mover. Por ejemplo, un cubo
definido por Rhino se puede trasladar a lo largo del eje x utilizando el componente
Mover junto con el componente Serie. El componente Serie genera la secuencia
numérica (0, 2, 4, 6, 8) de valores escalares que se multiplican por un vector
unitario en la dirección x, lo que da como resultado los vectores de traslación
(Ox, 2x, 4x, 6x, 8x).
Si desea mostrar solo los cubos traducidos (salida de Move), debe deshabilitar la
vista previa de Geometría, así como la vista previa del objeto inicial en Rhino
(comando Ocultar objetos).
Por ejemplo, si (S) es igual a 3, (N) es igual a 1,5 y (C) es igual a 5, resultará
la secuencia (3,0, 4,5, 6,0, 7,5, 9,0). Si la secuencia se multiplica por el vector
Unidad X, se definirán los vectores de traslación (3.0x, 4.5x, 6.Ox, 7.5x, 9.Ox).
La introducción de los vectores de traslación en la entrada T del componente Move
define la traslación One Dimension. El primer vector de traslación es 3.Ox, lo que
significa que la primera geometría trasladada no se superpondrá con la geometría
del conjunto de Rhino.
Por lo general, un componente recibe dos o más cables y la misma cantidad de flujos
de datos. Cuando los datos ingresan a un componente, se combinan de acuerdo con una
lógica predeterminada que debe entenderse para obtener resultados específicos. Un
ejemplo explicará este concepto. A partir del algoritmo anterior, nuestro objetivo
es obtener la siguiente cuadrícula de cubos (basada en una cuadrícula de 5 x 5).
Como primer intento, podemos modificar el algoritmo agregando un nuevo componente
Move conectado a una Serie para trasladar los cinco cubos (salida del primer Move)
de acuerdo con el eje y.
Tal resultado depende de una lógica particular llamada "Coincidencia de datos" que,
por defecto, coincide, uno por uno, con los elementos correspondientes de
diferentes listas que entran en el mismo componente. En el ejemplo, el segundo
componente Move coincide con dos flujos, el primero transfiere geometrías (entrada
G) y el segundo transfiere vectores (entrada T). Según esta lógica, el componente
Move mueve la primera geometría según el primer vector (longitud 0), la segunda
geometría según el segundo vector (cuya longitud es 2) y así sucesivamente.
Para obtener la cuadrícula. Grasshopper debe mover cada cubo de acuerdo con todos
los vectores. Esto implica que tenemos que manipular la lógica de emparejamiento.
• El modo Lista más corta hace coincidir cada elemento de la primera lista con el
elemento correspondiente de la segunda lista. Si las listas no tienen la misma
longitud, la longitud de la lista más corta reducirá la lista más larga a la misma
longitud.
• El modo Lista más larga (método predeterminado) hace coincidir cada elemento de
la primera lista con el elemento correspondiente de la segunda lista. Si las listas
no tienen la misma longitud, el último punto de la lista más corta se conectará a
los puntos restantes de la lista más larga.
El algoritmo utiliza los mismos tres controles deslizantes numéricos para alimentar
los componentes de las tres series. De esta manera podemos cambiar la distancia
entre cubos (en las tres direcciones) actuando sobre el control deslizante
conectado a la entrada N de las tres Series (en nuestro ejemplo, el cubo inicial
tiene una longitud de lado igual a 1).
Otro componente útil es Repetir datos (Conjuntos> Secuencia) que extiende una
secuencia numérica a una longitud especificada repitiendo los datos de entrada. La
entrada D del componente recopila un conjunto definido de números y la entrada L
define la longitud de la lista de salida. Por ejemplo, si los números (2,6,1) se
combinan en una sola lista conectada a la entrada D de Repetir datos, la lista
resultante es (2, 6,1, 2, 6) si la entrada L es establecido en 5.
La salida del componente Repeat data se puede utilizar para definir geometría
secuencial. Para visualizar cómo Repeat Data puede manipular la geometría, se
utilizará un algoritmo simple para obtener la siguiente superficie.
Luego, la salida de la curva de división (P) de la curva 01, los puntos trasladados
y la salida de la curva de división (P) de la curva 02 se conectan en las ranuras
A, B, C del componente Arco 3Pt (Curva> Primitiva) respectivamente. .
Por último, la salida A del componente Arc 3Pt se conecta a la entrada C del
componente Loft (Surface> Freeform) para generar una superficie loft, definida como
una superficie a través de un conjunto de curvas de sección.
El componente Random (Sets> Sequence) genera una lista de (N) números aleatorios
dentro de un dominio numérico definido (R). La entrada S especifica el valor
semilla del componente, si el valor semilla se cambia y todas las demás entradas
permanecen iguales, se generará una nueva lista de valores aleatorios. De forma
predeterminada, el componente Random genera números reales. Para especificar
números enteros, haga clic con el botón derecho en el componente Random y
seleccione la opción Números enteros del menú contextual y aparecerá una bandera de
Enteros negra en la parte inferior del componente. El componente Construct Domain
(Maths> Domain) se utiliza para definir un dominio numérico entre dos extremos
numéricos. Por ejemplo, un dominio definido entre un valor mínimo de 2 y un valor
máximo de 8 se conecta a un componente Random especificando que se va a generar una
lista con cinco elementos. La salida del componente aleatorio son cinco números
aleatorios dentro del dominio numérico.
2.2.5 Range
El componente Evaluate F(x), puede definir una función al hacer doble clic en el
nodo para mostrar el Expression designer. Por ejemplo, una parábola puede definirse
por la ecuación explícita y = x ^ 2, así que se escribiría en el Expression
designer. El operador cuadrado se puede encontrar dentro de la biblioteca de
operadores y una lista completa de funciones y sus firmas están disponibles
haciendo clic en el botón f: n> r (en la esquina superior derecha).
2. Definiendo un dominio
Para que una función devuelva un resultado, la función requiere valores numéricos
como entrada. El componente Construct Domain junto con el componente Range pueden
generar salida numérica. Por ejemplo, si se conecta un dominio [-2,2] a un
componente de rango con N establecido a 10,11 valores, que se dividen igualmente
con respecto al dominio. Los valores numéricos de salida se pueden usar como
entrada para el componente Evaluate F (X).
Cada punto de una curva matemática plana tiene dos coordenadas, X e Y, donde X es
un valor del dominio y Y el co-dominio de salida. Si las salidas del componente del
Range (R) y el componente Evaluate (R) están conectadas al componente Construct
Point en las ranuras (x) y (y) respectivamente, se generará un conjunto de puntos
que definen la apariencia gráfica de la función. Se puede dibujar una curva a
través de estos puntos utilizando el componente Interpolate Curve (Curve> spline)
Para generar una superficie a partir de una función de dos variables: primero,
defina una ecuación y la segunda defina el dominio. Luego, construye puntos con la
salida respectiva (XI, YI, ZI) e interpolan una superficie a través de los puntos.
Las funciones de dos variables tienen un dominio bidimensional, lo que significa
que se requieren valores de entrada para (xi) y (yi) para ser definidos.
Por ejemplo, un paraboloide puede ser definido por la ecuación; z = - ((x2 + y2) /
4) +4. Para generar una cuadrícula de puntos para definir una superficie
paraboloide, se requieren las listas de entrada (XI) y (Yi) para que se
"referenciadas" antes de evaluar la función.
El componente Evaluate genera una coordenada (zi) para cada par de entrada (xi, yi)
basada en la ecuación especificada. El componente Construct Point combina los datos
de las listas de salida (xi), (yi) y (zi) en un punto (xi, yi, zi).
La siguiente imagen ilustra cómo es posible obtener la configuración real del Museo
Británico, el gran techo de la corte se refiere a las ecuaciones publicadas por
Chris JK Williams ^. La forma de los techos se genera por una suma de tres
ecuaciones de dos variables.
2.4 Condiciones
El componente Evaluate no solo es útil para crear curvas y superficies a partir de
ecuaciones específicas, sino que también nos permite definir condiciones en
Grasshopper. A menudo, es crucial que un algoritmo realice diferentes operaciones
si se cumple o no una condición. Se puede establecer una condición en la entrada F
de Evaluate (como alternativa, puede escribir la condición dentro del editor del
Diseñador de expresiones) y puede incluir un número arbitrario de variables (x,
y, ...).
Las declaraciones condicionales se pueden utilizar para definir Cull Patterns. Por
ejemplo, un conjunto de círculos cuyo radio se calcula utilizando el componente
Deconstruct Arc / DArc (Curva> Análisis) se comparan con el enunciado condicional
R> 8, los círculos que satisfacen esta condición se extruyen 20 unidades en la
dirección z, círculos que no satisfacen esta condición son sacrificados.
El componente Remap Numbers (Maths> Domain) evalúa una lista de números que van de
A a B y los redimensiona proporcionalmente a un nuevo dominio numérico A'a B'. El
componente Remap requiere una lista para reasignar (V), un dominio de origen (S) y
un dominio de destino (T). El dominio de origen de la secuencia numérica se puede
encontrar usando el componente Bounds (Matemáticas> Dominio), mientras que el
dominio de destino se especifica usando el componente Construct Domain. Por
ejemplo, la lista de números (2, 4, 6, 8) cuyo dominio de origen es [2,8] se puede
reasignar a un nuevo dominio [0,1], dando como resultado la lista de valores (0.0,
0.33, 0.67, 1.0)
2.5.1 Atractores
Una curva también se puede utilizar como atractor mediante el componente Curve
Closest Point (Curve> Analysis). El componente Curve Closest Point mide la
distancia (D) entre el centro de cada círculo y el punto más cercano de la curva.
Los factores de escala se pueden visualizar utilizando el componente Gradient.
Los valores reasignados también se pueden usar para mover los puntos del centroide.
Por ejemplo, los puntos se pueden mover en la dirección z. Cambiar el dominio
reasignado a [3,15] enfatiza la traducción cuando la multiplicación escalar se
lleva a cabo dentro del componente Unit Z.
Una curva NURBS es una curva matemática definida por su grado, un conjunto de
puntos de control ponderados, un vector de nudos y una regla de evaluación:
• Grado: un número entero positivo. Por ejemplo, las líneas NURBS y las polilíneas
NURBS son de grado 1, los círculos NURBS son de grado 2 y la mayoría de las curvas
de forma libre son de grado 3 o 5. El valor igual a grado + 1 se llama orden.
• Puntos de control: Una curva NURBS está condicionada por la posición y el peso de
los puntos de control. Los pesos regulan la atracción entre los puntos de control y
la curva; un peso> 1 atrae la curva y un peso entre 0 y 1 repele la curva. El
número de puntos de control no puede ser menor que el orden (grado + 1).
• Nudos: son una lista de (grados + N-1) números, que controlan la suavidad de una
curva.
• Regla de evaluación: es una fórmula que ingresa: grado, puntos de control y nudos
y da salida a la ubicación de un punto.
FIGURA 3.1
Una curva NURBS con 7 puntos de control.
FIGURA 3.2
Curvas NURBS con 7 puntos de control y diferente grado.
La siguiente imagen muestra cómo el peso de los puntos de control afecta una curva
NURBS.
GRÁFICO 3.3
Un punto de control con un peso> 1 atrae la curva,
por el contrario, un punto de control con un peso entre 0 y 1 empuja fuera de la
curva.
FIGURA 3.4
Cada punto de una curva NURBS está definido por un triplete de coordenadas.
FIGURA 3.5
La opción Reparametrizar está disponible dentro del menú contextual del componente
Curva.
De manera similar, la salida t del componente Divide Curve se puede usar como un
parámetro de división.
3.4 Noción de curvatura para curvas planas
k = 1 / r {1]
Al igual que las curvas, las superficies se pueden asociar a un LCS. Los parámetros
U y V (que oscilan entre 0 y 1) operan de manera similar para superficies como el
parámetro t opera para curvas.
Para cada valor de {u}, se puede encontrar que los puntos P (u1, v) constituyen la
"curva de sección" C 1. Como sigue, para cada valor de {v} se puede encontrar que P
(u, v1) constituyen la "curva de sección" C2. Las curvas C1 y C2 se denominan
isocurvas o curvas isoparamétricas. En particular, C1 y C2 son las curvas
isoparamétricas de la superficie (S) en P (u1, v1). Una isocurva es una curva con
valores constantes de u o v en una superficie. Las isocurvas crean una cuadrícula
rectangular que generaliza la noción de cuadrícula cartesiana en una superficie
curvada. Este concepto es válido para todas las superficies de forma libre, ya que
una superficie NURBS siempre se puede imaginar como la deformación de una
superficie plana-rectangular. Además, las superficies tienen dominios
bidimensionales (o dominio) con ejes u y v definidos.
• Boundary Surface: crea una superficie plana recortada o sin recortar a partir de
una colección de curvas con un límite perimetral. El componente Boundary Surface
(Freeform> Surface) requiere curvas cerradas planas y continuas para dar como
resultado una superficie.
• Surface from Points: crea una superficie a partir de una cuadrícula de puntos. El
componente Surface from Points (Freeform> Surface) es útil para crear superficies a
partir de otras superficies, o como se discutió en 2.3.2 a partir de funciones
matemáticas.
• Edge Surface: crea una superficie a partir de dos, tres o cuatro curvas. El
componente Edge Surface (Freeform > Surface) interpola una superficie a partir de
curvas de borde ordenadas.
• Patch: ajusta una superficie a través de un conjunto de puntos o curvas que están
abiertas o cerradas. El componente Patch (Freeform > Surfaces) genera una serie de
curvas perpendiculares, llamadas vanos, a partir de curvas de entrada que componen
una superficie recortada o sin recortar. Las curvas de tramo rara vez son paralelas
a cualquier borde de la superficie de salida, por lo que el componente Patch se
utiliza cuando no es posible realizar otros métodos.
• Network Surface: opera en dos conjuntos de curvas ordenadas para crear una sola
superficie. El componente Network Surface (Freeform > Surfaces) requiere curvas en
la dirección u y las curvas en la dirección v. La entrada C especifica el tipo de
continuidad de la superficie (0 = Suelta, 1 = Posición, 2 = Tangencia, 3 =
Curvatura. El componente Network Surface permite un mayor control de los bordes de
las superficies, en comparación con el componente Loft.
• Sweep 1 y Sweep 2: genera una superficie usando una curva de sección S barrida a
lo largo de una o dos curvas de carril R. El Sweep 1 (Freeform > Surfaces) debe
usarse con una curva de carril y el Sweep 2 (Freeform > Surfaces) con dos curvas de
carril.
Las salidas del componente Evaluate Surface: un punto (P) expresado en el WCS, un
vector normal (N) en P y un plano tangente (F) en P. La dimensión mostrada de los
planos se puede configurar desde Display> Preview Plane.
NOTA 9
Nathan Miller es Socio Asociado y Director de Soluciones de Arquitectura e
Ingeniería en CASE, donde es responsable de liderar los esfuerzos en la estrategia
de diseño computacional y el modelado complejo y la racionalización geométrica. Su
experiencia en programas de modelado 3D y su fluidez en varios lenguajes de
programación y scripting proporcionan soluciones y capacidades de vanguardia para
importantes clientes de AECO. Las exploraciones sobre diseño computacional se
publican en su blog: http://www.theprovingground.org/
El componente Divide Surface (Surface> Util) genera una cuadrícula de puntos en una
superficie. Los puntos (P) son los vértices de intersección de una cuadrícula de
isocurvas calculadas dividiendo los ejes u y v de manera uniforme por una entrada
de número entero positivo. El componente Dividir superficie produce: vectores
normales (N) en los puntos (P), así como su coordenada local (uv).
Las superficies NURBS se pueden imaginar como un objeto geométrico compuesto por
tres entidades geométricas: caras, aristas y vértices.
Por ejemplo, si el componente Center Box (Surface> Primitive) se usa para definir
una caja con un dominio específico y el componente Surface está conectado a la
salida de la caja (B), el componente Surface se volverá rojo para mostrar un error
de falta de coincidencia de datos.
El error se produce porque la caja está constituida por seis superficies unidas en
un Brep. Para extraer superficies, la caja o Brep debe deconstruirse en superficies
utilizando el componente Deconstruct Brep.
3.7.9 División de una superficie usando curvas genéricas: componente Surface Split
Una superficie se puede dividir mediante un conjunto de curvas que coinciden con la
superficie. Por ejemplo, una curva geodésica se puede utilizar como curva de corte
para dividir una superficie en dos partes. Dada una superficie (S) y dos puntos (S)
y (E) colocados en bordes opuestos, se puede construir una geodésica (o una curva
de trayectoria más corta) entre los puntos (S) y (E) de la superficie. Una línea
geodésica puede considerarse una línea recta en un espacio curvo.
Se puede crear una cuadrícula diagonal o una cuadrícula en una superficie objetivo
utilizando la lógica de descomposición de la geometría Brep.
Dado que el algoritmo se define conectando los vértices de las sub superficies, la
cuadrícula no coincide con la superficie, excepto en el caso de las sub superficies
planas.
Para generar una cuadrícula que coincida con la superficie objetivo, el componente
Proyect (Curve> Util) se utiliza para proyectar las curvas sobre la superficie
objetivo. La salida del componente Line (L) se conecta a la entrada C del
componente Proyect, y un receptor (conexión inalámbrica) de la superficie original
se conecta a la entrada B del componente Project, proyectando la cuadrícula sobre
la superficie original. . Los segmentos de línea serán reemplazados por curvas como
la salida (C) del componente Proyect.
El algoritmo diagrid se puede ampliar para crear un marco espacial. La salida F del
componente Deconstruct Brep es un conjunto de subsuperficies, por lo que el punto
central aproximado de cada subsuperficie se puede calcular utilizando el componente
Evaluar superficie conectado a un MD Slider establecido en (0.5; 0.5). Dado que las
superficies devueltas de la salida F de Deconstruct Brep están parametrizadas de
acuerdo con el dominio de la superficie principal, deben reparametrizarse. La
salida P del componente Evaluate Surface es un conjunto de puntos que se aproximan
a los centros, y la salida N son los vectores normales a las superficies. El
componente Line SDL (Curve> Primitive) se utiliza para crear un conjunto de
segmentos de línea dados: los puntos de inicio (S) declarados por la salida P, las
direcciones (D) declaradas por la salida N y las longitudes (L) especificadas por
un slider. El componente Endpoint se utiliza para extraer los puntos finales de las
líneas que finalmente se conectan a la salida V de Deconstruct Brep, generando los
componentes restantes del marco espacial.
Dentro del conjunto de curvaturas (ka, kb, ... ki) se pueden encontrar una
curvatura principal mínima k1 y una curvatura principal máxima K2. La curva en la
que se calcula la curvatura K1, se denomina C1. De manera similar, la curvatura K2
se calcula para la curva C2.
•Planos;
•Cilindros;
•Conos;
•Conos generalizados: superficies creadas por el conjunto de líneas que pasan por
un vértice y cada punto de una curva suave;
•El Oloid. Un objeto geométrico que fue descubierto por Paul Schatz en 1929;
Se debe aplicar una estrategia diferente cuando se busca obtener una superficie
reglada desarrollable a partir de dos curvas de carril arbitrarias y fijas. Por
supuesto, no es suficiente dividir ambas curvas en partes iguales y conectar los
puntos resultantes a través de líneas "dominantes". De hecho, no se garantiza que
el ángulo de giro sea nulo para cada regla. En este caso, se deben utilizar
algoritmos específicos (disponibles como software de complemento) para buscar las
líneas dominantes desarrollables que no tienen "torsión".
[FIGURA 3.13
4 TRANSFORMACIONES
Yukihiro Matsumoto
Los capítulos anteriores han demostrado cómo las matemáticas y la lógica son la
base de modelos 3D complejos. En esta sección se introducirá una nueva capa de
complejidad, las transformaciones geométricas. En particular, el capítulo
examinará:
• Transformaciones euclidianas:
Las transformaciones euclidianas conservan longitudes o medidas de ángulos. Las
transformaciones euclidianas incluyen traslaciones, rotaciones y reflexiones.
• Transformaciones afines:
Las transformaciones afines no conservan longitudes ni medidas de ángulos. Las
transformaciones afines incluyen escalado, corte y proyecciones.
• Otras transformaciones:
Se pueden realizar transformaciones más complejas combinando transformaciones o
mediante componentes específicos como el componente Morph.
1. Geometría original;
3. Afín: escala. La escala es una transformación afín que mantiene la forma además
del paralelismo;
5. Morph.
Una transformación mide el cambio entre dos puntos P (x, y) y P '(x', y '). Para
trasladar un punto a una posición diferente, se requiere sumar o restar una
cantidad específica de sus coordenadas originales.
Esto significa que un punto alcanza una nueva posición moviéndolo una cierta
distancia, de acuerdo con una dirección y un sentido específicos. Estas tres
características definen un "vector", que es un objeto geométrico caracterizado por
dirección, sentido y magnitud (o longitud).
Por lo tanto, se puede definir una traslación especificando un punto de inicio P y
un vector de traslación V. Grasshopper proporciona varios métodos para crear
vectores y realizar operaciones en vectores.
4.1 Vectores
El panel (Vector> Vector) aloja los componentes utilizados para crear y modificar
vectores.
• Vector 2Pt:
El componente Vector 2Pt (Vector> Vector) crea un vector entre dos puntos
descritos: A (punto inicial) y B (punto final). La salida L del componente Vector
2Pt devuelve la magnitud del vector y la salida V, el vector mismo. El componente
Vector Display se puede utilizar para visualizar el vector en Rhino.
• Vector unitario:
Dado un vector con una dirección y magnitud especificadas (L) como se describe en
dos puntos, el componente Unit Vector (Vector> Vector) se puede utilizar para
unificar el vector o cambiar la magnitud a 1 unidad, sin modificar la dirección. El
componente Vector 2Pt se puede utilizar para unificar un vector de salida
conectando un conjunto de alternancia booleano en True a la entrada U.
• Amplitude:
• Multiplicación escalar:
Los componentes Unit X, Unit Y y Unit Z (Vector> Vector) definen vectores unitarios
a lo largo de los ejes X, Y y Z. La entrada (F) se puede utilizar para establecer
una longitud mediante la multiplicación escalar incrustada.
El componente Move (Transform> Euclidian) traslada una entidad geométrica (G) según
un vector (T). Por ejemplo, una caja creada usando el componente Center Box
(Surface> Primitive) se traslada en la dirección Z usando un componente Unit Z.
Si la entrada (F) del componente Unit Z está conectada con múltiples valores
numéricos, devolverá múltiples vectores, estos vectores pueden usarse para realizar
múltiples traslaciones. Por ejemplo, un edificio de varios pisos se puede modelar
conectando un componente Series a la entrada F del componente Unit Z. En este
modelo simplificado, la entrada N del componente de la serie establece la distancia
entre pisos, la entrada C establece el número total de pisos y la entrada S define
el valor inicial de la secuencia numérica. Si (S) se establece en 0, el primer piso
coincidirá con la caja original.
El componente Rotate Axis utilizado junto con el componente Series puede crear
rotaciones progresivas.
FIGURA 4.1
Rotación progresiva aplicada a un modelo simplificado de un edificio de varios
pisos.
FIGURA 4.2
La imagen ilustra diferentes configuraciones del modelo a medida que cambia el
ángulo de giro.
Página : 198
Página : 199
Página : 200
Por ejemplo, si la entrada (F) del componente Scale se suministra con una secuencia
numérica simétrica: (1, 2, 3, 4, 5, 4, 3, 2,1) resultará una forma parabólica.
Página : 201