Aplicação da Visualização Científica à Oceanografia Representação da agitação marítima no porto de Leixões

Tamanho: px
Começar a partir da página:

Download "Aplicação da Visualização Científica à Oceanografia Representação da agitação marítima no porto de Leixões"

Transcrição

1 Aplicação da Visualização Científica à Oceanografia Representação da agitação marítima no porto de Leixões Disciplina de Visualização Científica Mestrado em Métodos Computacionais em Ciências e Engenharia Faculdade de Ciências / Faculdade de Engenharia Universidade do Porto Sandra Marta Nobre Plecha Agosto 2005

2 Índice Introdução... 1 Descrição do programa 3 Resultados.. 9 Caso A Representação de um instante 9 Caso B Alguns instantes no mesmo ecrã. 11 Caso C Escalares para um instante Caso D Animação dos vários instantes 12 Conclusões 13 Bibliografia...13 Anexo

3 Aplicação da Visualização Científica à Oceanografia Introdução Em muitas das áreas científicas, o manuseamento de grandes volumes de dados é constante, tornando-se imprescindível a visualização dos mesmos, permitindo retirar de imediato grandes quantidades de informação, apenas pela análise visual. Este é um dos factores que fazem com que a visualização computacional, seja uma área de importância crescente no dia a dia das mais diversas áreas da comunidade científica. Para tal, é necessário a utilização de softwares capazes de criar aplicações gráficas e de visualização de forma não muito complexa. O software utilizado nesta aplicação é designado por The Visualization ToolKit (VTK), e consiste numa biblioteca de classes de C ++ e em várias interfaces de interpretação, sendo influenciado pelos princípios da programação orientada para objectos. Um dos muitos domínios de aplicação da visualização científica é a Oceanografia. Nesta área, é necessária a constante visualização de dados obtidos através de campanhas oceanográficas ou através de resultados obtidos através da simulação computacional. A visualização permite também a observação e a facilidade de interpretação de diversos fenómenos que ocorrem nos oceanos, tais como a refracção e difracção das ondas, devido à variação de profundidades ou devido à presença de obras costeiras. O objectivo principal deste trabalho é a representação de dados reais de agitação marítima no porto de Leixões, permitindo a visualização dos fenómenos referidos anteriormente. Esses dados estão contidos em ficheiros não estruturados, sendo necessária a sua formatação para ficheiros do tipo vtk, de modo a poderem ser input do código desenvolvido. Os ficheiros do tipo vtk são constituídos por um cabeçalho, um conjunto de dados que representa a posição (x,y,z) de cada ponto, e um outro conjunto de pontos que representa a união dos nós dos polígonos. Este trabalho está dividido em quatro partes. Numa primeira parte as amplitudes das ondas são representadas para apenas um dos instantes (um dos ficheiros que conte dados de agitação). Na segunda parte, são representados 4 instantes (4 ficheiros de dados de ondas) numa única janela de visualização. Na terceira parte são representadas as amplitudes das ondas, novamente para um instante, através de uma gama de cores, facilitando a percepção Visualização Científica MMCCE 2004/2005 1

4 Aplicação da Visualização Científica à Oceanografia imediata das cristas e cavas das ondas. Na quarta e última parte, é representada uma janela de visualização onde são representadas as amplitudes das ondas para diferentes instantes, simulando uma animação. Visualização Científica MMCCE 2004/2005 2

5 Aplicação da Visualização Científica à Oceanografia Descrição do programa No início do programa são declaradas as classes utilizadas, através do conjunto de includes. As classes utilizadas neste problema são: #include "stdafx.h" #include "vtkactor.h" #include "vtkcamera.h" #include "vtkcommand.h" #include "vtkfloatarray.h" #include "vtkpointdata.h" #include "vtkpolydata.h" #include "vtkpolydatamapper.h" #include "vtkpolydatanormals.h" #include "vtkpolydatareader.h" #include "vtkpolydatawriter.h" #include "vtkproperty.h" #include "vtkrenderer.h" #include "vtkrenderwindow.h" #include "vtkrenderwindowinteractor.h" #include "vtksmoothpolydatafilter.h" #include "mmsystem.h" No corpo principal do programa é inicialmente apresentado um menu que permite ao utilizador optar por uma das quatro opções descritas na secção anterior, através de um ciclo if. O menu é declarado através das seguintes linhas de comando: printf ("-+-+- MENU \n\n\n"); printf ("Escolha uma das seguintes opcoes: \n\n\n"); printf ("\t A - Representacao de um intante \n"); printf ("\t B - Alguns intantes no mesmo ecra \n"); printf ("\t C - Escalares para um instante \n"); printf ("\t D - Animacao dos varios instantes \n\n"); printf ("\n\n A sua escolha e': "); escolha = getchar(); printf ("\n A sua escolha foi a opcao %c \n\n",escolha); Para a leitura dos ficheiros é utilizada a classe vtkpolydatareader.h. Para exemplificar este procedimento são apresentadas as seguintes linhas de código para o caso da leitura do ficheiro de terra e para um ficheiro de dados de amplitude de ondas. Para o caso B e D são repetidas as linhas de comando onde é lido o ficheiro mar#.vtk, com # variando consoante o ficheiro pretendido (entre 1 e 22). Visualização Científica MMCCE 2004/2005 3

6 Aplicação da Visualização Científica à Oceanografia // lê dados de entrada - porto vtkpolydatareader *porto = vtkpolydatareader::new(); porto->setfilename("terra.vtk"); porto->update(); // lê dados de entrada - mar 1 vtkpolydatareader *mar1 = vtkpolydatareader::new(); mar1->setfilename("mar1.vtk"); mar1->update(); Para os ficheiros que contêm os dados com as elevações da superfície livre é feita uma suavização através da classe vtksmoothpolydatafilter.h, através das seguintes linhas de comando: // suavização da malha vtksmoothpolydatafilter *smooth = vtksmoothpolydatafilter::new(); smooth->setinput(mar1->getoutput()); smooth->setnumberofiterations(20); smooth->setrelaxationfactor(0.05); De seguida é feito o mapeamento e é criado o actor através das classes vtkpolydatamapper.h e vtkactor.h. Na criação do actor é possível definir as suas propriedades, tais como a cor (no sistema RGB) que se pretende que seja representado. Novamente para o ficheiro porto.vtk e mar#.vtk, as linhas de código para o mapeamento e para a criação dos actores, são: // faz o mapeamento e cria o actor - porto vtkpolydatamapper *portomapper = vtkpolydatamapper::new(); portomapper->setinput(porto->getoutput()); vtkactor *portoactor = vtkactor::new(); portoactor->setmapper(portomapper); portoactor->getproperty()->setcolor (0, 0, 0); // faz o mapeamento e cria o actor - mar 1 vtkpolydatamapper *mar1mapper = vtkpolydatamapper::new(); mar1mapper->setinput(smooth->getoutput()); vtkactor *mar1actor = vtkactor::new(); mar1actor->setmapper(mar1mapper); mar1actor->getproperty()->setcolor (0, 0, 1.0); Visualização Científica MMCCE 2004/2005 4

7 Aplicação da Visualização Científica à Oceanografia Criando assim dois actores: o porto e o mar1 (para este caso apresentado). Por defeito já existe uma câmara, definida na classe vtkcamera.h, com uma determinada posição e ponto focal, no entanto é possível definir uma posição mais conveniente ao caso em estudo. Para além destas duas definições é possível também fazer um zoom da visualização. As linhas de comando que permitem estas alterações são apresentadas de seguida: //Câmara vtkcamera *camera = vtkcamera::new(); camera->setposition(0,-0.5,0.1); camera->setfocalpoint(0,0,0); ren->getactivecamera()->zoom(5); Os actores definidos anteriormente têm de ser colocados numa cena (render), através da classe vtkrenderer.h. Para esta aplicação é sempre necessário incluir num mesmo render o actor porto e o actor mar, permitindo sempre a visualização do porto de Leixões e das ondas, em simultâneo. // cria renderer vtkrenderer *ren = vtkrenderer::new(); ren->addactor(portoactor); ren->addactor(mar1actor); ren->setactivecamera(camera); ren->resetcamera(); ren->setbackground(1, 1, 1); Para a colocação do render é necessária a definição de uma ou mais janelas de visualização, feita através da classe vtkrenderwindow.h. Para todos os casos, com excepção ao caso B, é utilizado um render para uma janela de visualização. Para o caso B são colocados 4 renderes numa renderwindow, isto é são colocadas 4 cenas numa janela, permitindo a visualização simultânea de 4 ficheiros de dados. // cria renderer, renderer window, window interactor vtkrenderwindow *renwin = vtkrenderwindow::new(); renwin->addrenderer(ren); renwin->setsize(1000, 700); Visualização Científica MMCCE 2004/2005 5

8 Aplicação da Visualização Científica à Oceanografia Para possibilitar a interacção entre o utilizador e os actores, evitando que sejam simplesmente imagens estáticas, é utilizada a classe vtkrenderwindowinteractor.h. As seguintes linhas de código dão permissão à interacção: // cria renderer, renderer window, window interactor vtkrenderwindowinteractor *interactor = vtkrenderwindowinteractor ::New(); interactor->setrenderwindow(renwin); A interacção entre o utilizador e os objectos para o caso B, é feito em simultâneo entre as 4 cenas, garantido que o utilizador está sempre a visualizar os actores sob a mesma perspectiva. No fim é sempre necessário apagar os objectos criados, através do comando Delete(). porto->delete(); mar1->delete(); portomapper->delete(); mar1mapper->delete(); portoactor->delete(); mar1actor->delete(); camera->delete(); ren->delete(); renwin->delete(); interactor->delete(); smooth->delete(); Para o caso C, onde são representados os escalares, são necessárias as seguintes linhas de código: int ncells = (mar1->getoutput())->getnumberofcells(); int npoints = (mar1->getoutput())->getnumberofpoints(); // para armazenar as alturas de modo a representar os escalares for (i = 0; i < npoints; i++) { x = (mar1->getoutput())->getpoint(i); if (i == 0) zmin = zmax = x[2]; else { if (x[2] < zmin) zmin = x[2]; if (x[2] > zmax) zmax = x[2]; } scalars->inserttuple1(i, x[2]); x[2] = 0.0f; Visualização Científica MMCCE 2004/2005 6

9 Aplicação da Visualização Científica à Oceanografia } ((mar1->getoutput())->getpointdata())->setscalars(scalars); Para o caso D, onde é feita uma simulação através da representação dos vários ficheiros com dados de agitação, é necessário incluir um conjunto de comandos fora e dentro do corpo principal do programa. Fora do main as linhas introduzidas são: // apontadores declarados globais por serem usados no callback vtkrenderer *ren; long timelastcall=0; vtkactor *mar1actor; vtkpolydatamapper *mar1mapper, *mar2mapper, *mar3mapper, *mar4mapper, *mar5mapper, *mar6mapper, *mar7mapper, *mar8mapper, *mar9mapper, *mar10mapper, *mar11mapper, *mar12mapper, *mar13mapper, *mar14mapper, *mar15mapper, *mar16mapper, *mar17mapper, *mar18mapper, *mar19mapper, *mar20mapper, *mar21mapper, *mar22mapper; int cont; class vtkmycallback : public vtkcommand { public: static vtkmycallback *New() { return new vtkmycallback; } void PrintSelf(ostream& os, vtkindent indent) {} void PrintTrailer(ostream& os, vtkindent indent) {} void PrintHeader(ostream& os, vtkindent indent) {} void CollectRevisions(ostream& os) {} virtual void Execute(vtkObject *caller, unsigned long, void*) { vtkrenderwindowinteractor *ri = reinterpret_cast<vtkrenderwindowinteractor*>(caller); if ((timegettime() - timelastcall) > 1) { cout << "1 iteraccao" << endl; timelastcall = timegettime(); if (cont==0) { mar1actor->setmapper(mar1mapper); cont = 1; } else { if (cont==1){mar1actor->setmapper(mar2mapper);cont=cont+1;} if (cont==2){mar1actor->setmapper(mar3mapper);cont=cont+1;} if (cont==3){mar1actor->setmapper(mar4mapper);cont=cont+1;} if (cont==4){mar1actor->setmapper(mar5mapper);cont=cont+1;} if (cont==5){mar1actor->setmapper(mar6mapper);cont=cont+1;} if (cont==6){mar1actor->setmapper(mar7mapper);cont=cont+1;} if (cont==7){mar1actor->setmapper(mar8mapper);cont=cont+1;} if (cont==8){mar1actor->setmapper(mar9mapper);cont=cont+1;} if (cont==9){mar1actor->setmapper(mar10mapper);cont=cont+1;} if (cont==10){mar1actor->setmapper(mar11mapper);cont=cont+1;} if (cont==11){mar1actor->setmapper(mar12mapper);cont=cont+1;} if (cont==12){mar1actor->setmapper(mar13mapper);cont=cont+1;} Visualização Científica MMCCE 2004/2005 7

