Aula 06

4 downloads 1515 Views 116KB Size Report
7 nov. 2008 ... Exercícios de ... Figura 1: Treliça composta por elementos triangulares iguais. a0 a1 a2 c0 c1 ... curva-trelica faz a partir de uma lista de pontos.
Exercícios de Programação e Computação para Arquitectura António Menezes Leitão 7 de Novembro de 2008

Figura 1: Treliça composta por elementos triangulares iguais. a0 c0

b0

a1 c1

b1

a2 c2

Figura 2: Esquema de ligação de barras de uma treliça em space frame.

1

Introdução

Uma treliça é uma estrutura composta por barras rígidas que se unem em nós, formando unidades triangulares, tal como se ilustra na Figura 2. Para o desenho de uma treliça, vamos considerar, como base de trabalho, três sequências arbitrárias de pontos em que cada ponto define um nó da treliça. A partir destas três sequências podemos criar as ligações que é necessário estabelecer entre cada par de nós. A Figura 2 apresenta o esquema de ligação a partir de três sequências de pontos (a0 , a1 , a2 ), (b0 , b1 ) e (c0 , c1 , c2 ). Note-se que a sequência de topo estabelecida pelos pontos bi da sequência intermédia tem sempre menos um elemento que as sequências ai e ci . Para a construção da treliça precisamos de encontrar um processo que, a partir das listas de pontos ai , bi e ci , os interligue da forma correcta. Uma vez que os pontos estão contidos em listas e que as listas são estruturas recursivas, será preferível que o processo de interligação seja também recursivo. Para as ligações entre os sucessivos pontos a0 e a1 , a1 e a2 , . . . , a solução mais simples é empregar uma função que crie os nós da treliça e estabeleça as barras que unem cada par destes nós. O mesmo faremos, naturalmente, para as sequências de pontos b0 , b1 , . . . e c0 , c1 , . . . . É precisamente isso que a função curva-trelica faz a partir de uma lista de pontos. Se a lista só contém um ponto, apenas criamos um nó para esse ponto. Caso contrário, criamos o nó para o primeiro ponto, unimo-lo com uma barra entre esse ponto e o ponto seguinte e, recursivamente, com o resto da curva. (defun curva-trelica (pontos) (if (null (cdr pontos)) (no-trelica (car pontos)) (progn (no-trelica (car pontos)) (barra-trelica (car pontos) (cadr pontos)) (curva-trelica (cdr pontos)))))

Uma vez feitas essas ligações apenas faltam os elementos triangulares. O primeiro terá os vértices a0 , b0 , c0 , o segundo a1 , b0 , c1 , o terceiro a1 , b1 , c1 , e assim sucessivamente. Reparemos que cada vértice bi participa de um triângulo 1

ai

bi

ci

ai+1 ci+1

Figura 3: Esquema de triangulação da treliça. anterior e de outro posterior, formando uma pirâmide de vértices ai , ci , ai+1 , ci+i , bi , tal como se vê na Figura 3. Notemos também que todos os pares de triângulos, excepto o primeiro e o último, partilham a ligação ai , ci . Assim, se desenharmos uma destas pirâmides de cada vez e, recursivamente, fizermos o desenho da treliça restante, i.e., para os elementos seguintes das três sequências de pontos, no final teremos a treliça completa. Falta apenas pensar na condição de paragem do processo: uma vez que a cada passo se constrói uma pirâmide e que cada pirâmide tem, no topo, um vértice bi , haverá tantas pirâmides quantos elementos na lista de pontos b. Logo, o processo deverá terminar quando essa lista fica vazia. Nessa altura, faltará apenas desenhar a última ligação an , cn . Este raciocínio é implementado pela seguinte função piramides-trelica que recebe as listas de pontos as, bs e cs: (defun piramides-trelica (as bs cs) (if (null bs) (barra-trelica (car as) (car cs)) (progn (piramide-trelica (car as) (cadr as) (car bs) (car cs) (cadr cs)) (piramides-trelica (cdr as) (cdr bs) (cdr cs)))))

Note-se a diferença entre os nomes das funções piramides-trelica e piramide-trelica. A primeira desenha todas as pirâmides enquanto a segunda apenas desenha uma pirâmide. Vamos agora definir esta função com base no esquema que apresentámos na Figura 3: (defun piramide-trelica (a0 a1 b0 c0 c1) (barra-trelica a0 b0) (barra-trelica a1 b0) (barra-trelica c0 b0) (barra-trelica c1 b0) (barra-trelica a0 c0))

