Exercícios de Programação e Computação para Arquitectura António Menezes Leitão 18 de Dezembro de 2012
1 Processamento do Superfícies Por convenção, representámos as coordenadas de uma superfície como uma lista de listas de posições. Se o objectivo não é gerar uma superfície mas sim processar os vários quadrângulos que constituem a superfície, então temos de operar sobre essas posições em grupos de quatro. A seguinte função de ordem superior realiza essa tarefa: (define (itera-quadrangulos f ptss) (for/list ((pts0 ptss) (pts1 (cdr ptss))) (for/list ((p0 pts0) (p1 pts1) (p2 (cdr pts1)) (p3 (cdr pts0))) (f p0 p1 p2 p3)))) Para processar cada um dos quadrângulos pode ser útil determinar o seu centro e a sua normal. As seguintes funções fazem precisamente isso: (define (media a b) (/ (+ a b) 2.0)) (define (media-pontos p0 p1) (xyz (media (cx p0) (cx p1)) (media (cy p0) (cy p1)) (media (cz p0) (cz p1)))) (define (centro-quadrangulo p0 p1 p2 p3) (media-pontos (media-pontos p0 p2) (media-pontos p1 p3))) (define (normal-quadrangulo p0 p1 p2 p3) (normal-poligono (list p0 p1 p2 p3))) (define (normal-poligono pts) (norm-c (produtos-cruzados (append pts (list (car pts)))))) (define (produtos-cruzados pts) (if (null? (cdr pts)) (xyz 0 0 0) (+c (cross-c (car pts) (cadr pts)) (produtos-cruzados (cdr pts))))) 1
1.1 Exercícios Exercicio 1.1 Considere a superfície definida por: x(u, v) = u y(u, v) = v z(u, v) = 4 sin(u v) 10 π u π π v π Escreva uma função sin-u*v que, dado o número de intervalos n a considerar para cada dimensão, devolve a lista de listas de posições da superfície anterior. Visualize essa superfície. Exercicio 1.2 Usando a função itera-quadrangulos, defina a função superficie-esferas que, dada uma superfície representada por uma lista de listas de posições, gera uma união de esferas, cada uma posicionada no centro de cada quadrângulo e cujo raio é metade da menor distância entre os pontos do quadrângulo. Use a função superficie-esferas para gerar a seguinte imagem: Exercicio 1.3 Usando a função itera-quadrangulos, defina a função superficie-cones que, dada uma superfície representada por uma lista de listas de posições, gera uma união de cones, semelhante à que se apresenta na seguinte imagem: 2
Exercicio 1.4 O toro é definido parametricamente por: x = cos v(r + r cos u) y = sin v(r + r cos u) z = r sin u 0 u 2π; 0 v 2π; Crie um toro de cones semelhante ao que se apresenta em seguida: 3
Exercicio 1.5 Defina a função malha que, dada uma superfície representada por uma lista de listas de posições, gera uma forma semelhante à que se apresenta na seguinte imagem: Exercicio 1.6 Defina a função superficie-piramides que, dada uma superfície representada por uma lista de listas de posições, gera uma união de piramides, semelhante à que se apresenta na seguinte imagem: 4
Exercicio 1.7 Defina a função borbulha que, dados os quatro vértices de um quadrângulo (em sentido anti-horário), cria uma forma semelhante à borbulha que se apresenta em seguida: Exercicio 1.8 Usando a função borbulha, crie a seguinte forma: Exercicio 1.9 Usando a função borbulha, crie a seguinte forma: 5
Exercicio 1.10 Defina a função superficie-cilindros que, dada uma superfície representada por uma lista de listas de posições, gera uma união de cilindros verticais, cada um com o topo no centro de cada quadrângulo e base na cota mínima da superfície, e cujo raio é metade da menor distância entre os pontos do quadrângulo. A seguinte imagem ilustra um exemplo: 6