10 Aplicação da Visualização Científica à Oceanografia if (cont==13){mar1actor->setmapper(mar14mapper);cont=cont+1;} if (cont==14){mar1actor->setmapper(mar15mapper);cont=cont+1;} if (cont==15){mar1actor->setmapper(mar16mapper);cont=cont+1;} if (cont==16){mar1actor->setmapper(mar17mapper);cont=cont+1;} if (cont==17){mar1actor->setmapper(mar18mapper);cont=cont+1;} if (cont==18){mar1actor->setmapper(mar19mapper);cont=cont+1;} if (cont==19){mar1actor->setmapper(mar20mapper);cont=cont+1;} if (cont==20){mar1actor->setmapper(mar21mapper);cont=cont+1;} if (cont==21){mar1actor->setmapper(mar22mapper);cont=0;} } } ri->getrenderwindow()->render(); } }; AbortFlagOn(); // nao passa o evento para o vtkrenderwindowinteractor Dentro do corpo principal do programa programaram-se as seguintes linhas de código: vtkmycallback *mo1 = vtkmycallback::new(); interactor->createtimer(vtki_timer_first); interactor->addobserver(vtkcommand::timerevent, mo1, 2.0); timelastcall = timegettime(); Visualização Científica MMCCE 2004/2005 8

11 Aplicação da Visualização Científica à Oceanografia Resultados Nesta secção são apresentados os resultados obtidos através da aplicação desenvolvida, descrita na secção anterior. Ao fazer executar o programa, irá aparecer um menu que permitirá ao utilizador optar por uma de quatro aplicações. O output está representado na Figura 1. Figura 1 Output do menu do programa realizado. Caso A Representação de um instante Ao seleccionar esta opção, é permitido ao utilizador visualizar um ficheiro de dados de agitação marítima no porto de Leixões. O resultado obtido através da escolha desta opção está representado na figura seguinte. Visualização Científica MMCCE 2004/2005 9

12 Aplicação da Visualização Científica à Oceanografia Figura 2 Figura que se obtém através da selecção da opção A. Todas as opções já incluem uma definição da câmara e do zoom, permitindo visualizar em pormenor a zona de entrada do Porto. No entanto, não é obrigatório que se utilizem estas características da cena. Para isso terão de se comentar as linhas de código onde tais propriedades são definidas. Para este caso o resultado seria o que é apresentado de seguida. Figura 3 Representação anterior com a câmara definida por defeito pelo VTK. Em todas as janelas é possível interagir com o actor, sendo possível efectuar rotações, bem como ampliações / reduções. Visualização Científica MMCCE 2004/

13 Aplicação da Visualização Científica à Oceanografia Caso B Alguns instantes no mesmo ecrã O caso B permite visualizar a agitação marítima em 4 instantes na mesma janela. A interacção é feita para os quatro actores em simultâneo garantindo que a perspectiva é sempre a mesma em todas as situações. O output obtido para este caso está representado na Figura 4. Figura 4 Output obtido através da selecção da opção B do programa computacional. Caso C Escalares para um instante Ao ser escolhida esta opção, é visualizado um ficheiro de agitação, onde as amplitudes da onda estão representadas por cores. O interesse desta aplicação é a possibilidade de identificar automaticamente as cristas e cavas da onda, isto é, as zonas onde a amplitude da onda é maior e menor, respectivamente. O resultado obtido é apresentado na figura seguinte. Visualização Científica MMCCE 2004/

14 Aplicação da Visualização Científica à Oceanografia Figura 5 Representação da agitação através de escalares. Opção C do menu. Caso D Animação dos vários instantes Esta opção permite ao utilizador visualizar os 22 ficheiros com dados de agitação, com um intervalo de tempo predefinido no código do programa. A vantagem desta opção é a visualização da propagação da agitação marítima e dos fenómenos que ocorrem devido à presença de obras de protecção costeira, os quebramares. O resultado obtido é apresentado na Figura 6. Uma desvantagem deste método implementado é a lentidão na representação dos resultados, devido aos ficheiros serem muito extensos. Figura 6 Resultado obtido através da selecção da opção D do programa desenvolvido. Visualização Científica MMCCE 2004/

15 Aplicação da Visualização Científica à Oceanografia Conclusões Foram obtidas diversas aplicações através do software VTK, abrangendo muitos dos conceitos aprendidos nas aulas de Visualização Científica. Conseguiu-se criar diversos tipos de output, permitindo uma visualização da agitação marítima sob diversas perspectivas. Conseguiu-se representar os dados através de escalares e através de uma rotatividade do actor mar simulando uma animação. Contudo, o processo de visualização dos ficheiros desta última aplicação é bastante moroso devido ao peso dos mesmos. Seria interessante tentar simplificar a malha representada, com o objectivo de se tornar mais rápida a visualização dos resultados obtidos através da escolha da opção D do menu inicial. Após a realização deste trabalho pode-se concluir que foram atingidos os objectivos requeridos no âmbito do trabalho. Bibliografia Apontamentos da disciplina de Visualização Científica 2004/2005 Mestrado em Métodos Computacionais em Ciências e Engenharia, J. Tavares e J.Barbosa, Faculdade de Engenharia, 2005 VTK Documentation Visualização Científica MMCCE 2004/

16 Anexo Neste Anexo é listado o código desenvolvido. // exercicio by Sandra Plecha Visualização Científica MMCCE 2005 // // includes #include "stdafx.h" #include "vtkactor.h" #include "vtkcamera.h" #include "vtkcommand.h" #include "vtkfloatarray.h" #include "vtkpointdata.h" #include "vtkpolydata.h" #include "vtkpolydatamapper.h" #include "vtkpolydatanormals.h" #include "vtkpolydatareader.h" #include "vtkpolydatawriter.h" #include "vtkproperty.h" #include "vtkrenderer.h" #include "vtkrenderwindow.h" #include "vtkrenderwindowinteractor.h" #include "vtksmoothpolydatafilter.h" #include "mmsystem.h" // apontadores declarados globais por serem usados no callback vtkrenderer *ren; long timelastcall=0; vtkactor *mar1actor; vtkpolydatamapper *mar1mapper, *mar2mapper, *mar3mapper, *mar4mapper, *mar5mapper, *mar6mapper, *mar7mapper, *mar8mapper, *mar9mapper, *mar10mapper, *mar11mapper, *mar12mapper, *mar13mapper, *mar14mapper, *mar15mapper, *mar16mapper, *mar17mapper, *mar18mapper, *mar19mapper, *mar20mapper, *mar21mapper, *mar22mapper; int cont; class vtkmycallback : public vtkcommand { public: static vtkmycallback *New() { return new vtkmycallback; } void PrintSelf(ostream& os, vtkindent indent) {} void PrintTrailer(ostream& os, vtkindent indent) {} void PrintHeader(ostream& os, vtkindent indent) {} void CollectRevisions(ostream& os) {} virtual void Execute(vtkObject *caller, unsigned long, void*) { vtkrenderwindowinteractor *ri = reinterpret_cast<vtkrenderwindowinteractor*>(caller); if ((timegettime() - timelastcall) > 1) { cout << "1 iteraccao" << endl;

17 timelastcall = timegettime(); if (cont==0) { mar1actor->setmapper(mar1mapper); cont = 1; } else { if (cont==1){mar1actor->setmapper(mar2mapper);cont=cont+1;} if (cont==2){mar1actor->setmapper(mar3mapper);cont=cont+1;} if (cont==3){mar1actor->setmapper(mar4mapper);cont=cont+1;} if (cont==4){mar1actor->setmapper(mar5mapper);cont=cont+1;} if (cont==5){mar1actor->setmapper(mar6mapper);cont=cont+1;} if (cont==6){mar1actor->setmapper(mar7mapper);cont=cont+1;} if (cont==7){mar1actor->setmapper(mar8mapper);cont=cont+1;} if (cont==8){mar1actor->setmapper(mar9mapper);cont=cont+1;} if (cont==9){mar1actor->setmapper(mar10mapper);cont=cont+1;} if (cont==10){mar1actor->setmapper(mar11mapper);cont=cont+1;} if (cont==11){mar1actor->setmapper(mar12mapper);cont=cont+1;} if (cont==12){mar1actor->setmapper(mar13mapper);cont=cont+1;} if (cont==13){mar1actor->setmapper(mar14mapper);cont=cont+1;} if (cont==14){mar1actor->setmapper(mar15mapper);cont=cont+1;} if (cont==15){mar1actor->setmapper(mar16mapper);cont=cont+1;} if (cont==16){mar1actor->setmapper(mar17mapper);cont=cont+1;} if (cont==17){mar1actor->setmapper(mar18mapper);cont=cont+1;} if (cont==18){mar1actor->setmapper(mar19mapper);cont=cont+1;} if (cont==19){mar1actor->setmapper(mar20mapper);cont=cont+1;} if (cont==20){mar1actor->setmapper(mar21mapper);cont=cont+1;} if (cont==21){mar1actor->setmapper(mar22mapper);cont=0;} } } ri->getrenderwindow()->render(); AbortFlagOn(); vtkrenderwindowinteractor } }; // nao passa o evento para o // corpo principal int main( int argc, char *argv[] ) { char escolha; printf ("\n\n\n MENU \n\n\n"); printf ("\t Escolha uma das seguintes opcoes: \n\n\n"); printf ("\t\t A - Representacao de um intante \n"); printf ("\t\t B - Alguns intantes no mesmo ecra \n"); printf ("\t\t C - Escalares para um instante \n"); printf ("\t\t D - Animacao dos varios instantes \n\n"); printf ("\n\n\t A sua escolha e': "); escolha = getchar(); printf ("\n A sua escolha foi a opcao %c \n\n",escolha);

