Programação para Arquitectura AntónioMenezesLeitão Setembro2012 ii Conteúdo Prefácio vii 1 Programação 1 1.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.1.1 LinguagensdeProgramação . . . . . . . . . . . . . . 4 1.1.2 Exercícios . . . . . . . . . . . . . . . . . . . . . . . . . 6 1.2 ALinguagemRacket . . . . . . . . . . . . . . . . . . . . . . . 6 1.2.1 Sintaxe,SemânticaePragmática . . . . . . . . . . . . 6 1.2.2 SintaxeeSemânticadoRacket . . . . . . . . . . . . . 7 1.2.3 OAvaliador . . . . . . . . . . . . . . . . . . . . . . . . 7 1.3 ElementosdaLinguagem . . . . . . . . . . . . . . . . . . . . 8 1.3.1 Números . . . . . . . . . . . . . . . . . . . . . . . . . . 9 1.3.2 Combinações . . . . . . . . . . . . . . . . . . . . . . . 9 1.3.3 Indentação . . . . . . . . . . . . . . . . . . . . . . . . . 11 1.3.4 AvaliaçãodeCombinações . . . . . . . . . . . . . . . 13 1.3.5 CadeiasdeCaracteres . . . . . . . . . . . . . . . . . . 14 1.4 DefiniçãodeFunções . . . . . . . . . . . . . . . . . . . . . . . 15 1.4.1 Nomes . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 1.5 FunçõesPré-Definidas . . . . . . . . . . . . . . . . . . . . . . 20 1.6 AritméticaemRacket . . . . . . . . . . . . . . . . . . . . . . . 22 1.7 AvaliaçãodeNomes . . . . . . . . . . . . . . . . . . . . . . . 24 1.8 ExpressõesCondicionais . . . . . . . . . . . . . . . . . . . . . 25 1.8.1 ExpressõesLógicas . . . . . . . . . . . . . . . . . . . . 25 1.8.2 ValoresLógicos . . . . . . . . . . . . . . . . . . . . . . 25 1.9 Predicados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 1.9.1 PredicadosAritméticos . . . . . . . . . . . . . . . . . 26 1.10 OperadoresLógicos . . . . . . . . . . . . . . . . . . . . . . . . 26 1.11 Predicadoscomnúmerovariáveldeargumentos . . . . . . . 27 1.12 Reconhecedores . . . . . . . . . . . . . . . . . . . . . . . . . . 28 1.13 Selecção . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 1.14 SelecçãoMúltipla . . . . . . . . . . . . . . . . . . . . . . . . . 32 1.15 VariáveisLocais . . . . . . . . . . . . . . . . . . . . . . . . . . 33 1.16 VariáveisGlobais . . . . . . . . . . . . . . . . . . . . . . . . . 36 iii iv CONTEÚDO 1.17 Módulos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 2 Modelação 39 2.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 2.2 Coordenadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 2.3 OperaçõescomCoordenadas . . . . . . . . . . . . . . . . . . 41 2.4 CoordenadasBidimensionais . . . . . . . . . . . . . . . . . . 44 2.5 CoordenadasPolares . . . . . . . . . . . . . . . . . . . . . . . 45 2.6 ModelaçãoGeométricaBidimensional . . . . . . . . . . . . . 49 2.7 EfeitosSecundários . . . . . . . . . . . . . . . . . . . . . . . . 53 2.8 Sequenciação . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 2.9 AOrdemDórica . . . . . . . . . . . . . . . . . . . . . . . . . . 56 2.10 ParametrizaçãodeFigurasGeométricas . . . . . . . . . . . . 59 2.11 Documentação . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 2.12 Depuração . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 2.12.1 ErrosSintáticos . . . . . . . . . . . . . . . . . . . . . . 67 2.12.2 ErrosSemânticos . . . . . . . . . . . . . . . . . . . . . 68 2.13 ModelaçãoTridimensional . . . . . . . . . . . . . . . . . . . . 69 2.13.1 SólidosPré-Definidos . . . . . . . . . . . . . . . . . . 69 2.14 CoordenadasCilíndricas . . . . . . . . . . . . . . . . . . . . . 82 2.15 CoordenadasEsféricas . . . . . . . . . . . . . . . . . . . . . . 84 2.16 ModelaçãodeColunasDóricas . . . . . . . . . . . . . . . . . 86 2.17 ProporçõesdeVitrúvio . . . . . . . . . . . . . . . . . . . . . . 88 3 Recursão 97 3.1 Introduçãosub . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 3.2 RecursãoemArquitectura . . . . . . . . . . . . . . . . . . . . 101 3.3 DepuraçãodeProgramasRecursivos . . . . . . . . . . . . . . 108 3.4 TemplosDóricos . . . . . . . . . . . . . . . . . . . . . . . . . . 112 3.5 AOrdemJónica . . . . . . . . . . . . . . . . . . . . . . . . . . 123 3.6 RecursãonaNatureza . . . . . . . . . . . . . . . . . . . . . . 133 4 Estado 139 4.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 4.2 Aleatoriedade . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 4.2.1 NúmerosAleatórios . . . . . . . . . . . . . . . . . . . 140 4.3 Estado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142 4.4 EscolhasAleatórias . . . . . . . . . . . . . . . . . . . . . . . . 144 4.4.1 NúmerosAleatóriosFraccionários . . . . . . . . . . . 146 4.4.2 NúmerosAleatóriosnumIntervalo . . . . . . . . . . 147 4.5 PlaneamentoUrbano . . . . . . . . . . . . . . . . . . . . . . . 152 CONTEÚDO v 5 Estruturas 161 5.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161 5.2 Listas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161 5.2.1 Pares . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164 5.2.2 RepresentaçãoGráficadePares . . . . . . . . . . . . . 165 5.3 TiposRecursivos . . . . . . . . . . . . . . . . . . . . . . . . . 166 5.4 RecursãoemListas . . . . . . . . . . . . . . . . . . . . . . . . 166 5.4.1 PredicadossobreListas . . . . . . . . . . . . . . . . . 171 5.4.2 Enumerações . . . . . . . . . . . . . . . . . . . . . . . 173 5.5 Polígonos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175 5.5.1 EstrelasRegulares . . . . . . . . . . . . . . . . . . . . 176 5.5.2 PolígonosRegulares . . . . . . . . . . . . . . . . . . . 180 5.6 LinhasPoligonaiseSplines . . . . . . . . . . . . . . . . . . . . 182 5.7 Treliças . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185 5.7.1 DesenhodeTreliças . . . . . . . . . . . . . . . . . . . 187 5.7.2 GeraçãodePosições . . . . . . . . . . . . . . . . . . . 192 5.7.3 TreliçasEspaciais . . . . . . . . . . . . . . . . . . . . . 197 6 Formas 203 6.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203 6.2 GeometriaConstrutiva . . . . . . . . . . . . . . . . . . . . . . 203 6.3 Superfícies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209 6.3.1 Trifólios,QuadrifólioseOutrosFólios . . . . . . . . . 210 6.4 ÁlgebradeFormas . . . . . . . . . . . . . . . . . . . . . . . . 217 6.5 CortedeRegiões . . . . . . . . . . . . . . . . . . . . . . . . . 228 6.6 Extrusões . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233 6.6.1 ExtrusãoSimples . . . . . . . . . . . . . . . . . . . . . 234 6.6.2 ExtrusãoaoLongodeumCaminho . . . . . . . . . . 245 6.6.3 ExtrusãocomTransformação . . . . . . . . . . . . . . 247 6.7 ColunasdeGaudí . . . . . . . . . . . . . . . . . . . . . . . . . 249 6.8 Revoluções . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252 6.8.1 SuperfíciesdeRevolução . . . . . . . . . . . . . . . . 253 6.8.2 SólidosdeRevolução . . . . . . . . . . . . . . . . . . . 258 6.9 InterpolaçãodeSecções . . . . . . . . . . . . . . . . . . . . . 263 6.9.1 InterpolaçãoporSecções . . . . . . . . . . . . . . . . . 263 6.9.2 InterpolaçãocomGuiamento . . . . . . . . . . . . . . 264 7 Transformações 267 7.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267 7.2 Translação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268 7.3 Escala . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270 7.4 Rotação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271 7.5 Reflexão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271 7.6 AÓperadeSydney . . . . . . . . . . . . . . . . . . . . . . . . 272 vi CONTEÚDO 8 OrdemSuperior 283 8.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283 8.2 FachadasCurvilíneas . . . . . . . . . . . . . . . . . . . . . . . 283 8.3 FunçõesdeOrdemSuperior . . . . . . . . . . . . . . . . . . . 289 8.4 FunçõesAnónimas . . . . . . . . . . . . . . . . . . . . . . . . 291 8.5 AFunçãoIdentidade . . . . . . . . . . . . . . . . . . . . . . . 297 8.6 FunçõesdeOrdemSuperiorsobreListas . . . . . . . . . . . . 300 8.6.1 Mapeamento . . . . . . . . . . . . . . . . . . . . . . . 300 8.6.2 Filtragem . . . . . . . . . . . . . . . . . . . . . . . . . 301 8.6.3 Redução . . . . . . . . . . . . . . . . . . . . . . . . . . 301 8.7 GeraçãodeModelosTridimensionais . . . . . . . . . . . . . . 303 9 RepresentaçãoParamétrica 315 9.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315 9.2 ComputaçãodeFunçõesParamétricas . . . . . . . . . . . . . 316 9.3 ErrosdeArredondamento . . . . . . . . . . . . . . . . . . . . 318 9.4 Mapeamentoseenumerações . . . . . . . . . . . . . . . . . . 321 9.4.1 EspiraldeFermat . . . . . . . . . . . . . . . . . . . . . 322 9.4.2 CissóidedeDiocles . . . . . . . . . . . . . . . . . . . . 325 9.4.3 LemniscatadeBernoulli . . . . . . . . . . . . . . . . . 327 9.4.4 CurvadeLamé . . . . . . . . . . . . . . . . . . . . . . 329 9.5 Precisão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335 9.5.1 AmostragemAdaptativa . . . . . . . . . . . . . . . . 336 9.6 SuperfíciesParamétricas . . . . . . . . . . . . . . . . . . . . . 340 9.6.1 AFaixadeMöbius . . . . . . . . . . . . . . . . . . . . 341 9.7 Superfícies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347 9.7.1 Helicoide . . . . . . . . . . . . . . . . . . . . . . . . . 351 9.7.2 Mola . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352 9.7.3 Conchas . . . . . . . . . . . . . . . . . . . . . . . . . . 355 9.7.4 Cilindros,Cones,eEsferas . . . . . . . . . . . . . . . 357 9.8 AAdegaYsios . . . . . . . . . . . . . . . . . . . . . . . . . . . 360 9.9 NormaisaumaSuperfície . . . . . . . . . . . . . . . . . . . . 369 9.10 ProcessamentodeSuperfícies . . . . . . . . . . . . . . . . . . 372 10 Epílogo 381 Prefácio Este livro nasceu em 2007, após um convite para leccionar uma disciplina introdutória de Programação aos alunos de Arquitectura do Instituto Su- perior Técnico (IST). A motivação original para a introdução da disciplina no curso de Arquitectura era a mesma que para muitos outros cursos: à semelhança da Matemática e da Física, a Programação tornou-se parte da formaçãobásicadequalqueralunodoIST. Comestapremissa,nãopareciaserumadisciplinaqueviesseadesper- tar grande interesse nos alunos de Arquitectura, particularmente porque era pouco clara a contribuição que ela pudesse ter para o curso. Para con- trariaressaimpressãoinicial, decidiincorporarnoprogramadadisciplina algumas aplicações da Programação em Arquitectura. Nesse sentido, fui falar com alunos e docentes de Arquitectura, e pedi-lhes que me explicas- semoquefaziamecomoofaziam. Oquevieouvifoirevelador. Apesar dos enormes progressos que as ferramentas de Computer-Aided Design (CAD) vieram trazer à profissão, a verdade é que a sua utilização continua manual, laboriosa, repetitiva, aborrecida. A elaboração de um modelo digital numa ferramenta de CAD implica uma enorme atenção ao pormenor, impedindo a concentração no fundamental: a ideia. Frequen- temente, os obstáculos encontrados acabam por forçar o Arquitecto a ter de simplificar a ideia original. Infelizmente, esses obstáculos não termi- namcomacriaçãodomodelo. Pelocontrário,agravam-sequandosurgea inevitávelnecessidadedealteraçõesaomodelo. Em geral, as ferramentas de CAD são concebidas para facilitar a reali- zaçãodastarefasmaiscomuns,emdetrimentodeoutrasmenosfrequentes oumaissofisticadas. Naverdade,paraoArquitectointeressadoemmode- larformasmaiscomplexas,aferramentadeCADpoderáapresentarsérias limitações. E,contudo,essaslimitaçõessãoapenasaparentes,poisépossí- velultrapassá-lasporintermédiodaprogramação. Aprogramaçãopermite queumaferramentadeCADsejaampliadacomnovascapacidades,elimi- nandoosobstáculosqueimpedemotrabalhodoArquitecto. A actividade da programação é intelectualmente muito estimulante, masétambémumdesafio. Implicadominarumanovalinguagem,implica adoptarumanovaformadepensar. Frequentemente,esseesforçofazmui- tos desistirem, mas os que conseguem ultrapassar as dificuldades iniciais vii viii PREFÁCIO ficamcomacapacidadedeirmaislongenacriaçãodesoluçõesarquitectó- nicasinovadoras. EstelivropretendeiraoencontrodessesArquitectos. Capítulo 1 Programação 1.1 Introdução A transmissão de conhecimento é um dos problemas que desde cedo pre- ocupouahumanidade. Sendoohomemcapazdeacumularconhecimento ao longo de toda a sua vida, é com desânimo que enfrenta a ideia de que, comamorte,todoesseconhecimentoseperca. Para evitar esta perda, a humanidade inventou toda uma série de me- canismosdetransmissãodeconhecimento. Oprimeiro,atransmissãooral, consistenatransmissãodoconhecimentodeumapessoaparaumgrupore- duzidodeoutraspessoas,decertaformatransferindooproblemadaperda de conhecimento para a geração seguinte. O segundo, a transmissão es- crita,consisteemregistaremdocumentosoconhecimentoquesepretende transmitir. Estaformatemagrandevantagemde,porumlado,poderche- gar a muitas mais pessoas e, por outro, de reduzir significativamente o riscodeseperderoconhecimentoporproblemasdetransmissão. Defacto, a palavra escrita permite preservar por muito tempo e sem qualquer tipo deadulteraçãooconhecimentoqueoautorpretendeutransmitir. Égraçasàpalavraescritaquehojeconseguimoscompreendereacumu- lar um vastíssimo conjunto de conhecimentos, muitos deles registados há milharesdeanosatrás. Infelizmente, nem sempre a palavra escrita conseguiu transmitir com rigor aquilo que o autor pretendia. A língua natural tem inúmeras ambi- guidadeseevoluisubstancialmentecomotempo,oquelevaaqueainter- pretaçãodostextossejasempreumatarefasubjectiva. Querquandoescre- vemosumtexto,querquandoolemoseointerpretamos,existemomissões, imprecisões,incorrecçõeseambiguidadesquepodemtornaratransmissão de conhecimento falível. Se o conhecimento que se está a transmitir for simples, o receptor da informação, em geral, consegue ter a cultura e ima- ginação suficientes para conseguir ultrapassar os obstáculos. No caso da transmissão de conhecimentos mais complexos já isso poderá ser muito 1 2 CAPÍTULO1. PROGRAMAÇÃO maisdifícil. Quando se exige rigor na transmissão de conhecimento, fazer depen- deracompreensãodesseconhecimentodacapacidadedeinterpretaçãode quem o recebe pode ter consequências desastrosas e, de facto, a história da humanidade está repleta de acontecimentos catastróficos cuja causa é, tão somente, uma insuficiente ou errónea transmissão de conhecimento, ouumadeficientecompreensãodoconhecimentotransmitido. Para evitar estes problemas, inventaram-se linguagens mais rigorosas. Amatemática,emparticular,tem-seobssessivamentepreocupadoaolongo dosúltimosmilénioscomaconstruçãodeumalinguagemondeorigorseja absoluto. Istopermitequeatransmissãodoconhecimentomatemáticoseja muitomaisrigorosaquenasoutrasáreas,reduzindoaomínimoessenciala capacidadedeimaginaçãonecessáriadequemestáaabsorveresseconhe- cimento. Paramelhorpercebermosdoqueestamosafalar,consideremosumcaso concretodetransmissãodeconhecimento,porexemplo,ocálculodofacto- rialdeumnúmero. Seassumirmos,comopontodepartida,queapessoaa quemqueremostransmitiresseconhecimentojásabedeantemãooquesão osnúmeroseasoperaçõesaritméticas,podemosdizer-lhequeparacalcular o factorial de um número qualquer, terá de multiplicar todos os números desde a unidade até esse número. Infelizmente, esta descrição é demasiado extensa e, pior, é pouco rigorosa, pois não dá ao ouvinte a informação de que os números que ele tem de multiplicar são apenas os números inteiros. Para evitarestasimprecisõese,simultaneamente,tornarmaiscompactaainfor- mação a transmitir, a Matemática inventou todo um conjunto de símbolos e conceitos cujo significado deve ser compreendido por todos. Por exem- plo,paraindicarasequênciadenúmerosinteirosentre1e9,aMatemática permite-nos escrever 1,2,3,...,9. Do mesmo modo, para evitarmos falar de“umnúmeroqualquer,”aMatemáticainventouoconceitodevariável: um nome que designa qualquer “coisa” e que pode ser reutilizado em várias partes de uma afirmação matemática com o significado óbvio de repre- sentar sempre essa mesma “coisa.” Deste modo, a linguagem Matemática permite-nos formular a mesma afirmação sobre o cálculo do factorial nos seguintestermos: n! = 1 2 3 n × × ×··· × Será a definição anterior suficientemente rigorosa? Será possível inter- pretá-la sem necessitar de imaginar a intenção do autor? Aparentemente, simmas,naverdade,háumdetalhedadefiniçãoqueexigeimaginação: as reticências. Aquelas reticências indicam ao leitor que ele terá de imaginar o que deveria estar no lugar delas. Embora a maioria dos leitores imagine correctamente que o autor pretendia a multiplicação dos sucessores dos númerosanteriores,leitoreshaverácujaimaginaçãodelirantepoderálevá- losatentarsubstituiraquelasreticênciasporoutracoisaqualquer.
Description: