Aplicação da Visualização Científica à Oceanografia Representação da agitação marítima no porto de Leixões
|
|
- Kevin Sales Amaro
- 6 Há anos
- Visualizaçõ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
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 maisVisualizaçã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 maisVisualizaçã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 maisVISUALIZAÇÃ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 mais1. 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 maisVisualizaçã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 maisFaculdade 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 maisVisualizaçã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 maisVTK - 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 maisModelo 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 maisModelo 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 maisExemplos 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 maisModelo 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 maisVisualizaçã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 maisModelo 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 maisVisualizaçã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 maisProcessamento 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 maisUma 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 maisTipos 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 maise, 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 maisAplicaçõ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 maisDesenvolvimento 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 maisOrientaçã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 maisCapí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 maisIntroduçã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 maisINF1339 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 maisLinguagem 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 maisA 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 maisDepartamento 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 maisO 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 maisAula 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 maisSub-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 maisLinguagem 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 maisAnhanguera 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 maisPROGRAMAÇÃ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 maisConceitos 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 maisPROGRAMAÇÃ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 maisAula 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 maisANHANGUERA 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 maisSumá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 maisMó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 maisLinguagem 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 maisLegibilidade 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 maisIntroduçã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 maisProgramaçã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 mais3. 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 maisFerramentas 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 maisTECNOLOGIAS 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 maisProgramaçã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 maisComputaçã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 maisMOODLE - 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 maisGestã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 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 maisProjecto 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 maisOrientaçã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 maisLÓ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 maisTECNOLOGIAS 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 maisESQUEMA 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 maisSub-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 #ifndef PACOTE_H #define PACOTE_H #include #include class Pacote friend istream &operator>> (istream &, Pacote &); friend ostream &operator
Leia maisImportaçã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 maisComputaçã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 maisSubprogramas. (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 maisRetangulo::Retangulo (int x0, int y0, int lado1, int lado2) { this->xref = x0; this->yref = y0; this->lado1 = lado1; this->lado2 = lado2; }
//exemplo1.cpp #include #include using namespace std; //
Leia maisAula 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 maisC++ - 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 maisProgramaçã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 maisTipos 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 maisIntroduçã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 maisEstruturas 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 maisEstruturas 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 maisPROGRAMAÇÃ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 maisProgramaçã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 maisDiagrama 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 maisIntroduçã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 maisUNIVERSIDADE 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 maisMestrado 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 maisVisualizador 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 maisListas 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 maisProgramaçã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 maisAula 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 maisESTRUTURA 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 maisAula 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 maisProgramaçã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 maisProgramaçã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 maisAula 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 maisMestrado 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 maisADTs (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 maisIntroduçã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 maisEngenharia 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 maisProgramaçã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 maisUFCD 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 maisTrabalho 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 maisMestrado 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 maisManual 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 maisComputaçã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 maisSuponha 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 maisListas 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