Você está na página 1de 10

Relatório de Laboratório/Projeto 1

Transformações do Plano no Plano

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

No presente projecto foi concebida uma aplicação, em linguagem Java, de


Transformações do Plano no Plano, que são aplicados os conceitos de transformações
no plano, leccionados nas aulas de Álgebra Linear e Geometria Analítica (ALGAN). No
entanto, outros fundamentos técnicos e científicos são utilizados na aplicação,
nomeadamente a sua implementação em linguagem Java, segundo um paradigma de
programação procedimental da área de Algoritmia e Programação (APROG), bem
como o recurso à tecnologia web, no âmbito de Princípios da Computação (PRCMP),
mais precisamente no recurso à escrita e leitura de ficheiros no formato HTML.

Nesta aplicação não há qualquer interacção com o utilizador, este apenas


introduz um ficheiro em formato HTML em que se encontram os comandos e os dados
necessários para que aplicação possa funcionar. A aplicação é capaz de ler o ficheiro
HTML dado pelo utilizador e descodifica-lo. Depois de descodificada a mensagem, esta
é executada e apresentada ao utilizador de forma gráfica e no fim é guardado, num
ficheiro HTML, os cálculos intermédios necessários para realizar todas as
transformações e os resultados das mesmas.

Esta aplicação é capaz de, dado um objecto escolhido pelo utilizador


(informação que se encontra no documento HTML), apresenta-lo no ecrã e em seguida
exibir igualmente as transformações pedidas pelo utilizador, ou seja, o objecto pode
sofrer uma destas transformações: translação, reflexão, dilatação/contração,
inclinação e rotação ou até mesmo todas, apenas depende da vontade do utilizador e
do que ele aplica no ficheiro HTML.

Antes de todo o desenvolvimento do trabalho começamos por fazer uma


planificação do mesmo através de um diagrama de gantt (e a respectiva distribuição de
tarefas) que pode ser observado em anexo (Figura 1).

1
2. Desenvolvimento do Projeto

2.1. Metodologia de trabalho e tecnologias utilizadas


O projecto a que se refere o presente relatório descreve o desenvolvimento de
uma aplicação informática cuja utilização conjunta irá permitir, ao utilizador, através
de comandos definidos por ele irá mostrar no ecrã transformações feitas a um objecto
(escolhido também pelo utilizador). Nos seus alicerces, a aplicação informática conta
com fundamentos técnicos e científicos de três áreas distintas, os quais se apresentam
nas seguintes secções.

2.2. Álgebra Linear e Geometria Analítica (ALGAN)

2.2.1. Transformações do Plano no Plano

Transformações do plano no plano são transformações aplicadas aos objetos ou ao


universo como um todo. As principais transformações são translação, reflexão,
dilatação e/ou contração, inclinação (em relação a um factor α) e rotação (em relação
a um angulo θ). Todas estas transformações são feitas através de multiplicação de
matrizes.

2.3. Algoritmia e Programação (APROG)


2.3.1. DescodificadorHTML
A classe DescodificadorHTML contém todos os métodos que fazem a leitura dos
dados presentes num ficheiro de HTML. Esta classe é fundamental para todo o
funcionamento da aplicação.

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.

2.4. Princípios da Computação (PRCMP)

2.4.1. Estrutura dos dados em HTML

Os documentos HTML foram concebidos pela aplicação e seguem todas as


especificações 4.01 determinadas pelo W3C (World Wide Web Consortium, 2013).
Inclusivamente, todo o código HTML produzido pela presente aplicação foi submetido
no validador online W3C (World Wide Web Consortium) onde passou sem qualquer
tipo de erro.

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.

A página segue uma estrutura básica: um <head> em que é definido o título da


página HTML e um <body> onde é incluído o conteúdo específico de cada ficheiro.

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

Neste relatório encontra-se descrita a implementação de uma aplicação, no


âmbito de um projecto de transformações do plano no plano.

As transformações do plano no plano utiliza as propriedades algébricas de


multiplicação de matrizes, em que dado um ficheiro HTML, onde esta descrito um
dado objeto escolhido pelo utilizador (polígono, segmento de reta, elipse,
circunferência e ponto), é recebido pela aplicação e é descodificado retirando todas as
informações desnecessárias que o mesmo contem deixando apenas a informação
relevante, referente ao tipo de objecto, número de loops (ciclos a realizar) e as
transformações a serem realizadas dentro de cada loop (todos os loops são realizados
da mesma forma, o que é alterado é apenas o seu número). Esta informação é retirada
pelo descodificador que a passa aos restantes métodos podendo ser guardada em
matrizes que mais tarde vão ser multiplicadas ou somadas (depende da transformação
pretendida) e assim efectuar a modificação. Depois de todas as modificações
calculadas as matrizes modificadas são retornadas e recorrendo a uma classe já
implementada (classe gráfico) essas matrizes passam um quadro de m linhas e n
colunas de elementos pertencentes a um mesmo conjunto, para uma imagem feita
através e uma componente gráfica com sentido para qualquer pessoa,
independentemente de qualquer conhecimento de ALGAN ou APROG.

Deste modo, na execução deste projecto, foram estudadas várias vertentes


técnicas e áreas científicas, empregando a Álgebra Linear e Geometria Analítica
(ALGAN) como base ao princípio básico das transformações do plano no plano
utilizado, a Algoritmia e Programação (APROG) como responsável das práticas de
programação segundo o paradigma da programação procedimental e, adicionalmente,
os Princípios da Computação (PRCMP), com recurso à tecnologia de construção de
documentos em HTML, já que todos os cálculos intermédios referentes as
transformações são guardadas num ficheiro de formato HTML e também todas as
informações necessárias para a o funcionamento da aplicação também provem de um.

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:

Descodificador HTML José Moreira

Reflexão José Moreira

Dilatação/Contração José Moreira

Rotação José Moreira

Inclinação José Moreira

Translação Rita Carvalho

Codificador HTML Patrícia Pereira

Elaboração do Relatório Rita Carvalho

Preparação da Apresentação
Rita Carvalho
(PowerPoint)

Você também pode gostar