Escolar Documentos
Profissional Documentos
Cultura Documentos
Grupo DEF05
1130511, Rita Carvalho
Janeiro 2014
1130571, Patrícia Pereira
1130761, José Moreira
Orientador(es): Mafalda Luísa de Castro Ferreira, Pedro Manuel Barbosa Guedes, Paula Correia Tavares e
Joaquim Filipe Peixoto dos Santos.
Índice
1. Introdução................................................................................................................1
2. Desenvolvimento do Projeto....................................................................................2
2.1. Metodologia de trabalho e tecnologias utilizadas......................................................2
2.2. Álgebra Linear e Geometria Analítica (ALGAN)...........................................................2
2.2.1. Transformações do Plano no Plano..............................................................................2
2.3. Algoritmia e Programação (APROG)............................................................................2
2.3.1. DescodificadorHTML....................................................................................................2
2.3.2. MainLapr1....................................................................................................................3
2.3.3. Matriz...........................................................................................................................3
2.3.4. Utilidades.....................................................................................................................4
2.3.5. CodificadorHTML.........................................................................................................4
2.4. Princípios da Computação (PRCMP)............................................................................4
2.4.1. Estrutura dos dados em HTML....................................................................................4
3. Conclusão.................................................................................................................6
Bibliografia..............................................................................................................................7
Anexo(s) 8
1. Introdução
1
2. Desenvolvimento do Projeto
Esta classe trabalha com um objecto Scanner que faz a leitura das várias linhas
do ficheiro HTML. Tem também vários métodos, sendo eles respectivamente
lerPoligno (este método lê o polígono e retorna uma String com os vértices do mesmo
ou no qual esta inserido), numeroLOOPS (este método procura por LOOP no ficheiro
HTML e retorna o numero de loops (ciclos) que a aplicação tem de efectuar),
lerInclinacao (procura inclinação no ficheiro e, se existir, retorna todos os dados sobre
a mesma), lerRotacao (procura rotação no ficheiro e, se existir, retorna todos os dados
sobre a mesma), lerReflexao (procura reflexão no ficheiro e, se existir, retorna todos os
2
dados sobre a mesma), lerTranslacao (procura translação no ficheiro e, se existir,
retorna todos os dados sobre a mesma), lerEscala (procura escala no ficheiro e, se
existir, retorna todos os dados sobre a mesma). Para que estas leituras sejam feitas
com sucesso, sendo que o ficheiro possui varias tags HTML, e essencial que se use
métodos específicos como startsWith (classe String) que permite encontrar a linha de
interesse. Uma vez que, em determinadas linhas do ficheiro, existem muitas
informações que apenas dizem respeito ao documento HTML, recorreu-se ao método
replaceAll (classe String) que permite eliminar todo o conteúdo dessa linha, com a
excepção dos dados que se pretendem ler.
2.3.2. MainLapr1
A classe MainLapr1 evoca todos os métodos utilizados em toda a aplicação e faz
com que a mesma possa funcionar, ou seja, que objecto, escolhido pelo utilizador,
sofra as transformações pretendidas, também pelo utilizador, e que as mostre,
utilizando propriedades gráficas, no ecrã. Num pequeno resumo, o main começa a
leitura do ficheiro HTML, lê o polígono, define a matriz com vértices e as suas
respectivas transformações, lê o número de vezes que o loop vai ser efectuado, chama
o método que vai ser efectuado e por fim desenha o gráfico e transmite-o ao
utilizador.
2.3.3. Matriz
A classe Matriz possui todos os métodos necessários para o cálculo das
transformações. Tem o método translação, reflexão, dilatação/contração, inclinação e
rotação. No método translação é criado um espaço na memória para a matriz com as
coordenadas dos pontos fornecidos. A matriz é lida linha a linha, tendo na primeira as
coordenadas dos x e na segunda as coordenadas dos y. Enquanto a primeira linha
está a ser lida, vai ser somado um valor fornecido pelo utilizador (dx) a todos os
elementos de cada coluna da 1ª linha. Quando este processo acaba mudasse para a 2ª
linha onde se repete o mesmo procedimento da linha anterior, alterando apenas o
valor pelo qual se soma (em vez de dx passa a dy). No método reflexão é recebida
informação referente ao eixo pedido (Ox, O ou Oy), para que seja feita a reflexão, e
depois é feita a multiplicação de matrizes referente ao eixo pretendido e a reflexão é
feita. No método dilatação/contração é recebida informação referente ao eixo ou ao
factor α pedido para o qual é feita a dilatação ou contração e calcula a respectiva
transformação. O método inclinação recebe o eixo para o qual o objeto vai inclinar,
recebe também o valor de beta (β). Consoante o eixo lido, o método multiplica a
3
matriz implementada no método pela matriz das coordenadas dos pontos do objeto.
No método rotação o angulo θ é recebido e transformado em radianos, depois é
calculada a transformação necessária para que o objecto rode angulo θ pretendido.
Para cada uma destas transformações é retornada a matriz modificada.
Esta classe ainda contem métodos que servem para extrair parâmetros para
usar na interface gráfica, como dois métodos para obter o vetor com as abcissas dos
vértices, um método para multiplicação de matrizes (que é utilizado em quase todos os
métodos das transformações) e um método para construir a matriz com os vértices do
polígono.
2.3.4. Utilidades
Nesta classe apenas contem alguns métodos intermediários para os outros
mais importantes (métodos das transformações), como o método para validar os
ângulos recebidos para a rotação e os métodos para chamar os métodos das
transformações em toda a aplicação.
2.3.5. CodificadorHTML
A classe CodificadorHTML possui os vários métodos necessários para escrever
um ficheiro HTML, com base em determinados parâmetros que são passados as
funções desta classe.
A presente aplicação gera uma página de HTML, conforme o que foi pedido
inicialmente onde mostra todos os cálculos intermédios. A aplicação é capaz de
4
exportar para a página todos os cálculos de multiplicação de matrizes referentes à
translação, reflexão, dilatação e/ou contração, inclinação e rotação.
Este <body> é sempre composto por duas <div>, em que a primeira tem esse
conteúdo específico propriamente dito, e a segunda tem apenas o nome dos autores e
a data de criação do documento.
Assim, é a primeira <div> que vai conter toda a informação que é particular a
um dado documento HTML gerado pela aplicação. Tendo em conta que a maior parte
das exportações para HTML envolvem matrizes e tabelas, resolveu-se recorrer a
tabelas já que se torna mais simples apresentar esses dados de forma tabular. Para tal,
usou-se a etiqueta <table> para definir uma tabela e, para cada table row (definida
pela etiqueta <tr>) os dados são apresentados dentro das etiquetas <td>. A forma
como são definidos os atributos da etiqueta <table> é que permite controlar a forma
como esta tabela é apresentada, ora assemelhando-se a uma matriz, ora parecendo
uma tabela normal. Para consultar esta definição de atributos basta consultar o
código-fonte dos ficheiros HTML gerados pela aplicação.
5
3. Conclusão
6
Bibliografia
World Wide Web Consortium. (2013). HTML 4.01 Specification. Retrieved January 13,
201, from http://www.w3.org/TR/REC-html40/
World Wide Web Consortium. (2013). The W3C Markup Validation Service. Retrieved
January 13, 2012, from http://validator.w3.org
7
Anexo(s)
Distribuição de tarefas: Realizado por:
Preparação da Apresentação
Rita Carvalho
(PowerPoint)