18 //Se a opção é a A - Representacao de um intante if ((escolha == 'A') (escolha == 'a')) { // lê dados de entrada - porto vtkpolydatareader *porto = vtkpolydatareader::new(); porto->setfilename("terra.vtk"); porto->update(); // lê dados de entrada - mar 1 vtkpolydatareader *mar1 = vtkpolydatareader::new(); mar1->setfilename("mar1.vtk"); mar1->update(); // suavização da malha vtksmoothpolydatafilter *smooth = vtksmoothpolydatafilter::new(); smooth->setinput(mar1->getoutput()); smooth->setnumberofiterations(20); smooth->setrelaxationfactor(0.05); // faz o mapeamento e cria o actor - porto vtkpolydatamapper *portomapper = vtkpolydatamapper::new(); portomapper->setinput(porto->getoutput()); vtkactor *portoactor = vtkactor::new(); portoactor->setmapper(portomapper); portoactor->getproperty()->setcolor (0, 0, 0); // faz o mapeamento e cria o actor - mar 1 vtkpolydatamapper *mar1mapper = vtkpolydatamapper::new(); mar1mapper->setinput(smooth->getoutput()); vtkactor *mar1actor = vtkactor::new(); mar1actor->setmapper(mar1mapper); mar1actor->getproperty()->setcolor (0, 0, 1.0); //Câmara vtkcamera *camera = vtkcamera::new(); camera->setposition(0,-0.5,0.1); camera->setfocalpoint(0,0,0); // cria renderer, renderer window, window interactor vtkrenderer *ren = vtkrenderer::new(); ren->addactor(portoactor); ren->addactor(mar1actor); ren->setactivecamera(camera); ren->resetcamera(); ren->setbackground(1, 1, 1); vtkrenderwindow *renwin = vtkrenderwindow::new(); renwin->addrenderer(ren); renwin->setsize(1000, 700); vtkrenderwindowinteractor *interactor = vtkrenderwindowinteractor ::New();

19 interactor->setrenderwindow(renwin); ren->getactivecamera()->zoom(5); renwin->render(); interactor->start(); // apaga objectos porto->delete(); mar1->delete(); portomapper->delete(); mar1mapper->delete(); portoactor->delete(); mar1actor->delete(); camera->delete(); ren->delete(); renwin->delete(); interactor->delete(); smooth->delete(); } //Se a opção é a B - Alguns intantes no mesmo ecrã if ((escolha == 'B') (escolha == 'b')) { // lê dados de entrada - porto vtkpolydatareader *porto = vtkpolydatareader::new(); porto->setfilename("terra.vtk"); porto->update(); // lê dados de entrada - mar 1 vtkpolydatareader *mar1 = vtkpolydatareader::new(); mar1->setfilename("mar1.vtk"); mar1->update(); // lê dados de entrada - mar 7 vtkpolydatareader *mar7 = vtkpolydatareader::new(); mar7->setfilename("mar7.vtk"); mar7->update(); // lê dados de entrada - mar 15 vtkpolydatareader *mar15 = vtkpolydatareader::new(); mar15->setfilename("mar15.vtk"); mar15->update(); // lê dados de entrada - mar 22 vtkpolydatareader *mar22 = vtkpolydatareader::new(); mar22->setfilename("mar22.vtk"); mar22->update(); // faz o mapeamento e cria o actor - porto vtkpolydatamapper *portomapper = vtkpolydatamapper::new();

20 portomapper->setinput(porto->getoutput()); vtkactor *portoactor = vtkactor::new(); portoactor->setmapper(portomapper); portoactor->getproperty()->setcolor (0, 0, 0); // suavização da malha vtksmoothpolydatafilter *smooth1 = vtksmoothpolydatafilter::new(); smooth1->setinput(mar1->getoutput()); smooth1->setnumberofiterations(20); smooth1->setrelaxationfactor(0.05); // faz o mapeamento e cria o actor - mar 1 vtkpolydatamapper *mar1mapper = vtkpolydatamapper::new(); mar1mapper->setinput(smooth1->getoutput()); vtkactor *mar1actor = vtkactor::new(); mar1actor->setmapper(mar1mapper); mar1actor->getproperty()->setcolor (0, 0, 1.0); // suavização da malha vtksmoothpolydatafilter *smooth7 = vtksmoothpolydatafilter::new(); smooth7->setinput(mar7->getoutput()); smooth7->setnumberofiterations(20); smooth7->setrelaxationfactor(0.05); // faz o mapeamento e cria o actor - mar 7 vtkpolydatamapper *mar7mapper = vtkpolydatamapper::new(); mar7mapper->setinput(smooth7->getoutput()); vtkactor *mar7actor = vtkactor::new(); mar7actor->setmapper(mar7mapper); mar7actor->getproperty()->setcolor (0, 0, 1.0); // suavização da malha vtksmoothpolydatafilter *smooth15 = vtksmoothpolydatafilter::new(); smooth15->setinput(mar15->getoutput()); smooth15->setnumberofiterations(20); smooth15->setrelaxationfactor(0.05); // faz o mapeamento e cria o actor - mar 15 vtkpolydatamapper *mar15mapper = vtkpolydatamapper::new(); mar15mapper->setinput(smooth15->getoutput()); vtkactor *mar15actor = vtkactor::new(); mar15actor->setmapper(mar15mapper); mar15actor->getproperty()->setcolor (0, 0, 1.0); // suavização da malha vtksmoothpolydatafilter *smooth22 = vtksmoothpolydatafilter::new(); smooth22->setinput(mar22->getoutput()); smooth22->setnumberofiterations(20); smooth22->setrelaxationfactor(0.05); // faz o mapeamento e cria o actor - mar 22 vtkpolydatamapper *mar22mapper = vtkpolydatamapper::new();

21 mar22mapper->setinput(smooth22->getoutput()); vtkactor *mar22actor = vtkactor::new(); mar22actor->setmapper(mar22mapper); mar22actor->getproperty()->setcolor (0, 0, 1.0); //Câmara vtkcamera *camera = vtkcamera::new(); camera->setposition(0,-0.6,0.1); camera->setfocalpoint(0,0,0); // cria renderer - mar1 vtkrenderer *ren1 = vtkrenderer::new(); ren1->addactor(portoactor); ren1->addactor(mar1actor); ren1->setviewport(0,0.5,0.5,1); ren1->setactivecamera(camera); ren1->resetcamera(); ren1->setbackground(1, 1, 1); // cria renderer - mar7 vtkrenderer *ren7 = vtkrenderer::new(); ren7->addactor(portoactor); ren7->addactor(mar7actor); ren7->setviewport(0.5,0.5,1,1); ren7->setactivecamera(camera); ren7->resetcamera(); ren7->setbackground(0.9, 0.9, 0.9); // cria renderer - mar15 vtkrenderer *ren15 = vtkrenderer::new(); ren15->addactor(portoactor); ren15->addactor(mar15actor); ren15->setviewport(0,0,0.5,0.5); ren15->setactivecamera(camera); ren15->resetcamera(); ren15->setbackground(0.9, 0.9, 0.9); // cria renderer - mar22 vtkrenderer *ren22 = vtkrenderer::new(); ren22->addactor(portoactor); ren22->addactor(mar22actor); ren22->setviewport(0.5,0,1,0.5); ren22->setactivecamera(camera); ren22->resetcamera(); ren22->setbackground(1, 1, 1); // cria renderer window, window interactor vtkrenderwindow *renwin = vtkrenderwindow::new(); renwin->addrenderer(ren1); renwin->addrenderer(ren7); renwin->addrenderer(ren15); renwin->addrenderer(ren22); renwin->setsize(1000, 700); vtkrenderwindowinteractor *interactor = vtkrenderwindowinteractor ::New();

22 interactor->setrenderwindow(renwin); //Faz um zoom ao render ren1->getactivecamera()->zoom(1.5); ren7->getactivecamera()->zoom(1.5); ren15->getactivecamera()->zoom(1.5); ren22->getactivecamera()->zoom(1.5); renwin->render(); interactor->start(); } //Apaga os objectos porto->delete(); mar1->delete(); mar7->delete(); mar15->delete(); mar22->delete(); portomapper->delete(); smooth1->delete(); mar1mapper->delete(); smooth7->delete(); mar7mapper->delete(); smooth15->delete(); mar15mapper->delete(); smooth22->delete(); mar22mapper->delete(); portoactor->delete(); mar1actor->delete(); mar7actor->delete(); mar15actor->delete(); mar22actor->delete(); camera->delete(); ren1->delete(); ren7->delete(); ren15->delete(); ren22->delete(); renwin->delete(); interactor->delete(); //Se a opção é a C - Escalares para um instante if ((escolha == 'C') (escolha == 'c')) { int i; float *x; vtkfloatarray *scalars = vtkfloatarray::new(); float zmin, zmax; // lê dados de entrada - porto vtkpolydatareader *porto = vtkpolydatareader::new(); porto->setfilename("terra.vtk"); porto->update();

23 // lê dados de entrada - mar 1 vtkpolydatareader *mar1 = vtkpolydatareader::new(); mar1->setfilename("mar1.vtk"); mar1->update(); int ncells = (mar1->getoutput())->getnumberofcells(); int npoints = (mar1->getoutput())->getnumberofpoints(); // para armazenar as alturas de modo a representar os escalares for (i = 0; i < npoints; i++) { x = (mar1->getoutput())->getpoint(i); if (i == 0) zmin = zmax = x[2]; else { if (x[2] < zmin) zmin = x[2]; if (x[2] > zmax) zmax = x[2]; } scalars->inserttuple1(i, x[2]); x[2] = 0.0f; } ((mar1->getoutput())->getpointdata())->setscalars(scalars); // faz o mapeamento e cria actor - porto vtkpolydatamapper *portomapper = vtkpolydatamapper::new(); portomapper->setinput(porto->getoutput()); vtkactor *portoactor = vtkactor::new(); portoactor->setmapper(portomapper); portoactor->getproperty()->setcolor (0, 0, 0); // faz o mapeamento e cria actor - mar 1 vtkpolydatamapper *mar1mapper = vtkpolydatamapper::new(); mar1mapper->setinput(mar1->getoutput()); mar1mapper->setscalarrange(-6,6); vtkactor *mar1actor = vtkactor::new(); mar1actor->setmapper(mar1mapper); //Câmara vtkcamera *camera = vtkcamera::new(); camera->setposition(0,-0.5,0.1); camera->setfocalpoint(0,0,0); // cria renderer, renderer window, window interactor vtkrenderer *ren = vtkrenderer::new(); vtkrenderwindow *renwin = vtkrenderwindow::new(); renwin->addrenderer(ren); vtkrenderwindowinteractor *interactor = vtkrenderwindowinteractor ::New(); interactor->setrenderwindow(renwin); ren->addactor(portoactor); ren->addactor(mar1actor); ren->setactivecamera(camera); ren->resetcamera(); ren->setbackground(1, 1, 1); ren->getactivecamera()->zoom(5);

24 renwin->setsize(1000, 700); renwin->render(); interactor->start(); // apaga objectos porto->delete(); mar1->delete(); scalars->delete(); portomapper->delete(); mar1mapper->delete(); portoactor->delete(); mar1actor->delete(); camera->delete(); ren->delete(); renwin->delete(); interactor->delete(); } //Se a opção é o caso D - Animação dos vários instantes if ((escolha == 'D') (escolha == 'd')) { // lê dados de entrada - porto vtkpolydatareader *porto = vtkpolydatareader::new(); porto->setfilename("terra.vtk"); porto->update(); // lê dados de entrada - mar 1 vtkpolydatareader *mar1 = vtkpolydatareader::new(); mar1->setfilename("mar1.vtk"); mar1->update(); // lê dados de entrada - mar 2 vtkpolydatareader *mar2 = vtkpolydatareader::new(); mar2->setfilename("mar2.vtk"); mar2->update(); // lê dados de entrada - mar 3 vtkpolydatareader *mar3 = vtkpolydatareader::new(); mar3->setfilename("mar3.vtk"); mar3->update(); // lê dados de entrada - mar 4 vtkpolydatareader *mar4 = vtkpolydatareader::new(); mar4->setfilename("mar4.vtk"); mar4->update(); // lê dados de entrada - mar 5 vtkpolydatareader *mar5 = vtkpolydatareader::new(); mar5->setfilename("mar5.vtk"); mar5->update();