Finalmente, falta apenas a função que, por intermédio das funções curva-trelica e piramides-trelica, contrói uma treliça completa a partir de três sequências de pontos. (defun trelica (as bs cs) (curva-trelica as) (curva-trelica bs) (curva-trelica cs) (piramides-trelica as bs cs))

2

Figura 4: Treliça construída a partir de pontos especificados arbitrariamente. As funções anteriores constroem treliças com base nas funções “elementares” no-trelica e barra-trelica. Embora o seu significado seja óbvio, ainda não definimos estas funções e existem várias possibilidades. Numa primeira abordagem, vamos considerar que cada nó da treliça será constituído por uma esfera onde se irão unir as barras, barras essas que serão definidas por cilindros. O raio das esferas e da base dos cilindros será determinado por uma variável global, para que possamos facilmente alterar o seu valor. Assim, temos: (setq raio-no-trelica 0.1) (defun no-trelica (p) (command "_.sphere" p raio-no-trelica)) (setq raio-barra-trelica 0.03) (defun barra-trelica (p0 p1) (command "_.cylinder" p0 raio-barra-trelica "_Axis" p1))

Podemos agora criar as treliças com as formas que entendermos. A Figura 4 mostra uma treliça desenhada a partir da expressão: (trelica (list (xyz (xyz (list (xyz (xyz (list (xyz (xyz

2

0 -1 0) (xyz 1 -1.1 0) (xyz 2 -1.4 0) (xyz 3 -1.6 4 -1.5 0) (xyz 5 -1.3 0) (xyz 6 -1.1 0) (xyz 7 -1 0.5 0 0.5) (xyz 1.5 0 1) (xyz 2.5 0 1.5) (xyz 3.5 4.5 0 1.5) (xyz 5.5 0 1.1) (xyz 6.5 0 0.8)) 0 +1 0) (xyz 1 +1.1 0) (xyz 2 +1.4 0) (xyz 3 +1.6 4 +1.5 0) (xyz 5 +1.3 0) (xyz 6 +1.1 0) (xyz 7 +1

0) 0)) 0 2) 0) 0)))

Exercícios

Exercício 2.0.1 Defina uma função denominada trelica-recta capaz de construir qualquer uma das treliças que se apresentam na imagem seguinte.

3

Para simplificar, considere que as treliças se desenvolvem segundo o eixo X. A função trelica-recta deverá receber o ponto inicial da treliça, a altura e largura da treliça e o número de nós das fileiras laterais. Com esses valores, a função deverá produzir três listas de coordenadas que passará como argumentos à função trelica. Como exemplo, considere que as três treliças apresentadas na imagem anterior foram o resultado da avaliação das expressões: (trelica-recta (xyz 0 0 0) 1.0 1.0 20) (trelica-recta (xyz 0 5 0) 2.0 1.0 20) (trelica-recta (xyz 0 10 0) 1.0 2.0 10) Exercício 2.0.2 O custo total de uma treliça é muito dependente do número de diferentes comprimentos que as barras podem ter: quanto menor for esse número, maiores economias de escala se conseguem obter e, consequentemente, mais económica fica a treliça. O caso ideal é aquele em que existe um único comprimento igual para todas as barras. Atendendo ao seguinte esquema, determine a altura h da treliça em função da largura l do módulo de modo a que todas as barras tenham o mesmo comprimento. bi

l h ai ai+1 ci ci+1 l

l

Defina ainda a função trelica-modulo que constrói uma treliça com barras todas do mesmo comprimento, orientada segundo o eixo X. A função deverá receber o ponto inicial da treliça, a largura da treliça e o número de nós das fileiras laterais. Exercício 2.0.3 Considere o desenho de uma treliça plana, tal como se apresenta na seguinte figura: b0

a0

b1

a1

bn−1

...

...

4

an−1

an

Defina uma função trelica-plana que recebe, como parâmetros, duas listas de pontos correspondentes aos pontos desde a0 até an e desde b0 até bn−1 e que cria os nós nesses pontos e as barras que os unem. Considere, como pré-definidas, as funções no-trelica que recebe um ponto como argumento e barra-trelica que recebe dois pontos como argumentos. Exercício 2.0.4 Considere o desenho da treliça especial apresentada na seguinte figura: c0 a0 c1 a1

cn an

b0

bn−1 Defina uma função trelica que recebe, como parâmetros, três listas de pontos correspondentes aos pontos desde a0 até an , desde b0 até bn−1 e desde c0 até cn e que cria os nós nesses pontos e as barras que os unem. Considere, como pré-definidas, as funções no-trelica que recebe um ponto como argumento e barra-trelica que recebe dois pontos como argumentos.

5