programação e computação para arquitectura – 2012/2013 · instituto superior técnico...
TRANSCRIPT
Instituto Superior Técnico
Programação e Computaçãopara Arquitectura – 2012/2013
Segundo Teste/Primeiro Exame –11/01/2013
Número:
Nome:
Escreva o seu número em todas as folhas da prova. O tamanho das respostas deve ser limitado ao espaçofornecido para cada pergunta. Se tiver dúvidas de interpretação, faça suposições razoáveis e explicite-as nasua resposta. Pode usar os versos das folhas para rascunho. A prova tem 8 páginas e a duração é de 60/120minutos. A cotação de cada questão encontra-se indicada entre parêntesis. Boa sorte.
Se pretende fazer o Segundo Teste responda apenas às perguntas 9 e seguintes. Se pretende fazero Exame responda a todas as perguntas.
1. (1.0) A multiplicação inteira define-se pela fórmula
a× n = a+ a+ · · ·+ a︸ ︷︷ ︸n
(a) (0.5) A definição anterior é recursiva? Justifique a sua resposta.
A definição não é recursiva porque não está definida em termosdela própria.
(b) (0.5) Sugira uma definição matemática da multiplicação inteira que elimine quaisquer ambi-guidades na sua interpretação.
a× n =
{0, se n = 0
a+ a× (n− 1), se n ∈ N.
2. (0.5) O que é um predicado? Dê um exemplo.
É uma função que retorna verdade ou falso. A função null? é umexemplo.
Número: 2
3. (1.0) Converta as seguintes expressões da notação do Racket para a notação da aritmética:
(a) (* (/ 1 2) 3)12 × 3
(b) (* 1 (- 2 3))
1× (2− 3)
(c) (/ (+ 1 2) 3)1+2
3
(d) (/ (/ 1 2) 3)12
3
(e) (/ 1 (/ 2 3))123
(f) (- (- 1 2) 3)
(1− 2)− 3
(g) (- 1 2 3)
1− 2− 3
(h) (- (- 2) 3)
−2− 3
(i) (/ (expt (cos (/ 2 (sqrt 5))) 4) 8)cos4 2√
5
8
(j) (sqrt (/ 1 (log (expt 2 (abs (- 3 (* 9 (log 28))))))))√1
log 2|(3−9 log 28)|
4. (1.0) Defina uma função Racket que recebe uma quantidade em graus centígrados ◦C e calcula ovalor correspondente em graus fahrenheit ◦F . Note que ◦F = ◦C × 9
5 + 32.
(define (fahrenheit<-centrigados graus)(+ (* graus 9/5) 32))
5. (1.0) Defina uma função recursiva potencia que, dado um número x e um expoente inteiro nãonegativo n, calcula xn.
(define (potencia x n)(if (= n 0)
1(* n (potencia x (- n 1)))))
Número: 3
6. (1.0) Defina uma função denominada circulos-tangentes que, dado o centro p e o raio r docírculo maior e um factor de redução do raio 0 < f < 1, cria o conjunto de círculos tangentesque se apresenta em seguida. Assuma que nenhum dos círculos pode ter raio menor que 0.1:
X
Y
(define (circulos-tangentes p r f)(if (< r 0.1)
#t(begin
(circle p r)(circulos-tangentes (+y p (* (- f 1) r)) (* f r) f))))
(circulos-tangentes u0 1 0.9)
7. (1.5) Defina a função semi-esfera-agulhas que, dado um ponto P , um comprimento l, umraio r e um número n, cria n cones de comprimento l e raio r, cuja base está centrada no pontoP e cujo apex é posicionado aleatoriamente numa semi-esfera, tal como se apresenta na seguinteimagem:
(define (semi-esfera-agulhas p r rc n)(if (= n 0)
#t(begin
(cone p rc (+sph p r (random-range 0 2pi) (random-range 0 pi/2)))(semi-esfera-agulhas p r rc (- n 1)))))
(semi-esfera-agulhas (xyz 0 0 0) 3.0 0.2 200)
Número: 4
8. (3.0) Pretende-se modelar uma estante cujas prateleiras estão separadas por uma distância aleató-ria. A imagem seguinte ilustra cinco destas estantes colocadas lado a lado.
Considerando que cada estante tem um dos cantos posicionado num ponto P e tem alturah e que as prateleiras têm comprimento c, profundidade l, e espessura e, e que a separaçãoentre prateleiras, embora aleatória, está contida no intervalo entre dmin e dmax, defina a funçãoestante-aleatoria capaz de modelar uma destas estantes aleatórias. Sugestão: não tentefazer tudo com uma só função.
(define (prateleiras-aleatorias p c l e dmin dmax h)(if (< h dmax)
#t(let ((d (random-range dmin dmax)))(box p c l e)(prateleiras-aleatorias(+z p d)c l edmin dmax (- h d)))))
(define (coluna-estante-aleatoria p c l e dmin dmax h)(box p e l h)(box (+x p (- c e)) e l h)(box (+z p h) c l e)(prateleiras-aleatorias (+x p e) (- c e e) l e dmin dmax h))
Número: 5
9. (1.0) Considere uma torre cujos pisos possuem a forma de cilindros todos com a mesma altura, talcomo se ilustra de seguida. Considere ainda que o cilindro maior está centrado no ponto P , temraio r e altura h. A diferença de raio entre dois cilindros adjacentes é ∆r e é igual para todos oscilindros. Considere ainda que a torre é constituída por n cilindros e é simétrica relativamentea um plano paralelo ao plano XZ. Defina a função torre-cilindros de modo a conseguirmodelar esta torre e garantindo que a função devolve a forma desejada como resultado (i.e.,não basta produzir efeitos secundários).
(define (torre-cilindros p r dr h n)(if (= n 0)
(empty-shape)(union(cylinder p r h)(torre-cilindros (+xz p (- dr) h) (- r dr) dr h (- n 1)))))
(torre-cilindros u0 30 2 4 10)
10. (2.0) Considere uma sequência de n cilindros de raio r, empilhados de modo a produzirem umaforma sinusoidal de amplitude a, frequência ω, e altura h, de que se apresentam três exem-plos em seguida. Considerando ainda que o cilindro mais em baixo tem a base centrada numponto P e que a sinusoide se desenvolve num plano parelelo ao plano XZ, defina a funçãocilindros-sinusoide capaz de reproduzir qualquer uma destas formas. Sugestão: use afunção map-division.
Número: 6
(define (cilindros-sinusoide p r a omega h n)(map-division(lambda (t)
(cylinder (+xz p (* a (sin (* omega t))) t)r(/ h n)))
0 h n))
11. (1.5) Considere a construção de uma escada em caracol tal como se apresenta nos três exemplosseguintes:
Note que cada degrau consiste simplesmente de um paralelipípedo assente em cima do degrauimediatamente abaixo e que a coluna central é um cilindro cujo diâmetro é igual à largura dodegrau. Defina a função escada-caracol capaz de construir esta escada a partir do ponto Pda base do eixo de rotação, do comprimento c, largura l e espessura e de cada degrau, do ânguloα de rotação do primeiro degrau e do incremento de rotação ∆α entre degraus consecutivos e,finalmente, do número n de degraus.
(define (degraus-caracol p c l e a da n)(if (= n 0)
(empty-shape)(union
(right-cuboid p l e (+pol p c a))(degraus-caracol
(+z p e)c l e(+ a da) da(- n 1)))))
(define (escada-caracol p c l e a da n)(union(degraus-caracol (+z p (/ e 2)) c l e a da n)(cylinder p (/ l 2) (+z p (* n e)))))
Número: 7
12. (1.5) Usando a função (escada-caracol P c l e α ∆α n) discutida no exercício anterior, de-fina a função escada que, para além de construir uma escada em caracol com uma rotaçãototal de 180 graus, ainda a envolve com uma parede semi-circular onde se apoiam os degraus,tal como se apresenta na seguinte imagem.
A sua função escada deverá receber, como parâmetros, o ponto P do centro da base das es-cada, os raios interior r0 e exterior r1 da parede semi-circular, a largura l de cada degrau, aaltura h a vencer e, finalmente, o número n de degraus pretendidos para vencer aquela altura.
(define (escada p r0 r1 l h n)(union
(escada-caracol p (/ (+ r0 r1) 2) l (/ h n) 0 (/ pi (- n 1)) n)(intersection
(subtraction(cylinder p r1 (+z p h))(cylinder p r0 (+z p h)))
(right-cuboid p (* 2 r1) (* 2 h) (+pol p r1 (/ pi 2.0))))))
13. (2.0) Pretende-se produzir a superfície representada na seguinte imagem à direita, a partir de umconjunto de coordenadas tri-dimensionais, tal como se apresenta na imagem à esquerda:
p0,0
p0,1 p0,2 p0,3
p0,4p0,5
p1,0
p1,1 p1,2 p1,3
p1,4p1,5
p2,0
p2,1 p2,2 p2,3
p2,4p2,5
p3,0
p3,1 p3,2 p3,3
p3,4p3,5
p4,0
p4,1 p4,2 p4,3
p4,4p4,5
p5,0
p5,1 p5,2 p5,3
p5,4p5,5
Admita que essas coordenadas estão armazenadas numa lista de listas da forma:
Número: 8
((p0,0 p0,1 ... p0,5)(p1,0 p1,1 ... p1,5)...(p5,0 p5,1 ... p5,5))
Defina a função superficie-interpolacao que recebe uma lista com a forma anterior, co-meça por criar uma lista de splines em que cada spline Si passa pelos pontos pi,0, pi,1, . . . , pi,5tal como se apresenta na imagem anterior à esquerda e acaba por usar essa lista de splinesS0, S1, . . . , S5 para fazer uma interpolação suave de secções, tal como se apresenta na imagemseguinte à direita:
(define (superficie-interpolacao pontos)(loft
(map spline pontos)))
14. (2.0) Um toro de raios maior r0 e menor r1 é definido parametricamente pela equação:
x = cos t(r0 + r1 cosu)
y = sin t(r0 + r1 cosu)
z = z = r1 sinu
0 ≤ u ≤ 2π; 0 ≤ v ≤ 2π;
Empregando a equação anterior, defina a função toro-esferas que gera um toro de esferassemelhante ao que se apresenta em seguida a partir do centro do toro P , dos raios maior r0 emenor r1 do toro, do raio de cada esfera re e ainda do número de intervalos m e n a considerarem cada dimensão.
(define (toro-esferas p r0 r1 re m n)(for ((u (division 0 2pi m)))
(for ((v (division 0 2pi n)))(sphere (+cyl p (+ r0 (* r1 (cos v))) u (* r1 (sin v)))
re))))