25 // lê dados de entrada - mar 6 vtkpolydatareader *mar6 = vtkpolydatareader::new(); mar6->setfilename("mar6.vtk"); mar6->update(); // lê dados de entrada - mar 7 vtkpolydatareader *mar7 = vtkpolydatareader::new(); mar7->setfilename("mar7.vtk"); mar7->update(); // lê dados de entrada - mar 8 vtkpolydatareader *mar8 = vtkpolydatareader::new(); mar8->setfilename("mar8.vtk"); mar8->update(); // lê dados de entrada - mar 9 vtkpolydatareader *mar9 = vtkpolydatareader::new(); mar9->setfilename("mar9.vtk"); mar9->update(); // lê dados de entrada - mar 10 vtkpolydatareader *mar10 = vtkpolydatareader::new(); mar10->setfilename("mar10.vtk"); mar10->update(); // lê dados de entrada - mar 11 vtkpolydatareader *mar11 = vtkpolydatareader::new(); mar11->setfilename("mar11.vtk"); mar11->update(); // lê dados de entrada - mar 12 vtkpolydatareader *mar12 = vtkpolydatareader::new(); mar12->setfilename("mar12.vtk"); mar12->update(); // lê dados de entrada - mar 13 vtkpolydatareader *mar13 = vtkpolydatareader::new(); mar13->setfilename("mar13.vtk"); mar13->update(); // lê dados de entrada - mar 14 vtkpolydatareader *mar14 = vtkpolydatareader::new(); mar14->setfilename("mar14.vtk"); mar14->update(); // lê dados de entrada - mar 15 vtkpolydatareader *mar15 = vtkpolydatareader::new(); mar15->setfilename("mar15.vtk"); mar15->update(); // lê dados de entrada - mar 16 vtkpolydatareader *mar16 = vtkpolydatareader::new(); mar16->setfilename("mar16.vtk"); mar16->update(); // lê dados de entrada - mar 17

26 vtkpolydatareader *mar17 = vtkpolydatareader::new(); mar17->setfilename("mar17.vtk"); mar17->update(); // lê dados de entrada - mar 18 vtkpolydatareader *mar18 = vtkpolydatareader::new(); mar18->setfilename("mar18.vtk"); mar18->update(); // lê dados de entrada - mar 19 vtkpolydatareader *mar19 = vtkpolydatareader::new(); mar19->setfilename("mar19.vtk"); mar19->update(); // lê dados de entrada - mar 20 vtkpolydatareader *mar20 = vtkpolydatareader::new(); mar20->setfilename("mar20.vtk"); mar20->update(); // lê dados de entrada - mar 21 vtkpolydatareader *mar21 = vtkpolydatareader::new(); mar21->setfilename("mar21.vtk"); mar21->update(); // lê dados de entrada - mar 22 vtkpolydatareader *mar22 = vtkpolydatareader::new(); mar22->setfilename("mar22.vtk"); mar22->update(); // suavização da malha vtksmoothpolydatafilter *smooth1 = vtksmoothpolydatafilter::new(); smooth1->setinput(mar1->getoutput()); smooth1->setnumberofiterations(20); smooth1->setrelaxationfactor(0.05); vtksmoothpolydatafilter *smooth2 = vtksmoothpolydatafilter::new(); smooth2->setinput(mar2->getoutput()); smooth2->setnumberofiterations(20); smooth2->setrelaxationfactor(0.05); vtksmoothpolydatafilter *smooth3 = vtksmoothpolydatafilter::new(); smooth3->setinput(mar3->getoutput()); smooth3->setnumberofiterations(20); smooth3->setrelaxationfactor(0.05); vtksmoothpolydatafilter *smooth4 = vtksmoothpolydatafilter::new(); smooth4->setinput(mar4->getoutput()); smooth4->setnumberofiterations(20); smooth4->setrelaxationfactor(0.05); vtksmoothpolydatafilter *smooth5 = vtksmoothpolydatafilter::new(); smooth5->setinput(mar5->getoutput()); smooth5->setnumberofiterations(20); smooth5->setrelaxationfactor(0.05); vtksmoothpolydatafilter *smooth6 = vtksmoothpolydatafilter::new();

27 smooth6->setinput(mar6->getoutput()); smooth6->setnumberofiterations(20); smooth6->setrelaxationfactor(0.05); vtksmoothpolydatafilter *smooth7 = vtksmoothpolydatafilter::new(); smooth7->setinput(mar7->getoutput()); smooth7->setnumberofiterations(20); smooth7->setrelaxationfactor(0.05); vtksmoothpolydatafilter *smooth8 = vtksmoothpolydatafilter::new(); smooth8->setinput(mar8->getoutput()); smooth8->setnumberofiterations(20); smooth8->setrelaxationfactor(0.05); vtksmoothpolydatafilter *smooth9 = vtksmoothpolydatafilter::new(); smooth9->setinput(mar9->getoutput()); smooth9->setnumberofiterations(20); smooth9->setrelaxationfactor(0.05); vtksmoothpolydatafilter *smooth10 = vtksmoothpolydatafilter::new(); smooth10->setinput(mar10->getoutput()); smooth10->setnumberofiterations(20); smooth10->setrelaxationfactor(0.05); vtksmoothpolydatafilter *smooth11 = vtksmoothpolydatafilter::new(); smooth11->setinput(mar11->getoutput()); smooth11->setnumberofiterations(20); smooth11->setrelaxationfactor(0.05); vtksmoothpolydatafilter *smooth12 = vtksmoothpolydatafilter::new(); smooth12->setinput(mar12->getoutput()); smooth12->setnumberofiterations(20); smooth12->setrelaxationfactor(0.05); vtksmoothpolydatafilter *smooth13 = vtksmoothpolydatafilter::new(); smooth13->setinput(mar13->getoutput()); smooth13->setnumberofiterations(20); smooth13->setrelaxationfactor(0.05); vtksmoothpolydatafilter *smooth14 = vtksmoothpolydatafilter::new(); smooth14->setinput(mar14->getoutput()); smooth14->setnumberofiterations(20); smooth14->setrelaxationfactor(0.05); vtksmoothpolydatafilter *smooth15 = vtksmoothpolydatafilter::new(); smooth15->setinput(mar15->getoutput()); smooth15->setnumberofiterations(20); smooth15->setrelaxationfactor(0.05); vtksmoothpolydatafilter *smooth16 = vtksmoothpolydatafilter::new(); smooth16->setinput(mar16->getoutput()); smooth16->setnumberofiterations(20); smooth16->setrelaxationfactor(0.05); vtksmoothpolydatafilter *smooth17 = vtksmoothpolydatafilter::new(); smooth17->setinput(mar17->getoutput());

28 smooth17->setnumberofiterations(20); smooth17->setrelaxationfactor(0.05); vtksmoothpolydatafilter *smooth18 = vtksmoothpolydatafilter::new(); smooth18->setinput(mar18->getoutput()); smooth18->setnumberofiterations(20); smooth18->setrelaxationfactor(0.05); vtksmoothpolydatafilter *smooth19 = vtksmoothpolydatafilter::new(); smooth19->setinput(mar19->getoutput()); smooth19->setnumberofiterations(20); smooth19->setrelaxationfactor(0.05); vtksmoothpolydatafilter *smooth20 = vtksmoothpolydatafilter::new(); smooth20->setinput(mar20->getoutput()); smooth20->setnumberofiterations(20); smooth20->setrelaxationfactor(0.05); vtksmoothpolydatafilter *smooth21 = vtksmoothpolydatafilter::new(); smooth21->setinput(mar21->getoutput()); smooth21->setnumberofiterations(20); smooth21->setrelaxationfactor(0.05); vtksmoothpolydatafilter *smooth22 = vtksmoothpolydatafilter::new(); smooth22->setinput(mar22->getoutput()); smooth22->setnumberofiterations(20); smooth22->setrelaxationfactor(0.05); // cria actor - porto vtkpolydatamapper *portomapper = vtkpolydatamapper::new(); portomapper->setinput(porto->getoutput()); vtkactor *portoactor = vtkactor::new(); portoactor->setmapper(portomapper); portoactor->getproperty()->setcolor (0, 0, 0); // cria actor - mar 1 vtkpolydatamapper *mar1mapper = vtkpolydatamapper::new(); mar1mapper->setinput(smooth1->getoutput()); //vtkactor *mar1actor = vtkactor::new(); mar1actor = vtkactor::new(); mar1actor->setmapper(mar1mapper); mar1actor->getproperty()->setcolor (0, 0, 1.0); // cria actor - mar 2 vtkpolydatamapper *mar2mapper = vtkpolydatamapper::new(); mar2mapper->setinput(smooth2->getoutput()); vtkactor *mar2actor = vtkactor::new(); mar2actor->setmapper(mar2mapper); mar2actor->getproperty()->setcolor (0, 0, 1.0); // cria actor - mar 3 vtkpolydatamapper *mar3mapper = vtkpolydatamapper::new();

29 mar3mapper->setinput(smooth3->getoutput()); vtkactor *mar3actor = vtkactor::new(); mar3actor->setmapper(mar3mapper); mar3actor->getproperty()->setcolor (0, 0, 1.0); // cria actor - mar 4 vtkpolydatamapper *mar4mapper = vtkpolydatamapper::new(); mar4mapper->setinput(smooth4->getoutput()); vtkactor *mar4actor = vtkactor::new(); mar4actor->setmapper(mar4mapper); mar4actor->getproperty()->setcolor (0, 0, 1.0); // cria actor - mar 5 vtkpolydatamapper *mar5mapper = vtkpolydatamapper::new(); mar5mapper->setinput(smooth5->getoutput()); vtkactor *mar5actor = vtkactor::new(); mar5actor->setmapper(mar5mapper); mar5actor->getproperty()->setcolor (0, 0, 1.0); // cria actor - mar 6 vtkpolydatamapper *mar6mapper = vtkpolydatamapper::new(); mar6mapper->setinput(smooth6->getoutput()); vtkactor *mar6actor = vtkactor::new(); mar6actor->setmapper(mar6mapper); mar6actor->getproperty()->setcolor (0, 0, 1.0); // cria actor - mar 7 vtkpolydatamapper *mar7mapper = vtkpolydatamapper::new(); mar7mapper->setinput(smooth7->getoutput()); vtkactor *mar7actor = vtkactor::new(); mar7actor->setmapper(mar7mapper); mar7actor->getproperty()->setcolor (0, 0, 1.0); // cria actor - mar 8 vtkpolydatamapper *mar8mapper = vtkpolydatamapper::new(); mar8mapper->setinput(smooth8->getoutput()); vtkactor *mar8actor = vtkactor::new(); mar8actor->setmapper(mar8mapper); mar8actor->getproperty()->setcolor (0, 0, 1.0); // cria actor - mar 9 vtkpolydatamapper *mar9mapper = vtkpolydatamapper::new(); mar9mapper->setinput(smooth9->getoutput()); vtkactor *mar9actor = vtkactor::new(); mar9actor->setmapper(mar9mapper); mar9actor->getproperty()->setcolor (0, 0, 1.0); // cria actor - mar 10 vtkpolydatamapper *mar10mapper = vtkpolydatamapper::new();

