5 Sistema de Generalizac¸˜ ao 3D
5.2 An´alise e Modelagem do Sistema
5.2.4 Principais Diagramas de Seq¨ uencia e Algoritmos
O Diagrama de Seq ¨uencia ´e um tipo de diagrama UML que apresenta as
interac¸˜oes entre instˆancias de objetos ou classes atrav´es da troca de men- sagens, que s˜ao apresentadas de forma numerada (Larman 1998). A seguir
ser˜ao apresentados os principais diagramas de seq ¨uencia e, para melhor ilus-
houve a necessidade de desenvolver um esquema de leitura destes arquivos e identificac¸˜ao dos objetos. Os objetos identificados s˜ao colocados na base
de dados criada no MySQL (MySQL AB 2004), atrav´es das classes Objetos,
Shapes,Mundo eUses1. Al´em da identificac¸˜ao individual foi necess ´ario identi-
ficar se estes objetos pertencem a grupos definidos pelo usu ´ario (objetos com- plexos). Cada grupo geralmente descreve um objeto maior; por exemplo, para fazer uma casa (grupo casa) ´e necess ´aria a composic¸˜ao de objetos menores
(objetos simples), como a primitiva Box. Os grupos s˜ao definidos pelos n´os:
DEF nome Group, DEF nome Transform, DEF nome Inline. O algoritmo con-
sidera um parˆametro adicional do n ´oTransform que ´e a posic¸˜ao dos objetos.
Este parˆametro ´e importante na verificac¸˜ao da existˆencia de objetos pr ´oximos uns dos outros, para que possa haver a selec¸˜ao dos mesmos na aplicac¸˜ao das regras de selec¸˜ao de pr´edios importantes (consultar sec¸˜ao 5.1, p ´agina 59).
As principais classes que comp˜oem este algoritmo s˜ao mostradas no dia-
grama de seq ¨uencia apresentado na Figura 5.27 (p ´agina 83). A instˆancia da
classeIdentificacao, apresentada na Figura 5.27, ´e a principal respons ´avel
em manter a interface com do sistema com o usu ´ario. A instˆancia da classe
IdMundo possui um atributo que identifica o mundo que se est ´a trabalhando,
o qual est ´a definido como est ´atico na classe (static em Java), pois este valor
deve ser consultado por todo o sistema. Esta instˆancia ´e a ´unica que modi- fica este valor, pois as instˆancias de classe de todo o sistema fazem apenas a consulta deste valor.
5.2.4.2 Classificac¸˜ao dos Objetos
Ap ´os a identificac¸˜ao dos objetos, o usu ´ario dever ´a classific ´a-los em uma das trˆes categorias de objetos, como apresentado na sec¸˜ao 5.1, isto ´e, em prim ´aria, secund ´aria e indeterminada. O algoritmo de classificac¸˜ao ´e apresen- tado no C ´odigo 6. O usu ´ario seleciona os objetos, relacionando-os as catego-
rias desejadas. A Figura 5.28, p ´agina 83, apresenta o diagrama de seq ¨uencia
para a classificac¸˜ao dos objetos do mundo virtual.
1A comunicac¸˜ao destas com o MySQL n˜ao ser ´a exemplificada, pois ´e um processo simples
A Figura 5.29 (p ´agina 84) exibe o diagrama de seq ¨uencia para a monta- gem do mundo virtual, tendo j ´a ocorrido todos os processos de generalizac¸˜ao. Quando ocorre a identificac¸˜ao e decomposic¸˜ao do mundo virtual, os arquivos
wrls iniciais perdem sua func¸˜ao, pois os objetos j ´a foram armazenados no
banco de dados, como j ´a explicado anteriormente.
Este algoritmo lˆe as informac¸˜oes previamente armazenadas sobre o mundo
e monta um arquivo wrl, especificado pelo usu ´ario. O processo de montar o
arquivo wrl ´e o ´ultimo passo a ser realizado do processo de generalizac¸˜ao,
pois aqui faz-se necess ´ario dispor dos parˆametros empregados em proces- sos anteriores, como a aplicac¸˜ao dos operadores; a procura por estes valo-
res ´e realizada atrav´es do m´etodo set Variaveis() da instˆancia da classe
Operadores.
Os valores dos LODs s˜ao lidos atrav´es do m´etodo getVariaveis("varia-
vel"), e caso estes valores n˜ao sejam encontrados uma mensagem de erro ´e
exibida.
A classe Mundo ´e a principal respons ´avel pelo processo de montagem,
adicionando informac¸˜oes sobre o mundo, como background (m´etodo add-
InfoMundo()), adicionando os objetos (addObjetos()), Uses (addUses()) e
Viewpoints(addViewpoints()).
Cada vez que um objeto ´e adicionado, ´e verificado se h ´a simplificac¸˜oes,
suavizac¸˜oes e simbolizac¸˜oes (verificar Simplificacao(), verificarSua-
vizacao(), getAssociacaoObjetoIcone()). Caso existam, o objeto ´e mon-
tado, como filho dos n´os Billboard e LOD, os quais s˜ao inseridos atrav´es
dos m´etodosgetSimplificacao(), getSuavizacao() e getSimbolo()da
instˆancia da classeObjetos. Em seguida, o arquivo wrl ´e montado.
Ap ´os o usu ´ario visualizar o arquivo wrl, ele poder ´a refazer todo o processo
de generalizac¸˜ao, caso o resultado n˜ao seja adequado para o seu objetivo. “Refazer” ´e um processo natural e bastante utilizado em Cartografia, pois nem sempre o primeiro resultado da generalizac¸˜ao de um mapa ´e satisfat ´orio.
´
E poss´ıvel constatar que o arquivo gerado ´e grande, pois cont´em todos os objetos (com excec¸˜ao dos que foram descartados pelo Sistema Especialista na selec¸˜ao dos objetos secund ´arios importantes) e suas respectivas generaliza- c¸˜oes. Conclui-se que o tempo gasto para baixar o arquivo VRML generalizado ser ´a maior do que um que n˜ao foi generalizado, devido as inserc¸˜oes dos LODs.
A Figura 5.30, p ´agina 84, apresenta o diagrama de seq ¨uencia para a selec¸˜ao dos objetos secund ´arios do mundo virtual.
Para a selec¸˜ao dos objetos, al´em da consulta do atributo que identifica o
mundo (m´etodo getId da classe IdMundo), faz-se necess ´aria tamb´em a con-
sulta do m´etodo que identifica o tema a ser consultado.
O tema ´e composto por v ´arias palavras chaves; se o tema for Turismo as palavras chaves associadas se referir˜ao a interesses sobre esse assunto, por exemplo, “igreja” e “museu” (consultar sec¸˜ao 5.1, p ´agina 59).
Ap ´os a identificac¸˜ao do mundo e tema a ser trabalhado, o algoritmo con- sulta os objetos secund ´arios cadastrados e se h ´a objetos importantes (ou cha- ves) j ´a cadastrados, pois o usu ´ario poderia ter feito a selec¸˜ao anteriormente e gostaria de consultar ou refazer o processo; estes objetos s˜ao enviados ao usu ´ario para que o mesmo possa visualiz ´a-los.
O usu ´ario envia o raio de atuac¸˜ao, outro parˆametro utilizado para selec¸˜ao dos objetos importantes, e d ´a in´ıcio ao processo de selec¸˜ao dos objetos.
Enquanto houver objetos secund ´arios, o sistema especialista ´e ativado (no
diagrama de seq ¨uencia e de classe ele est ´a definido como um pacote por ser
um conjunto de classes), selecionando a base de conhecimento a ser utilizada, no caso “selecao”, e os parˆametros s˜ao enviados (como raio, tema e o nome de um arquivo a ser gerado com o resultado da atuac¸˜ao do sistema especialista). Para cada pr´edio ´e verificado se o mesmo pode ser definido como “chave”,
atrav´es do m´etodoverificarConclusao("prediochave"),se o valor for
igual a sim, o objeto ´e classificado.
Por fim, os objetos secund ´arios e chaves s˜ao enviados para o usu ´ario para que este possa consultar o resultado e eventualmente refazer o processo.
5.2.4.5 Aplicac¸˜ao dos Operadores
A Figura 5.31, p ´agina 85, apresenta o diagrama de seq ¨uencia para a
aplicac¸˜ao dos operadores de generalizac¸˜ao sobre os objetos do mundo vir- tual. Os operadores devem ser aplicados de acordo com valores definidos pelo
e nome do arquivo a ser gerado s˜ao enviados. O usu ´ario interage com o sis- tema especialista estabelecendo os valores de sua preferˆencia, e no final da interac¸˜ao um arquivo com estes valores ´e gerado. Em seguida o usu ´ario soli- cita a aplicac¸˜ao dos operadores, as vari ´aveis s˜ao lidas no arquivo de interac¸˜ao
gerado (setVariaveis(getId())), cada vari ´avel ´e lida e de acordo com seus
valores os operadores s˜ao aplicados atrav´es da instˆancia da classeOperadores.
Por fim, um relat ´orio sobre a aplicac¸˜ao dos operadores ´e enviado ao usu ´ario.
5.2.4.6 Simplificac¸˜ao de Primitivas
A Figura 5.32, p ´agina 85, apresenta o diagrama de seq ¨uencia para a
simplificac¸˜ao de primitivas. A simplificac¸˜ao ´e gerada de acordo com cada pri- mitiva na categoria de objetos estabelecida pelo usu ´ario quando este inicia o processo de aplicac¸˜ao dos operadores (explicado anteriormente). A instˆancia
da classe simplificac¸˜ao ´e ativada a partir da execuc¸˜ao do m´etodo simplifi-
carPrimitivas("descricao"), onde a entradadescricaose refere `a descri-
c¸˜ao da primitiva, de acordo com cada primitiva a instˆancia da classe corres-
pondente ´e ativada Cone, Box, Sphere, Cylinder para o estabelecimento
dos atributos correspondentes (mensagem ”setar parˆametros”). A instˆancia da classe da primitiva ´e lida e a simplificac¸˜ao ´e realizada. Maiores detalhes ser˜ao apresentados na sec¸˜ao 2.2.3.