30 mar10mapper->setinput(smooth10->getoutput()); vtkactor *mar10actor = vtkactor::new(); mar10actor->setmapper(mar10mapper); mar10actor->getproperty()->setcolor (0, 0, 1.0); // cria actor - mar 11 vtkpolydatamapper *mar11mapper = vtkpolydatamapper::new(); mar11mapper->setinput(smooth11->getoutput()); vtkactor *mar11actor = vtkactor::new(); mar11actor->setmapper(mar11mapper); mar11actor->getproperty()->setcolor (0, 0, 1.0); // cria actor - mar 12 vtkpolydatamapper *mar12mapper = vtkpolydatamapper::new(); mar12mapper->setinput(smooth12->getoutput()); vtkactor *mar12actor = vtkactor::new(); mar12actor->setmapper(mar12mapper); mar12actor->getproperty()->setcolor (0, 0, 1.0); // cria actor - mar 13 vtkpolydatamapper *mar13mapper = vtkpolydatamapper::new(); mar13mapper->setinput(smooth13->getoutput()); vtkactor *mar13actor = vtkactor::new(); mar13actor->setmapper(mar13mapper); mar13actor->getproperty()->setcolor (0, 0, 1.0); // cria actor - mar 14 vtkpolydatamapper *mar14mapper = vtkpolydatamapper::new(); mar14mapper->setinput(smooth14->getoutput()); vtkactor *mar14actor = vtkactor::new(); mar14actor->setmapper(mar14mapper); mar14actor->getproperty()->setcolor (0, 0, 1.0); // cria actor - mar 15 vtkpolydatamapper *mar15mapper = vtkpolydatamapper::new(); mar15mapper->setinput(smooth15->getoutput()); vtkactor *mar15actor = vtkactor::new(); mar15actor->setmapper(mar15mapper); mar15actor->getproperty()->setcolor (0, 0, 1.0); // cria actor - mar 16 vtkpolydatamapper *mar16mapper = vtkpolydatamapper::new(); mar16mapper->setinput(smooth16->getoutput()); vtkactor *mar16actor = vtkactor::new(); mar16actor->setmapper(mar16mapper); mar16actor->getproperty()->setcolor (0, 0, 1.0); // cria actor - mar 17 vtkpolydatamapper *mar17mapper = vtkpolydatamapper::new();

31 mar17mapper->setinput(smooth17->getoutput()); vtkactor *mar17actor = vtkactor::new(); mar17actor->setmapper(mar17mapper); mar17actor->getproperty()->setcolor (0, 0, 1.0); // cria actor - mar 18 vtkpolydatamapper *mar18mapper = vtkpolydatamapper::new(); mar18mapper->setinput(smooth18->getoutput()); vtkactor *mar18actor = vtkactor::new(); mar18actor->setmapper(mar18mapper); mar18actor->getproperty()->setcolor (0, 0, 1.0); // cria actor - mar 19 vtkpolydatamapper *mar19mapper = vtkpolydatamapper::new(); mar19mapper->setinput(smooth19->getoutput()); vtkactor *mar19actor = vtkactor::new(); mar19actor->setmapper(mar19mapper); mar19actor->getproperty()->setcolor (0, 0, 1.0); // cria actor - mar 20 vtkpolydatamapper *mar20mapper = vtkpolydatamapper::new(); mar20mapper->setinput(smooth20->getoutput()); vtkactor *mar20actor = vtkactor::new(); mar20actor->setmapper(mar20mapper); mar20actor->getproperty()->setcolor (0, 0, 1.0); // cria actor - mar 21 vtkpolydatamapper *mar21mapper = vtkpolydatamapper::new(); mar21mapper->setinput(smooth21->getoutput()); vtkactor *mar21actor = vtkactor::new(); mar21actor->setmapper(mar21mapper); mar21actor->getproperty()->setcolor (0, 0, 1.0); // cria actor - mar 22 vtkpolydatamapper *mar22mapper = vtkpolydatamapper::new(); mar22mapper->setinput(smooth22->getoutput()); vtkactor *mar22actor = vtkactor::new(); mar22actor->setmapper(mar22mapper); mar22actor->getproperty()->setcolor (0, 0, 1.0); // cria renderer, renderer window, window interactor ren = vtkrenderer::new(); vtkrenderwindow *renwin = vtkrenderwindow::new(); renwin->addrenderer(ren); //Câmara vtkcamera *camera = vtkcamera::new(); camera->setposition(0,-0.6,0.3); camera->setfocalpoint(0,0,0);

32 vtkrenderwindowinteractor *interactor = vtkrenderwindowinteractor ::New(); interactor->setrenderwindow(renwin); ren->addactor(portoactor); ren->addactor(mar1actor); ren->addactor(mar2actor); ren->addactor(mar3actor); ren->addactor(mar4actor); ren->addactor(mar5actor); ren->addactor(mar6actor); ren->addactor(mar7actor); ren->addactor(mar8actor); ren->addactor(mar9actor); ren->addactor(mar10actor); ren->addactor(mar11actor); ren->addactor(mar12actor); ren->addactor(mar13actor); ren->addactor(mar14actor); ren->addactor(mar15actor); ren->addactor(mar16actor); ren->addactor(mar17actor); ren->addactor(mar18actor); ren->addactor(mar19actor); ren->addactor(mar20actor); ren->addactor(mar21actor); ren->addactor(mar22actor); ren->setactivecamera(camera); ren->resetcamera(); ren->setbackground(1, 1, 1); renwin->setsize(1000, 700); ren->getactivecamera()->zoom(7); renwin->render(); vtkmycallback *mo1 = vtkmycallback::new(); interactor->createtimer(vtki_timer_first); interactor->addobserver(vtkcommand::timerevent, mo1, 2.0); timelastcall = timegettime(); interactor->start(); // apaga objectos porto->delete(); mar1->delete(); mar2->delete(); mar3->delete(); mar4->delete(); mar5->delete(); mar6->delete(); mar7->delete(); mar8->delete(); mar9->delete(); mar10->delete(); mar11->delete();

33 mar12->delete(); mar13->delete(); mar14->delete(); mar15->delete(); mar16->delete(); mar17->delete(); mar18->delete(); mar19->delete(); mar20->delete(); mar21->delete(); mar22->delete(); smooth1->delete(); smooth2->delete(); smooth3->delete(); smooth4->delete(); smooth5->delete(); smooth6->delete(); smooth7->delete(); smooth8->delete(); smooth9->delete(); smooth10->delete(); smooth11->delete(); smooth12->delete(); smooth13->delete(); smooth14->delete(); smooth15->delete(); smooth16->delete(); smooth17->delete(); smooth18->delete(); smooth19->delete(); smooth20->delete(); smooth21->delete(); smooth22->delete(); portomapper->delete(); portoactor->delete(); mar1mapper->delete(); mar1actor->delete(); mar2mapper->delete(); mar2actor->delete(); mar3mapper->delete(); mar3actor->delete(); mar4mapper->delete(); mar4actor->delete(); mar5mapper->delete(); mar5actor->delete(); mar6mapper->delete(); mar6actor->delete(); mar7mapper->delete(); mar7actor->delete(); mar8mapper->delete(); mar8actor->delete(); mar9mapper->delete(); mar9actor->delete(); mar10mapper->delete(); mar10actor->delete(); mar11mapper->delete();

34 mar11actor->delete(); mar12mapper->delete(); mar12actor->delete(); mar13mapper->delete(); mar13actor->delete(); mar14mapper->delete(); mar14actor->delete(); mar15mapper->delete(); mar15actor->delete(); mar16mapper->delete(); mar16actor->delete(); mar17mapper->delete(); mar17actor->delete(); mar18mapper->delete(); mar18actor->delete(); mar19mapper->delete(); mar19actor->delete(); mar20mapper->delete(); mar20actor->delete(); mar21mapper->delete(); mar21actor->delete(); mar22mapper->delete(); mar22actor->delete(); camera->delete(); ren->delete(); renwin->delete(); interactor->delete(); } return 0; }

RELATÓRIO DO TRABALHO

RELATÓRIO DO TRABALHO FACULDADE DE ENGENHARIA DA UNIVERSIDADE DO PORTO Mestrado em Métodos Computacionais em Ciências e Engenharia RELATÓRIO DO TRABALHO DE VISUALIZAÇÃO CIENTÍFICA Representação dos Campos Eléctricos em Torno

Leia mais

Visualização da estrutura cristalina e magnética utilizando o VTK

Visualização da estrutura cristalina e magnética utilizando o VTK Faculdade de Engenharia da Universidade do Porto Faculdade de Ciências da Universidade do Porto MESTRADO EM MÉTODOS COMPUTACIONAIS EM CIÊNCIAS E ENGENHARIA 2004/ 2005 Disciplina de Visualização Científica

Leia mais

Visualização de Parâmetros de Entrada do Programa FastComp

Visualização de Parâmetros de Entrada do Programa FastComp MESTRADO EM MÉTODOS COMPUTACIONAIS EM CIÊNCIAS E ENGENHARIA Faculdade de Ciências da Universidade do Porto Faculdade de Engenharia da Universidade do Porto Visualização de Parâmetros de Entrada do Programa

Leia mais

VISUALIZAÇÃO DE FICHEIROS PDB E GRAVAÇÃO DE FICHEIROS MON

VISUALIZAÇÃO DE FICHEIROS PDB E GRAVAÇÃO DE FICHEIROS MON VISUALIZAÇÃO DE FICHEIROS PDB E GRAVAÇÃO DE FICHEIROS MON UNIVERSIDADE DO PORTO FACULDADE DE ENGENHARIA MESTRADO EM MÉTODOS COMPUTACIONAIS EM CIÊNCIA E ENGENHARIA VISUALIZAÇÃO CIENTÍFICA VISUALIZAÇÃO DE

Leia mais

1. Introdução Triangulação de Delaunay Algoritmo quadrático Métodos Utilizados Resultados...

1. Introdução Triangulação de Delaunay Algoritmo quadrático Métodos Utilizados Resultados... 1 Conteúdos 1. Introdução... 2 2. The Visualization Toolkit... 3 2.1. A Biblioteca VTK... 3 2.2 Conjuntos de Dados... 4 2.3 Organização do Volume de Dados... 5 2.4 A Estrutura de Classes do VTK... 6 3.

Leia mais

Visualização Científica aplicada à Imagiologia Magnética, Matéria Condensada, Oceanografia e Campos Eléctricos usando a biblioteca Computacional VTK

Visualização Científica aplicada à Imagiologia Magnética, Matéria Condensada, Oceanografia e Campos Eléctricos usando a biblioteca Computacional VTK Visualização Científica aplicada à Imagiologia Magnética, Matéria Condensada, Oceanografia e Campos Eléctricos usando a biblioteca Computacional VTK Sandra Plecha CEHRA e Fac. de Engenharia da Universidade

Leia mais

Faculdade de Engenharia da Universidade do Porto Faculdade de Ciências da Universidade do Porto

Faculdade de Engenharia da Universidade do Porto Faculdade de Ciências da Universidade do Porto Faculdade de Engenharia da Universidade do Porto Faculdade de Ciências da Universidade do Porto Mestrado em Métodos Computacionais em Ciências e Engenharia Relatório do trabalho da cadeira de Visualização

Leia mais

Visualização Científica aplicada à Imagiologia Magnética, Matéria Condensada, Oceanografia e Campos Eléctricos, usando a Biblioteca Computacional VTK

Visualização Científica aplicada à Imagiologia Magnética, Matéria Condensada, Oceanografia e Campos Eléctricos, usando a Biblioteca Computacional VTK Visualização Científica aplicada à Imagiologia Magnética, Matéria Condensada, Oceanografia e Campos Eléctricos, usando a Biblioteca Computacional VTK Sandra Plecha, J.M. Teixeira, A.M. Pereira, Francisco

Leia mais

VTK - Visualization Toolkit

VTK - Visualization Toolkit VTK - Visualization Toolkit Prof. Rogério Eduardo da Silva 2005 Sumário 1 Conceitos Básicos 2 1.1 O que é o VTK?.................................. 2 1.1.1 Instanciamento de Objetos com VTK...................

Leia mais

Modelo gráfico do VTK: Fonte de Luz e Câmara

Modelo gráfico do VTK: Fonte de Luz e Câmara Modelo gráfico do VTK: Fonte de Luz e Câmara J. Barbosa J. Tavares Visualização Científica Fonte de Luz e Câmara Para criar uma cena 3D (render) é necessário definir pelo menos uma Fonte de Luz e uma câmara.

Leia mais

Modelo gráfico do VTK: Fonte de Luz e Câmara

Modelo gráfico do VTK: Fonte de Luz e Câmara Modelo gráfico do VTK: Fonte de Luz e Câmara J. Barbosa J. Tavares Fonte de Luz e Câmara Para criar uma cena 3D (render) é necessário definir pelo menos uma Fonte de Luz e uma câmara. Se não forem criados

Leia mais

Exemplos de Sistemas. Sistemas de. Visualização. Bibliotecas Ex: Visual3, CardinalVision, Focus, VTK

Exemplos de Sistemas. Sistemas de. Visualização. Bibliotecas Ex: Visual3, CardinalVision, Focus, VTK Sistemas de Visualização Exemplos Arquitetura VTK Conceitos Exemplos Alterações Conclusões Exemplos de Sistemas Bibliotecas Ex: Visual3, CardinalVision, Focus, VTK Turnkey ou Aplicação Específica Ex: FieldView,

Leia mais

Modelo gráfico do VTK: fundamentos e aplicações

Modelo gráfico do VTK: fundamentos e aplicações Modelo gráfico do VTK: fundamentos e aplicações J. Barbosa J. Tavares 1 Visualização Científica Modelo gráfico do VTK Principais classes do modelo gráfico do VTK: Render Window Renderer Light Camera Actor

Leia mais

Visualização Científica Algoritmos de Visualização usando o VTK. ~tavares/ensino/visci/

Visualização Científica Algoritmos de Visualização usando o VTK. ~tavares/ensino/visci/ Visualização Científica Algoritmos de Visualização usando o VTK João Manuel R. S. Tavares Jorge Gomes Barbosa url: http://www.fe.up.pt/~tavares ~tavares/ensino/visci/ /ensino/visci/visci.html Sumário 1.

Leia mais

Modelo gráfico do VTK: fundamentos e aplicações

Modelo gráfico do VTK: fundamentos e aplicações Modelo gráfico do VTK: fundamentos e aplicações J. Barbosa J. Tavares 1 Modelo gráfico do VTK Principais classes do modelo gráfico do VTK: Render Window Renderer Light Camera Actor Protected Attributes:»

Leia mais

Visualização Científica Algoritmos de Visualização usando o VTK

Visualização Científica Algoritmos de Visualização usando o VTK Visualização Científica Algoritmos de Visualização usando o VTK João Manuel R. S. Tavares Jorge Gomes Barbosa url: http://www.fe.up.pt/~tavares ~tavares/ensino/visci/ /ensino/visci/visci.html Sumário 1.

Leia mais

Processamento de Imagem Digital utilizando software VTK

Processamento de Imagem Digital utilizando software VTK UNIVERSIDADE DO PORTO FACULDADE DE CIÊNCIAS DA UNIVERSIDADE DO PORTO FACULDADE DE ENGENHARIA DA UNIVERSIDADE DO PORTO Processamento de Imagem Digital utilizando software VTK José Miguel Mesquita Teixeira

Leia mais

Uma Interface de Parametrização e Visualização para o Programa FastComp

Uma Interface de Parametrização e Visualização para o Programa FastComp 1ª Conferência Ibérica de Sistemas e Tecnologias de Informação 21 a 23 de Junho de 2006 Esposende, Portugal Uma Interface de Parametrização e Visualização para o Programa Patrícia C. T. Gonçalves e João

Leia mais

Tipos Abstratos de Dados. Estrutura de Dados

Tipos Abstratos de Dados. Estrutura de Dados Tipos Abstratos de Dados Tipo Abstrato de Dados ou TAD Idéia principal: desvincular o tipo de dado (valores e operações) de sua implementação: O que o tipo faz e não como ele faz! Vantagens da desvinculação:

Leia mais

e, através de uma série de exemplos desenvolvidos próprios cenários de visualização.

e, através de uma série de exemplos desenvolvidos próprios cenários de visualização. Programação Python/3D Visualização tridimensional com o VTK Manipulação 3D no Python www.sxc.hu wolf friedmann Atualmente, o mundo dos objetos 3D já faz parte do cotidiano: é só reparar no uso que a indústria

Leia mais

Aplicações de Programação CNC/ISO com Microcomputador. João Manuel R. S. Tavares Joaquim Oliveira Fonseca

Aplicações de Programação CNC/ISO com Microcomputador. João Manuel R. S. Tavares Joaquim Oliveira Fonseca Aplicações de Programação CNC/ISO com Microcomputador João Manuel R. S. Tavares Joaquim Oliveira Fonseca Introdução No contexto da programação CNC é benéfica a possibilidade de trabalhar com programas

Leia mais

Desenvolvimento de uma Interface Gráfica para o Programa FastComp

Desenvolvimento de uma Interface Gráfica para o Programa FastComp MESTRADO EM MÉTODOS M COMPUTACIONAIS EM CIÊNCIAS E ENGENHARIA de uma Interface Gráfica para o Programa Patrícia C. T. Gonçalves Licenciada em Física/Matemática Aplicada (Astronomia) Orientador João Manuel

Leia mais

Orientação a Objetos. Programação em C++

Orientação a Objetos. Programação em C++ OO Engenharia Eletrônica Orientação a Objetos - Programação em C++ Slides 12: Const, Static, NameSpace e Nested Prof. Jean Marcelo SIMÃO Métodos Const #ifndef _MINHASTRING_H_ #define _MINHASTRING_H_ class

Leia mais

Capítulo 10. Sobre a implementação de um simulador por eventos usando C++

Capítulo 10. Sobre a implementação de um simulador por eventos usando C++ SIMULAÇÃO ORIENTADA A OBJECTOS Capítulo 10 Simulação orientada a objectos Sobre a implementação de um simulador por eventos usando C++ 10. Simulação orientada a objectos Neste capítulo abordaremos a simulação

Leia mais

Introdução à Programação em C Input / Output

Introdução à Programação em C Input / Output Introdução à Programação em C Input / Output Resumo Aula Anterior Programa começa com função main() Sintaxe para definição de funções Definição de variáveis e atribuições Estruturas de controlo if-then

Leia mais

INF1339 Computação Gráfica Tridimensional. Waldemar Celes. 2 de Agosto de 2010

INF1339 Computação Gráfica Tridimensional. Waldemar Celes. 2 de Agosto de 2010 Sistemas Gráficos INF1339 Computação Gráfica Tridimensional Waldemar Celes celes@inf.puc-rio.br sala 505 RDC Tecgraf, DI/PUC-Rio 2 de Agosto de 2010 W. Celes Sistemas Gráficos 1 Visualização 3D Objetivo

Leia mais

Linguagem C Princípios Básicos (parte 1)

Linguagem C Princípios Básicos (parte 1) Linguagem C Princípios Básicos (parte 1) Objetivos O principal objetivo deste artigo é explicar alguns conceitos fundamentais de programação em C. No final será implementado um programa envolvendo todos

Leia mais

A linguagem C (visão histórica)

A linguagem C (visão histórica) A linguagem C (visão histórica) A linguagem C é uma linguagem de programação desenvolvida no ínício dos anos 70 por Dennis Ritchie, que trabalhava nos laboratórios Bell e que também inciou em paralelo,

Leia mais

Departamento de Engenharia Informática. Sistemas Operativos 1. Utilitário Make

Departamento de Engenharia Informática. Sistemas Operativos 1. Utilitário Make Departamento de Engenharia Informática Sistemas Operativos 1 Utilitário Make Março 2003 1. Modelo de Compilação da Linguagem C Compilar um programa muito simples em C requer, pelo menos, o ficheiro de

Leia mais

O AMBIENTE DE TRABALHO... 2 CRIAR, ABRIR E GUARDAR DOCUMENTOS... 6 EDIÇÃO DE DOCUMENTOS... 7 FORMATAÇÃO DE TEXTO Manual de Word INTRODUÇÃO...

O AMBIENTE DE TRABALHO... 2 CRIAR, ABRIR E GUARDAR DOCUMENTOS... 6 EDIÇÃO DE DOCUMENTOS... 7 FORMATAÇÃO DE TEXTO Manual de Word INTRODUÇÃO... INTRODUÇÃO... 2 Noção de processador de texto... 2 O AMBIENTE DE TRABALHO... 2 Área de trabalho... 3 Barra de menus... 3 Barras de ferramentas... 4 Réguas... 5 Botões de visualização... 5 Barra de estados...

Leia mais

Aula 10 Comandos de Repetição

Aula 10 Comandos de Repetição Aula 10 Comandos de Repetição Algoritmos e Programação de Computadores Profs: Ronaldo Castro de Oliveira ronaldo.co@ufu.br Anilton Joaquim da Silva anilton@ufu.br 1 Introdução Em certas situações é necessária

Leia mais

Sub-rotinas David Déharbe

Sub-rotinas David Déharbe Sub-rotinas David Déharbe 1 1 Objetivos da aula Os conceitos de sub-rotina, funções e procedimentos; Como usar sub-rotinas em C: parâmetros de sub-rotinas: parâmetros formais e parâmetros efetivos. passagem

Leia mais

Linguagem C Introdução. Contexto Histórico Principais diferenças do Java Funções em C Compilar programas em C no Linux

Linguagem C Introdução. Contexto Histórico Principais diferenças do Java Funções em C Compilar programas em C no Linux Linguagem C Introdução Contexto Histórico Principais diferenças do Java Funções em C Compilar programas em C no Linux Porquê C em AC? A linguagem C fornece um modelo de programação próximo da máquina física

Leia mais

Anhanguera Educacional S.A. Centro Universitário Ibero-Americano

Anhanguera Educacional S.A. Centro Universitário Ibero-Americano O C++ foi inicialmente desenvolvido por Bjarne Stroustrup durante a década de 1980 com o objetivo de melhorar a linguagem de programação C, mantendo a compatibilidade com esta linguagem. Exemplos de Aplicações

Leia mais

PROGRAMAÇÃO DE MICROPROCESSADORES 2007 / 2008

PROGRAMAÇÃO DE MICROPROCESSADORES 2007 / 2008 Departamento de Engenharia Electrotécnica PROGRAMAÇÃO DE MICROPROCESSADORES 2007 / 2008 Mestrado Integrado em Engenharia Electrotécnica e Computadores 1º ano 1º semestre Funções e Vectores http://tele1.dee.fct.unl.pt

Leia mais

Conceitos Básicos de C

Conceitos Básicos de C Conceitos Básicos de C Bibliografia Problem Solving & Program design in C, Jeri R. Hanly e Elliot B. Kpffman, 3 a edição Data Structures and Algorithm Analysis in C, Mark Allen Weiss, 2 a edição, Addison-Wesley,

Leia mais

PROGRAMAÇÃO JAVA. Parte 3

PROGRAMAÇÃO JAVA. Parte 3 PROGRAMAÇÃO JAVA Parte 3 O PRIMEIRO PROGRAMA O Java executa uma instrução a seguir a outra, pela ordem em que estão escritas. Essa sequência poderá ser contrariada de forma especial: Alternativas: Ciclos

Leia mais

Aula teórica 4. Tema 3. Linguagem de Programação Java. Manipulação de informação simples (cont.)

Aula teórica 4. Tema 3. Linguagem de Programação Java. Manipulação de informação simples (cont.) Aula teórica 4 Tema 3. Linguagem de Programação Java. Manipulação de informação simples (cont.) Tipos de dados básicos: Representação de números inteiros Representação de números decimais Instrução de

Leia mais

ANHANGUERA ESTRUTURA DE DADOS AULA 04 MATRIZES, LISTAS E ALOCAÇÃO DINÂMICA. Prof. Thomás da Costa

ANHANGUERA ESTRUTURA DE DADOS AULA 04 MATRIZES, LISTAS E ALOCAÇÃO DINÂMICA. Prof. Thomás da Costa ANHANGUERA 2015.2 ESTRUTURA DE DADOS AULA 04 Prof. Thomás da Costa thomascosta@aedu.com O que é: Matrizes São vetores que possuem duas ou mais dimensões para armazenar valores. Uma matriz de duas dimensões,

Leia mais

Sumário. Ficheiros. Ficheiros

Sumário. Ficheiros. Ficheiros Sumário Ficheiros Motivação Operações Ficheiros de texto e binários Manipulação de ficheiros de texto Abertura Encerramento Descritores de ficheiros: stdin, stdout, stderr Escrita Leitura Outras funções

Leia mais

Módulo 2 Gestão de Base

Módulo 2 Gestão de Base Didáxis - Escola Cooperativa de Vale S. Cosme Módulo 2 Gestão de Base de Dados Aula Nº 77/78 20-02-2008 Sumário: Criação de relatórios. Criação de um relatório na vista de estrutura. Impressão p de um

Leia mais

Linguagem de Programação C

Linguagem de Programação C Linguagem de Programação C Aula 08 Diogo Pinheiro Fernandes Pedrosa Universidade Federal Rural do Semiárido Departamento de Ciências Exatas e Naturais 13 de novembro de 2009 Introdução O que é uma linguagem

Leia mais

Legibilidade do código fonte

Legibilidade do código fonte Sumário Legibilidade do código fonte Exemplos Normas Instrução switch Sintaxe e Semântica Exemplo Tipos enumerados Exemplo Programação 2007/2008 DEEC-IST 1 Legibilidade do código fonte Exemplo: Considere

Leia mais

Introdução à linguagem C

Introdução à linguagem C Introdução à linguagem C Luís Charneca luis.charneca@gmail.com Introdução ao C O C nasceu na década de 70. O seu inventor, Dennis Ritchie, implementou-o pela primeira vez usando um DEC PDP-11 correndo

Leia mais

Programação Orientada a Objetos

Programação Orientada a Objetos 1 Programação Orientada a Objetos A linguagem C, desde a sua primeira especificação, vem sendo desenvolvida com várias extensões. De uma dessas extensões foi criada a Linguagem C++ onde encontramos diversas

Leia mais

3. Linguagem de Programação C

3. Linguagem de Programação C Introdução à Computação I IBM1006 3. Linguagem de Programação C Prof. Renato Tinós Departamento de Computação e Matemática (FFCLRP/USP) 1 Principais Tópicos 3.2. Estrutura de Programas e Representação

Leia mais

Ferramentas Web, Web 2.0 e Software Livre em EVT

Ferramentas Web, Web 2.0 e Software Livre em EVT E s t u d o s o b r e a i n t e g r a ç ã o d e f e r r a m e n t a s d i g i t a i s n o c u r r í c u l o d a d i s c i p l i n a d e E d u c a ç ã o V i s u a l e T e c n o l ó g i c a blender M a n

Leia mais

TECNOLOGIAS DA INFORMAÇÃO E COMUNICAÇÃO SISTEMAS DE GESTÃO DE BASE DE DADOS FORMULÁRIOS

TECNOLOGIAS DA INFORMAÇÃO E COMUNICAÇÃO SISTEMAS DE GESTÃO DE BASE DE DADOS FORMULÁRIOS TECNOLOGIAS DA INFORMAÇÃO E COMUNICAÇÃO SISTEMAS DE GESTÃO DE BASE DE DADOS FORMULÁRIOS Os constituem uma outra forma de visualizar os dados armazenados nas tabela ou disponibilizados numa consulta. Também

Leia mais

Programação. MEAer e LEE. Manipulação de ficheiros de texto. Bertinho Andrade da Costa. Instituto Superior Técnico. 2010/2011 1º Semestre

Programação. MEAer e LEE. Manipulação de ficheiros de texto. Bertinho Andrade da Costa. Instituto Superior Técnico. 2010/2011 1º Semestre Programação MEAer e LEE Bertinho Andrade da Costa 2010/2011 1º Semestre Instituto Superior Técnico Manipulação de ficheiros de texto Programação 2010/2011 IST-DEEC Manipulação de Ficheiros 1 Sumário Ficheiros

Leia mais

Computação e Programação Aula prática nº 5. Enunciados dos problemas

Computação e Programação Aula prática nº 5. Enunciados dos problemas Enunciados dos problemas 1 2. Implementação de uma calculadora 2.1 Objectivos do exercício análise sequencial de um problema baseada em objectos e desenvolvimento do respectivo algoritmo; codificação do

Leia mais

MOODLE - NÍVEL II. Ferramentas de trabalho colaborativo Base de dados MANUAL DO FORMADOR / MOODLE 1.8.4

MOODLE - NÍVEL II. Ferramentas de trabalho colaborativo Base de dados MANUAL DO FORMADOR / MOODLE 1.8.4 MOODLE - NÍVEL II MANUAL DO FORMADOR / MOODLE 1.8.4 Ferramentas de trabalho colaborativo Base de dados Esta ferramenta permite ao professor e/ou alunos construírem e pesquisarem uma base de dados sobre

Leia mais

Gestão de Base de dados Formulários

Gestão de Base de dados Formulários Gestão de Base de dados Formulários Ano Letivo 2014/2015 Professora: Vanda Pereira Formulários Os Formulários constituem uma outra forma de visualizar os dados armazenados nas tabela ou disponibilizados

Leia mais

#include <stdio.h> Void main() { printf( Cheguei!\n"); } INTRODUÇÃO A LINGUAGEM C

#include <stdio.h> Void main() { printf( Cheguei!\n); } INTRODUÇÃO A LINGUAGEM C #include Void main() { printf( Cheguei!\n"); } INTRODUÇÃO A LINGUAGEM C ANTES DO C ERA A LINGUAGEM B B foi essencialmente uma simplificação da linguagem BCPL. B só tinha um tipo de dado, que

Leia mais

Projecto Final de Curso 2004/2005 RESPIFE. Reengenharia de Sistema Produtivo Integrado para Fins Educacionais. Guia Diversas Operações

Projecto Final de Curso 2004/2005 RESPIFE. Reengenharia de Sistema Produtivo Integrado para Fins Educacionais. Guia Diversas Operações RESPIFE Reengenharia de Sistema Produtivo Integrado para Fins Educacionais Alunos: Filipe Barbosa de Sá Pinto, nº. 0005030955 Rui Alexandre da Costa Ribeiro, n.º 000503073 Docente: Armando Sousa Reengenharia

Leia mais

Orientação a Objetos e Java

Orientação a Objetos e Java Orientação a Objetos e Java Daves Martins davesmartins@yahoo.com.br Mestre em Computação de Alto Desempenho pela UFRJ Especialista em Banco de Dados Analista Web Orientação a Objetos e Java Características

Leia mais

LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA ESTRUTURA COM DECISÃO MÚLTIPLA. Prof. Dr. Daniel Caetano

LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA ESTRUTURA COM DECISÃO MÚLTIPLA. Prof. Dr. Daniel Caetano LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA ESTRUTURA COM DECISÃO MÚLTIPLA Prof. Dr. Daniel Caetano 2013-1 Objetivos Entender o que são decisões múltiplas Compreender como implementar decisões múltiplas Capacitar

Leia mais

TECNOLOGIAS DA INFORMAÇÃO E COMUNICAÇÃO SISTEMAS DE GESTÃO DE BASE DE DADOS RELATÓRIOS

TECNOLOGIAS DA INFORMAÇÃO E COMUNICAÇÃO SISTEMAS DE GESTÃO DE BASE DE DADOS RELATÓRIOS TECNOLOGIAS DA INFORMAÇÃO E COMUNICAÇÃO SISTEMAS DE GESTÃO DE BASE DE DADOS RELATÓRIOS Os constituem uma outra forma de visualizar os dados armazenados nas tabela ou disponibilizados numa consulta. No

Leia mais

ESQUEMA AULA PRÁTICA 0 Familiarização com o Ambiente de Desenvolvimento NetBeans Construção do primeiro programa em java.

ESQUEMA AULA PRÁTICA 0 Familiarização com o Ambiente de Desenvolvimento NetBeans Construção do primeiro programa em java. P. Fazendeiro & P. Prata POO FP0/1 ESQUEMA AULA PRÁTICA 0 Familiarização com o Ambiente de Desenvolvimento NetBeans Construção do primeiro programa em java. 0 Iniciar o ambiente de desenvolvimento integrado

Leia mais

Sub-rotinas em C. Disciplina de Programação de Computadores I Universidade Federal de Ouro Preto

Sub-rotinas em C. Disciplina de Programação de Computadores I Universidade Federal de Ouro Preto Sub-rotinas em C Disciplina de Programação de Computadores I Universidade Federal de Ouro Preto Agenda Sub-rotinas: Função e Procedimentos A função main Variáveis globais e locais Escopo de variáveis Passagem

Leia mais

//conteúdo do arquivo pacote.h

//conteúdo do arquivo pacote.h //conteúdo do arquivo pacote.h #ifndef PACOTE_H #define PACOTE_H #include #include class Pacote friend istream &operator>> (istream &, Pacote &); friend ostream &operator

Leia mais

Importação de Worksheets de Excel

Importação de Worksheets de Excel Importação de Worksheets de Excel ÍNDICE INTRODUÇÂO 2 PREPARAÇÃO DO TRABALHO CANDY PARA RECEBER OS DADOS 2 DEFINIÇÃO DAS ESPECIALIDADES E DAS VARIAVEIS GLOBAIS 2 CRIAÇÃO DOS CÓDIGOS DE PREÇO 3 IMPORTACÃO

Leia mais

Computação e Programação

Computação e Programação Computação e Programação 4ª Aula de Funções 2008-2009 Instituto Superior Técnico, Dep. de Engenharia Mecânica - Sistemas Exercício 1 ENUNCIADO: Escreva as seguintes 3 funções: CalculaSerieGeometrica(args)

Leia mais

Subprogramas. (ou Sub-rotinas) em C: Procedimentos e Funções. 2015/1 Programação Básica de Computadores (INF 09325)

Subprogramas. (ou Sub-rotinas) em C: Procedimentos e Funções. 2015/1 Programação Básica de Computadores (INF 09325) Subprogramas (ou Sub-rotinas) em C: Procedimentos e Funções 2015/1 Programação Básica de Computadores (INF 09325) Archimedes Detoni www.inf.ufes.br/~archimedesdetoni archimedesdetoni@inf.ufes.br Programa

Leia mais

Aula 1 Conceitos Básicos

Aula 1 Conceitos Básicos Aula 1 Conceitos Básicos Elerson R. S. Santos elerson@dcc.ufmg.br Livro Projeto de Algoritmos Capítulo 1 @ DCC/UFMG O que é um algoritmo? O que é um programa? O que é um TAD? Algoritmos e Estrutura de

Leia mais

C++ - Funções. Forma geral das funções C++

C++ - Funções. Forma geral das funções C++ C++ - Funções Conjunto de instruções para executar uma tarefa particular, agrupadas numa unidade com um nome para referenciá-las. O código é agregado ao programa uma única vez e pode ser executado muitas

Leia mais

Programação estruturada em C++: extensões ao C. João Pascoal Faria (versão original) Ana Paula Rocha (versão 2004/2005)

Programação estruturada em C++: extensões ao C. João Pascoal Faria (versão original) Ana Paula Rocha (versão 2004/2005) Programação estruturada em C++: extensões ao C João Pascoal Faria (versão original) Ana Paula Rocha (versão 2004/2005) FEUP - LEEC - AED - 2004/2005 1972 1978 1983 1988 1995 Breve historial Primeira versão

Leia mais

Tipos Básicos. Operadores de Incremento e Decremento. Operador Sizeof. Estruturas de Dados Aula 2: Estruturas Estáticas

Tipos Básicos. Operadores de Incremento e Decremento. Operador Sizeof. Estruturas de Dados Aula 2: Estruturas Estáticas Tipos Básicos Quantos valores distintos podemos representar com o tipo char? Estruturas de Dados Aula 2: Estruturas Estáticas 03/03/2010 Operadores de Incremento e Decremento ++ e -- Incrementa ou decrementa

Leia mais

Introdução à Programação Aula 07. Prof. Max Santana Rolemberg Farias Colegiado de Engenharia de Computação

Introdução à Programação Aula 07. Prof. Max Santana Rolemberg Farias Colegiado de Engenharia de Computação Introdução à Programação Aula 07 Prof. Max Santana Rolemberg Farias max.santana@univasf.edu.br Colegiado de Engenharia de Computação ARGUMENTOS POR LINHA DE COMANDO 2 Argumento por linha de comando Na

Leia mais

Estruturas de Dados Aula 2: Estruturas Estáticas. Tipos Básicos. Quantos valores distintos podemos representar com o tipo char?

Estruturas de Dados Aula 2: Estruturas Estáticas. Tipos Básicos. Quantos valores distintos podemos representar com o tipo char? Estruturas de Dados Aula 2: Estruturas Estáticas Tipos Básicos Quantos valores distintos podemos representar com o tipo char? 1 Operadores de Incremento e Decremento ++ e -- Incrementa ou decrementa o

Leia mais

Estruturas de Dados Aula 2: Estruturas Estáticas 02/03/2011

Estruturas de Dados Aula 2: Estruturas Estáticas 02/03/2011 Estruturas de Dados Aula 2: Estruturas Estáticas 02/03/2011 Tipos Básicos Quantos valores distintos podemos representar com o tipo char? Operadores de Incremento e Decremento ++ e -- Incrementa ou decrementa

Leia mais

PROGRAMAÇÃO DE MICROPROCESSADORES 2007 / 2008

PROGRAMAÇÃO DE MICROPROCESSADORES 2007 / 2008 Departamento de Engenharia Electrotécnica PROGRAMAÇÃO DE MICROPROCESSADORES 2007 / 2008 Mestrado Integrado em Engenharia Electrotécnica e Computadores 1º ano 1º semestre Ficheiros e estruturas http://tele1.dee.fct.unl.pt

Leia mais

Programação por Objectos. Java

Programação por Objectos. Java Programação por Objectos Java Parte 5: Associações LEEC@IST Java 1/32 Associação revisão Uma associação representa uma referência entre objectos. Numa associação são definidos: Identificador termo descritivo

Leia mais

Diagrama de Classes. Conceitos Básicos. prof. Robinson Vida Monday, April 20, 15

Diagrama de Classes. Conceitos Básicos. prof. Robinson Vida Monday, April 20, 15 Diagrama de Classes Conceitos Básicos prof. Robinson Vida (vida@utfpr.edu.br) 1 Função do Diagrama de Classes Permitir a visualização das classes que comporão o sistema com seus respectivos atributos e

Leia mais

Introdução à Programação em C (II)

Introdução à Programação em C (II) Introdução à Programação em C (II) Resumo Streams de Texto Leitura e escrita de caracteres Caracteres como números inteiros Exemplos Cópia de Ficheiros Contagem de Caracteres Contagem de Linhas Contagem

Leia mais

UNIVERSIDADE DO PORTO FACULDADE DE CIÊNCIAS DA UNIVERSIDADE DO PORTO FACULDADE DE ENGENHARIA DA UNIVERSIDADE DO PORTO

UNIVERSIDADE DO PORTO FACULDADE DE CIÊNCIAS DA UNIVERSIDADE DO PORTO FACULDADE DE ENGENHARIA DA UNIVERSIDADE DO PORTO FACULDADE DE CIÊNCIAS DA UNIVERSIDADE DO PORTO FACULDADE DE ENGENHARIA DA UNIVERSIDADE DO PORTO MESTRADO E MÉTODOS COMPUTACIONAIS EM CIÊNCIAS E ENGENHARIA REMOÇÃO DE RUÍDO EM PROCESSAMENTO E ANÁLISE DE

Leia mais

Mestrado em Engenharia Física Tecnológica

Mestrado em Engenharia Física Tecnológica 16 a Aula - Funções. Programação Mestrado em Engenharia Física Tecnológica Samuel M. Eleutério sme@tecnico.ulisboa.pt Departamento de Física Instituto Superior Técnico Universidade de Lisboa Funções Funções

Leia mais

Visualizador 3D para o Ciber-Rato

Visualizador 3D para o Ciber-Rato ELECTRÓNICA E TELECOMUNICAÇÕES, VOL. 5, Nº 1, JUNHO 2009 75 Visualizador 3D para o Ciber-Rato Joaquim Fonseca, Flávio Fonseca, Artur Pereira, Paulo Dias, Resumo - O Ciber-Rato é uma competição de robótica,

Leia mais

Listas Lineares. Livro Projeto de Algoritmos Nívio Ziviani Capítulo 3 Seção 3.1

Listas Lineares. Livro Projeto de Algoritmos Nívio Ziviani Capítulo 3 Seção 3.1 Listas Lineares Elerson R. S. Santos elerson@dcc.ufmg.br Livro Projeto de Algoritmos Nívio Ziviani Capítulo 3 Seção 3.1 http://www2.dcc.ufmg.br/livros/algoritmos/ Listas Lineares Uma das formas mais simples

Leia mais

Programação em C++: Introdução

Programação em C++: Introdução Programação em C++: Introdução J. Barbosa J. Tavares Conceitos básicos de programação Algoritmo Conjunto finito de regras sobre as quais se pode dar execução a um dado processo (Knuth73v1) Ex: ordenação

Leia mais

Aula 27: Estruturas heterogêneas e alocação dinâmica

Aula 27: Estruturas heterogêneas e alocação dinâmica Aula 27: Estruturas heterogêneas e alocação dinâmica Introdução a Programação Túlio Toffolo & Puca Huachi http://www.toffolo.com.br BCC201 2018/2 Departamento de Computação UFOP Aulas anteriores Memória

Leia mais

ESTRUTURA COM DECISÃO COMPOSTA

ESTRUTURA COM DECISÃO COMPOSTA LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA ESTRUTURA COM DECISÃO COMPOSTA Prof. Dr. Daniel Caetano 2018-1 Objetivos Entender o que são decisões compostas Compreender como implementar decisões compostas Capacitar

Leia mais

Aula 3 Constantes e funções de E/S

Aula 3 Constantes e funções de E/S Programação I Aula 3 e funções de E/S Prof. Laura Silva de Assis e Prof. Luis Carlos Retondaro Engenharia de Computação 2o Período CEFET/RJ - Centro Federal de Educação Tecnológica Celso Suckow da Fonseca

Leia mais

Programação 2012/2013 1º Semestre MEEC Laboratório 2 Semana de 22 de Outubro de 2012

Programação 2012/2013 1º Semestre MEEC Laboratório 2 Semana de 22 de Outubro de 2012 Programação 2012/2013 1º Semestre MEEC Laboratório 2 Semana de 22 de Outubro de 2012 1. Implemente os programas cujos fluxogramas foram definidos na aula de problemas da semana passada: Exercício 7- Calculo

Leia mais

Programação: Vetores

Programação: Vetores Programação de Computadores I Aula 09 Programação: Vetores José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto 2011-1 1/62 Motivação Problema Faça um programa que leia

Leia mais

Aula 03 -Introdução àlinguagc Programação: Estrutura-Repetição. OPL e IC1 Prof: Anilton Joaquim da Silva

Aula 03 -Introdução àlinguagc Programação: Estrutura-Repetição. OPL e IC1 Prof: Anilton Joaquim da Silva Aula 03 -Introdução àlinguagc Programação: Estrutura-Repetição OPL e IC1 Prof: Anilton Joaquim da Silva Anilton.ufu@outlook.com 1 Estrutura de Repetição Em certas situações é necessária a repetição de

Leia mais

Mestrado em Engenharia Física Tecnológica

Mestrado em Engenharia Física Tecnológica 5 a Aula - Ciclo for. Leitura e Escrita em Ficheiros. Programação Mestrado em Engenharia Física Tecnológica Samuel M. Eleutério sme@tecnico.ulisboa.pt Departamento de Física Instituto Superior Técnico

Leia mais

ADTs (Abstract Data Types): Motivação

ADTs (Abstract Data Types): Motivação ADTs (Abstract Data Types): Motivação Mesmas estruturas são usadas com vários tipos de dados Listas Pilhas Amontoado FIFOs Inteiros Reais Strings Estruturas O procedimento para inserir um inteiro, real,

Leia mais

Introdução à Programação em C

Introdução à Programação em C Introdução à Programação em C Tipos e Operadores Elementares Estruturas de Controlo Resumo Novidades em C Exemplo: Factorial Tipos de Dados Básicos Saltos Condicionais: if-then-else Valor de retorno de

Leia mais

Engenharia de Software

Engenharia de Software Sumário Engenharia de Software Modelos de desenvolvimento de software Fases de desenvolvimento Programação modular Abordagem top-down e bottom-up Linguagens de programação: Compilação / Interpretação Aplicação

Leia mais

Programação Orientada a Objetos Aula I Declaração de classes, métodos construtores. Prof.: Bruno E. G. Gomes IFRN

Programação Orientada a Objetos Aula I Declaração de classes, métodos construtores. Prof.: Bruno E. G. Gomes IFRN Programação Orientada a Objetos Aula I Declaração de classes, métodos construtores Prof.: Bruno E. G. Gomes IFRN 1 Introdução Na aula de hoje: Declaração de classes Métodos Construtores Exercícios de criação

Leia mais

UFCD 786 Instalação e configuração de sistemas de bases de dados

UFCD 786 Instalação e configuração de sistemas de bases de dados Pág 2 UFCD 786 Instalação e configuração de sistemas de bases de dados Formadora Elsa Almeida Índice 1 Introdução... 3 2 Formulários... 4 2.1 Criar Formulários... 4 2.2 Inserção de Novos Registos e Manipulação

Leia mais

Trabalho Linguagem e Programação de Compiladores

Trabalho Linguagem e Programação de Compiladores Trabalho Linguagem e Programação de Compiladores Responda as questões. Os exercícios deverão ser desenvolvidos utilizando as estruturas apresentadas em aula e adequadas para cada problema. Forma de entrega:

Leia mais

Mestrado em Engenharia Física Tecnológica

Mestrado em Engenharia Física Tecnológica 2 a Aula - Os Meus Primeiros Programas em C Programação Mestrado em Engenharia Física Tecnológica Samuel M. Eleutério sme@tecnico.ulisboa.pt Departamento de Física Instituto Superior Técnico Universidade

Leia mais

Manual do Cibernauta

Manual do Cibernauta Faculdade de Engenharia da Universidade do Porto Licenciatura Informática e Computação Laboratório de Informática Avançada Manual do Cibernauta Versão 1.1 João Braga http://www.fe.up.pt/~ei97027/lia.html

Leia mais

Computação e Programação

Computação e Programação Computação e Programação 4ª Aula de (Funções) Instituto Superior Técnico, Dep. de Engenharia Mecânica - Secção Sistemas, Grupo de Controlo Automação e Robótica Exercício 1 ENUNCIADO: Escreva as seguintes

Leia mais

Suponha um conjunto habitacional, com várias famílias... imagina se todas elas morassem em uma única casa?

Suponha um conjunto habitacional, com várias famílias... imagina se todas elas morassem em uma única casa? Funções Suponha um conjunto habitacional, com várias famílias...... imagina se todas elas morassem em uma única casa? Funções Programação de Computadores 1 de 28 Funções Na Programação, funções são conjuntos

Leia mais

Listas Encadeadas. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR

Listas Encadeadas. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR Listas Encadeadas David Menotti Algoritmos e Estruturas de Dados II DInf UFPR Listas Encadeadas Características: Tamanho da lista não é pré-definido Cada elemento guarda quem é o próximo Elementos não

Leia mais