Rasterização de linhas e polígonos

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

Download "Rasterização de linhas e polígonos"

Transcrição

1 Rasterização de linhas e polígonos Algoritmos de rasterização de linhas Suponha > incrementa e vê o que acontece com = 5, =3 incrementa e vê o que acontece com Rasterização de Primitivas 1

2 Algoritmo simples de linha (no primeiro octante) i = m i + b onde: m = / b = 1 - m 1 void Line(int 1, int 1, int 2, int 2, int color) float m = (2-1)/(2-1); float b = 1 - m*1; float ; SetPiel(1,1, color); = 1; while( 1 < 2 ) 1++; = m*1 + b; SetPiel(1,ROUND(), color); Algoritmo de linha incremental Se i+1 = i + 1 então i+1 = i + / void LineDDA(int 1, int 1, int 2, int 2, int color) float ; float m = (2-1)/(2-1); SetPiel(1,1, c); = 1; while( 1 < 2 ) 1++; += m; SetPiel(1,ROUND(), c); Rasterização de Primitivas 2

3 Algoritmo de linha baseado no erro void BresLine(int 1, int 1, int 2, int 2, int c) int D = 2-2; int D = 2-1; float e= -.5; erro de manter e = erro -.5 SetPiel(1, 1, c); while( 1 < 2 ) 1++; e+=d/d; if (e>=) 1++ ; e -= 1; SetPiel(1, 1, c); Algoritmo de Bresenham ei = 2*D*e void void BresLine(int BresLine(int 1, 1, int int 1, 1, void void BresLine1(int BresLine1(int 1, 1, int int 1, 1, int int 2, 2, int int 2, 2, int int c) c) int int 2, 2, int int 2, 2, int int c) c) int int D D = = ; 1; int int D D = = ; 1; int int D D = = ; 1; int int D D = = ; 1; float float e= e= -.5; -.5; int int ei ei = = -D; -D; SetPiel(1, SetPiel(1, 1, 1, c); c); SetPiel(1, SetPiel(1, 1, 1, c); c); while( while( 1 1 < < 2 2 )) while( while( 1 1 < < 2 2 )) 1++; 1++; e+=d/d; e+=d/d; 1++; 1++; ei ei += += 2*D; 2*D; if if (e>=) (e>=) if if (ei>=) (ei>=) ;; e e -= -= 1; 1; ;; ei ei -= -= 2*D; 2*D; SetPiel(1, SetPiel(1, 1, 1, c); c); SetPiel(1, SetPiel(1, 1, 1, c); c); válidos somente quando D>D, 2 > 1 e 2 > 1 Rasterização de Primitivas 3

4 Equação implícita da reta 2 1 F (, ) < F(, ) > n = ( d d) d = d + B 1 2 F(, ) = d. d. + B. d = F(, ) = a. + b. + c p +1/2 p NE M E p p+1 p+2 Algoritmo do ponto médio - variável de decisão - p +3/2 M NE p +1/2 NE M M E escolha NE F( M) = > escolha E p E p p+1 p+2 d = F( + 1, + ) = a( + 1) + b( + ) + c 1 1 p p 2 p p 2 E NE d = F( + 2, + ) = a( + 2) + b( + ) + c 1 1 new p p 2 p p 2 d = d + a new old d = F( + 2, + ) = a( + 2) + b( + ) + c 3 3 new p p 2 p p 2 d = d + a + b new old E = a NE = a + b Rasterização de Primitivas 4

5 Algoritimo do ponto médio - redução para inteiros - dstart = F( + 1, ) = a( + 1) + b( ) + c d start= F (, ) + a + b / 2 = a + b / 2 = a E NE = a + b d d 2. a b = 2. F (, ) start= + E NE = 2a ( a b) = 2 + Algoritimo do ponto médio - código C - void MidpointLine(int, int, int 1, int 1, int color) int d = 1-; int d = 1-; int d=2*d-d; /* Valor inicial da var. decisao */ int incre = 2*d; /* incremento p/ mover E */ int incrne = 2*(d-d); /* incremento p/ mover NE */ int =; int =; Piel(,,fgcolor); /* Primeiro piel */ while (<l) if (d<=) /* Escolha E */ d+=incre; ++; else /* Escolha NE */ d+=incrne; ++; ++; Piel(,,color); /* while */ /* MidpointLine */ Rasterização de Primitivas 5

6 void MidpointLine(int, int, int 1, int 1, int color) int d = 1-; int d = 1-; int d=2*d-d; /* Valor inicial da var. decisao */ int incre = 2*d; /* incremento p/ mover E */ int incrne = 2*(d-d); /* incremento p/ mover NE */ int =; int =; int stle[8]=1,1,,,1,1,,; int k=1; Piel(,,fgcolor) while (<l) if (d<=) /* Escolha E */ d+=incre; ++; else /* Escolha NE */ d+=incrne; ++; ++; if (stle[(++k)%8]) Piel(,,color); /* while */ /* MidpointLine */ Estilos de linha orientação Rasterização de Retas -caso geral outros quadrantes Rasterização de Primitivas 6

7 Rasterização de Cônicas F F(,) = = F F 45 simetrias do círculo: cada ponto calculado define 8 piels Rasterização de Cônicas =raio; for (=; < ; ++) if F(M)< escolha E else escolha SE Piel (E ou SE) pinte os simétricos E M SE M E M SE F(,) = Rasterização de Primitivas 7

8 Preenchimento de polígonos ma 1 4 dados:,, 1, 1, 2, 2, 3, 3, 4 4,, 1, 1, 2, 2, 3, 3, 4 4 s i1 i i4 i3 acha acha ma e ma e min min Para Para cada cada s s [ [ ma, ma, min ] min ] min 2 i1 i i4 i3 3 Para Para cada cada aresta aresta calcula as as interseções ordena interseções v= v= i1, i1, i, i, i4, i4, i3 i3 desenha linhas linhas horizontais Preenchimento de polígonos (scan passando por vértices) s 1 i i1 i2 i4 3 5 i3 2 4 inclui inclui vértices: i-i1, i-i1, i2-i3, i2-i3, i4-? i4-? não não inclui inclui vértices: i-? i-? s i 2 1 i1 i2 i4 3 i3 5 4 s 1 i Rasterização de Primitivas 8

9 Interseção nos vértices só só inclui inclui vértices de de menor menor : : i-i4 i-i4 ou só só inclui inclui vértices de de maior maior : : i-i1, i-i1, i2-i3 i2-i3 reta reta horizontal não não produz interseção Algoritmo de Fill void FillPolgon (int np, int *, int *) /* declarações */... /* calcula ma e min dos vértices*/... for(s=mim; s<=ma; s--) /* para cada linha de scan */ num_inters = ; for(i=; i<np; i++) /* para cada aresta */ i = [i]; f = [(i+1)%np]; if (i!=f && s >= MIN(i,f) && s < MAX(i,f) ) vs[num_inters] = [i] + (s-i)*([(i+1)%np]-[i])/(f-i); num_inters++; ordena(vs,,num_inters-1); /* ordena as interseções */ for (i=;i<num_inters;i+=2) if (vs[i]+1 <= vs[i+1]) ScanLine(vs[i],vs[i+1],s); Rasterização de Primitivas 9

10 Otimizações do algoritmo de fill ma = +d +d s+1 s d = 1 min 1 (ou z) Lista de Arestas d = (1-)/( ma - min ) struct edge int _ma; /* maior da aresta */ int _min; /* menor da aresta */ float s; /* correspondente a s */ /* (no início é o correspondente a _ma) */ float delta_s; /* incremento de s entre duas linhas de scan */ ; Algoritmo de Fill de Polígonos (Parte 1-Alocação de Memória) #define Ma(a,b) #define Min(a,b) (((a) > (b))? (a) : (b)) (((a) < (b))? (a) : (b)) void fill (int np, int *, int *) static struct edge *aresta=null; /* vetor de arestas */ static int *vs=null; /* vetor de interseções */ static int old_np=; /* número de pontos da última chamada */ int ma, min; /* limites do polígono */ int num_inters; /* num. de interseções */ int num_arestas; /* num. de arestas */ int s; /* ordenada da reta de scan */ int i; /* realoca os vetores de arestas e de interseções */ if (np > old_np) old_np=np; if (vs) free (vs); if (aresta) free (aresta); vs=(int *) malloc ((np-1)*sizeof(int)); /* ma num. De inters.*/ aresta=(struct edge *) malloc (np*sizeof(struct edge)); /* CONTINUA NA PARTE 2 */ Rasterização de Primitivas 1

11 Algoritmo de Fill de Polígonos (Parte 2-Lista de Arestas) /* PARTE 1*/ /* calcula ma e min e monta o vetor de arestas */ ma = []; min = []; num_arestas = ; for(i=;i<np;i++) int i1=(i+1)%np; if ([i]!= [i1]) aresta[num_arestas]._ma = Ma([i],[i1]); aresta[num_arestas]._min = Min([i],[i1]); aresta[num_arestas].delta = ((float)([i1]-[i])/ (float)([i1]-[i])); if (aresta[num_arestas]._mim == [i]) aresta[num_arestas].s = [i]; else aresta[num_arestas].a = [i1]; if (aresta[num_arestas]._ma > ma) ma = aresta[num_arestas]._ma; if (aresta[num_arestas]._min < min) min = aresta[num_arestas]._min; num_arestas++; /* CONTINUA NA PARTE 3 */ Algoritmo de Fill de Polígonos (Parte 3-Varredura) /* PARTES 1 E 2 */ for(s=min; s<ma; s++) /* para cada linha de scan */ num_inters = ; for(i=; i<num_arestas; i++) if (aresta[i]._ma < s) /* retira da lista de arestas */ aresta[i] = aresta[num_arestas-1]; num_arestas--; if((s>=aresta[i]._min)&&(s<aresta[i]._ma)) /* intersepta */ vs[num_inters] = aresta[i].s; aresta[i].s += aresta[i].delta; /* atualiza o s */ num_inters++; /* for */ ordena(vs,,num_inters-1); /* ordena as interseções */ for(i=;i<num_inters;i+=2) if (vs[i]+1 <= vs[i+1]) /* fill */ hline(vs[i],vs[i+1],s,ff); /* FIM */ Rasterização de Primitivas 11

12 Ordenação no Algoritmo de Fill static void ordena(int *vs, int left, int right) int i,j; int a; i = left; j = right; a = vs[(left + right)/2]; do while (vs[i] < a && i < right) i++; while (a < vs[j] && j > left) j--; if (i<=j) int b = vs[i]; vs[i] = vs[j]; vs[j] = b; i++;j--; while (i<=j); if (left < j) ordena(vs,left,j); if (i < right) ordena(vs,i,right); Caso Particular: Triângulo A c b B a C Rasterização de Primitivas 12

13 Stipples, patterns e imagens Stipple void SetPiel(int,int ) int i=(-)%w; int j=(-)%h; h = 5 if (stipple[i][j]) w = 5 Piel(,,foreground); else if (backopacit) Piel(,,background); Pattern void SetPiel(int,int ) color = pattern[(-)%w][(-)%h] Piel(,,color); Rasterização de Primitivas 13

Pipeline Gráfico Cluter & Durand, MIT

Pipeline Gráfico Cluter & Durand, MIT INF 1366 Computação Gráfica Interativa Rasterização Alberto B. Raposo e Marcelo Gattass [email protected] http://www.tecgraf.puc-rio.br/~abraposo/inf1366/index.htm Modeling Transformations Illumination

Leia mais

Prof. Julio Arakaki. Ciência da Computação

Prof. Julio Arakaki. Ciência da Computação 1 Primitivos gráficos - algoritmos Prof. Julio Arakaki 1 Algoritmos de reta Reta => infinitamente fina, ou seja, área = 0 Problemas para apresentação num monitor raster utilizando-se pixels: deve-se escolher

Leia mais

Primitivas Gráficas. Prof. Márcio Bueno {cgtarde,cgnoite}@marciobueno.com. Fonte: Material do Prof. Robson Pequeno de Sousa e do Prof.

Primitivas Gráficas. Prof. Márcio Bueno {cgtarde,cgnoite}@marciobueno.com. Fonte: Material do Prof. Robson Pequeno de Sousa e do Prof. Primitivas Gráficas Prof. Márcio Bueno {cgtarde,cgnoite}@marciobueno.com Fonte: Material do Prof. Robson Pequeno de Sousa e do Prof. Robson Lins Traçado de Primitivas em Dispositivos Matriciais Conversão

Leia mais

Problema. Conversão Matricial. Octantes do Sistema de Coordenadas Euclidiano. Sistema de Coordenadas do Dispositivo. Maria Cristina F.

Problema. Conversão Matricial. Octantes do Sistema de Coordenadas Euclidiano. Sistema de Coordenadas do Dispositivo. Maria Cristina F. Problema Conversão Matricial Maria Cristina F. de Oliveira Traçar primitivas geométricas (segmentos de reta, polígonos, circunferências, elipses, curvas,...) no dispositivo matricial rastering = conversão

Leia mais

COMPUTAÇÃO GRÁFICA. Rasterização e Preenchimento de Regiões. MARCO ANTONIO GARCIA DE CARVALHO Fevereiro de 2009. Computação Gráfica

COMPUTAÇÃO GRÁFICA. Rasterização e Preenchimento de Regiões. MARCO ANTONIO GARCIA DE CARVALHO Fevereiro de 2009. Computação Gráfica COMPUTAÇÃO GRÁFICA Rasterização e Preenchimento de Regiões Objetivos Conhecer os fundamentos da construção de linhas e círculos Conhecer o modelo scan-line modelo de sementes para preenchimento de polígonos

Leia mais

Computação Gráfica 04

Computação Gráfica 04 Universidade Federal do Vale do São Francisco Curso de Engenharia de Computação Computação Gráfica 04 Prof. Jorge Cavalcanti [email protected] www.univasf.edu.br/~jorge.cavalcanti www.twitter.com/jorgecav

Leia mais

Computação Gráfica. Rasterização de Linhas Professora Sheila Cáceres

Computação Gráfica. Rasterização de Linhas Professora Sheila Cáceres Computação Gráfica Rasterização de Linhas Professora Sheila Cáceres Equação da Reta Apresenta a seguinte lei de formação: y=f(x) = ax + b sendo a e b números reais e a diferente de zero. Observação: a

Leia mais

INF 1010 Estruturas de Dados Avançadas

INF 1010 Estruturas de Dados Avançadas INF 1010 Estruturas de Dados Avançadas Listas de Prioridades e Heaps 1 Listas de Prioridades Em muitas aplicações, dados de uma coleção são acessados por ordem de prioridade A prioridade associada a um

Leia mais

Pipeline de Visualização 2D

Pipeline de Visualização 2D Pipeline de Visualização 2D André Tavares da Silva [email protected] Capítulo 2 do Foley Requisitos de matemática para CG Vetores e pontos Matrizes Transformações geométricas Pontos e espaços afim Representação

Leia mais

Preenchimento de Áreas e de Polígonos. Antonio L. Bajuelos Departamento de Matemática Universidade de Aveiro

Preenchimento de Áreas e de Polígonos. Antonio L. Bajuelos Departamento de Matemática Universidade de Aveiro Preenchimento de Áreas e de Polígonos (Filled-Area Primitives) Antonio L. Bajuelos Departamento de Matemática Universidade de Aveiro Preenchimento de áreas é o processo de coloração do interior de uma

Leia mais

Rasterização de primitivas 2D e Pipeline 2D. Soraia Raupp Musse

Rasterização de primitivas 2D e Pipeline 2D. Soraia Raupp Musse Rasterização de primitivas 2D e Pipeline 2D Soraia Raupp Musse Algoritmos de rasterização para primitivas 2D Objetivo: Aproximar primitivas matemáticas descritas através de vértices por meio de um conjunto

Leia mais

Introdução à Programação. Armazenamento de Grande Quantidade de Informação Usando Vetores

Introdução à Programação. Armazenamento de Grande Quantidade de Informação Usando Vetores Introdução à Programação Armazenamento de Grande Quantidade de Informação Usando Vetores Armazenando Grande Quantidade de Informação Como armazenar tanta informação? Vetores! 2 Tópicos da Aula Hoje, aprenderemos

Leia mais

Primitivos gráficos - algoritmos

Primitivos gráficos - algoritmos Primitivos gráficos - algoritmos Prof. Julio Arakaki 1 Algoritmos de reta Reta => infinitamente fina, ou seja, área = 0 Problemas para apresentação num monitor raster utilizando-se pixels: deve-se escolher

Leia mais

Computação Gráfica. Rasterização. Aula 4. Engenharia de Computação. CEFET/RJ campus Petrópolis. Prof. Luis Retondaro

Computação Gráfica. Rasterização. Aula 4. Engenharia de Computação. CEFET/RJ campus Petrópolis. Prof. Luis Retondaro Computação Gráfica Engenharia de Computação CEFET/RJ campus Petrópolis Prof. Luis Retondaro Aula 4 Rasterização Representação Vetorial x Matricial Normalmente, gráficos são definidos através de primitivas

Leia mais

Imagem Vetorial x Imagem Matricial. Conversão Matricial de Primitivas Gráficas. Sistema de Coordenadas do Dispositivo. Problema

Imagem Vetorial x Imagem Matricial. Conversão Matricial de Primitivas Gráficas. Sistema de Coordenadas do Dispositivo. Problema Conversão Matricial de Primitivas Gráficas Imagem Vetorial x Imagem Matricial Maria Cristina F. de Oliveira março 2009 2 Problema Traçar primitivas geométricas (segmentos de reta, polígonos, circunferências,

Leia mais

Algoritmos e Programação

Algoritmos e Programação Universidade Federal do Vale do São Francisco Curso de Engenharia da Produção / Elétrica Algoritmos e Programação Parte 05 Prof. Jorge Cavalcanti [email protected] www.univasf.edu.br/~jorge.cavalcanti

Leia mais

Métodos Computacionais. Fila

Métodos Computacionais. Fila Métodos Computacionais Fila Definição de Fila Fila é uma estrutura de dados dinâmica onde: Inserção de elementos se dá no final e a remoção no início O primeiro elemento que entra é o primeiro que sai

Leia mais

INF 1007 Programação II

INF 1007 Programação II INF 1007 Programação II Aula 06 Tipos Estruturados Edirlei Soares de Lima Dados Compostos Até agora somente utilizamos tipos de dados simples: char, int, float, double. Muitas vezes

Leia mais

Algoritmos de Rasterização e Recorte

Algoritmos de Rasterização e Recorte Algoritmos de Rasterização e Recorte 35T56 Sala 3E3 Bruno Motta de Carvalho DIMAp Sala 15 Ramal 227 1 Desenhando linhas Sequência de pixels deve estar o mais próximo possível da linha original Quais propriedades

Leia mais

Primitivos gráficos - algoritmos

Primitivos gráficos - algoritmos Primitivos gráficos - algoritmos Prof. Julio Arakaki 1 Algoritmos de reta Reta => infinitamente fina, ou seja, área = 0 Problemas para apresentação num monitor raster utilizando-se pixels: deve-se escolher

Leia mais

ALGORITMOS E ESTRUTURAS DE DADOS CES-11 CES-11 CES-11

ALGORITMOS E ESTRUTURAS DE DADOS CES-11 CES-11 CES-11 ALGORITMOS E ESTRUTURAS DE DADOS Prof. Paulo André Castro [email protected] Sala 110 Prédio da Computação www.comp.ita.br/~pauloac IECE - ITA Uma árvore binária é: uma árvore vazia; ou uma árvore onde qualquer

Leia mais

Métodos Computacionais. Árvores

Métodos Computacionais. Árvores Métodos Computacionais Árvores Árvores Vetores e Listas são ótimos para representar estrutura de dados lineares, mas não para modelar dados hierárquicos Exemplos de dados hierárquicos: sistema de arquivos

Leia mais

Prof. Dr. Leandro Alves Neves. Conceitos Fundamentais. Algoritmos de Conversão Matricial.

Prof. Dr. Leandro Alves Neves. Conceitos Fundamentais. Algoritmos de Conversão Matricial. Informática II Conteúdo 03 Prof. Dr. Leandro Alves Neves Sumário Rasterização Conceitos Fundamentais. Algoritmos de Conversão Matricial. Polígonos Construção e Preenchimento de polígonos com formas arbitrárias

Leia mais

Introdução a POO. Introdução a Linguagem C++ e POO

Introdução a POO. Introdução a Linguagem C++ e POO Introdução a POO Marcio Santi Linguagem C++ Introdução a Linguagem C++ e POO Programação Orientada a Objetos (POO) e C++ Recursos C++ não relacionados às classes Incompatibilidades entre C e C++ Classes

Leia mais

Busca. Pesquisa sequencial

Busca. Pesquisa sequencial Busca Banco de dados existem para que, de tempos em tempos, um usuário possa localizar o dado de um registro, simplesmente digitando sua chave. Uma tabela ou um arquivo é um grupo de elementos, cada um

Leia mais

INF1007 - PROGRAMAÇÃO II LISTA DE EXERCÍCIOS 4

INF1007 - PROGRAMAÇÃO II LISTA DE EXERCÍCIOS 4 INF1 - PROGRAMAÇÃO II LISTA DE EXERCÍCIOS 4 1. Considere uma aplicação que utiliza pontos, retângulos e círculos para representações gráficas. Um ponto é composto pelas suas coordenadas x e y, um retângulo

Leia mais

Estruturas de Dados. Prof. Gustavo Willam Pereira Créditos: Profa. Juliana Pinheiro Campos

Estruturas de Dados. Prof. Gustavo Willam Pereira Créditos: Profa. Juliana Pinheiro Campos Estruturas de Dados Prof. Gustavo Willam Pereira Créditos: Profa. Juliana Pinheiro Campos Árvores Conceitos Árvores binárias Árvores binárias de pesquisa Árvores binárias balanceadas Árvores ESTRUTURAS

Leia mais

INF 1620 P1-10/04/02 Questão 1 Nome:

INF 1620 P1-10/04/02 Questão 1 Nome: INF 1620 P1-10/04/02 Questão 1 Considere uma disciplina que adota o seguinte critério de aprovação: os alunos fazem duas provas (P1 e P2) iniciais; se a média nessas duas provas for maior ou igual a 5.0,

Leia mais

Conversão Matricial. Prof. Fernando V. Paulovich http://www.icmc.usp.br/~paulovic [email protected]. 20 de maio de 2011. SCC0250 - Computação Gráca

Conversão Matricial. Prof. Fernando V. Paulovich http://www.icmc.usp.br/~paulovic paulovic@icmc.usp.br. 20 de maio de 2011. SCC0250 - Computação Gráca Conversão Matricial SCC0250 - Computação Gráca Prof. Fernando V. Paulovich http://www.icmc.usp.br/~paulovic [email protected] Instituto de Ciências Matemáticas e de Computação (ICMC) Universidade de

Leia mais

Desenho de Segmentos de Recta

Desenho de Segmentos de Recta Desenho de Segmentos de Recta Sistemas Gráficos/ Computação Gráfica e Interfaces 1 Alg. para desenho de Segmentos de Recta - Motivação A maior parte das primitivas 2D, desenhadas centenas ou mesmo milhares

Leia mais

Introdução a Programação. Ponteiros e Strings, Alocação Dinâmica

Introdução a Programação. Ponteiros e Strings, Alocação Dinâmica Introdução a Programação Ponteiros e Strings, Alocação Dinâmica Tópicos da Aula Hoje aprenderemos a relação entre ponteiros e strings Ponteiros para strings X Vetores de Caracteres Vetores de ponteiros

Leia mais

CES-11. Algoritmos e Estruturas de Dados. Carlos Alberto Alonso Sanches Juliana de Melo Bezerra

CES-11. Algoritmos e Estruturas de Dados. Carlos Alberto Alonso Sanches Juliana de Melo Bezerra CES-11 Algoritmos e Estruturas de Dados Carlos Alberto Alonso Sanches Juliana de Melo Bezerra CES-11 Pilhas Filas Deques Pilhas,,f filas e deques Vimos que as listas lineares admitem inserção e eliminação

Leia mais

Algoritmos de Varrimento para Desenho de Primitivas 2D

Algoritmos de Varrimento para Desenho de Primitivas 2D Algoritmos de Varrimento para Desenho de Primitivas 2D 24T12 Sala 3F5 Bruno Motta de Carvalho DIMAp Sala 15 Ramal 327 1 Desenhando linhas Sequência de pixels deve estar o mais próximo possível da linha

Leia mais

Exemplos de utilização de primitivas (nível API) M.Próspero

Exemplos de utilização de primitivas (nível API) M.Próspero Eemplos de utilização de primitivas (nível API)

Leia mais

Nesta aula iremos continuar com os exemplos de revisão.

Nesta aula iremos continuar com os exemplos de revisão. Capítulo 8 Nesta aula iremos continuar com os exemplos de revisão. 1. Exemplos de revisão Exemplo 1 Ache a equação do círculo C circunscrito ao triângulo de vértices A = (7, 3), B = (1, 9) e C = (5, 7).

Leia mais

Expressões. Prof. Alberto Costa Neto [email protected]. Linguagens de Programação. Departamento de Computação Universidade Federal de Sergipe

Expressões. Prof. Alberto Costa Neto alberto@ufs.br. Linguagens de Programação. Departamento de Computação Universidade Federal de Sergipe Linguagens de Programação Departamento de Computação Universidade Federal de Sergipe Expressão é uma frase de um programa que ao ser avaliada retorna um valor Tipos Literais Agregados Chamadas de Função

Leia mais

UNIVERSIDADE DA BEIRA INTERIOR

UNIVERSIDADE DA BEIRA INTERIOR UNIVERSIDADE DA BEIRA INTERIOR Programação II 1º Semestre Frequência 2 Resolução 07/01/2019 1. [1,25 val] - Análise de Complexidade dos Algoritmos Considere o seguinte bloco de código em linguagem C: for

Leia mais

BUSCA EM LISTAS LISTAS SEQÜENCIAIS, LISTAS SIMPLESMENTE E DUPLAMENTE ENCADEADAS E LISTAS CIRCULARES

BUSCA EM LISTAS LISTAS SEQÜENCIAIS, LISTAS SIMPLESMENTE E DUPLAMENTE ENCADEADAS E LISTAS CIRCULARES BUSCA EM LISTAS LISTAS SEQÜENCIAIS, LISTAS SIMPLESMENTE E DUPLAMENTE ENCADEADAS E LISTAS CIRCULARES ALGORITMOS DE BUSCA EM LISTAS COM ALOCAÇÃO SEQÜENCIAL Busca em Listas Lineares A operação de busca é

Leia mais

INF1007: Programação 2 8 Listas Encadeadas. (c) Dept. Informática - PUC-Rio 1

INF1007: Programação 2 8 Listas Encadeadas. (c) Dept. Informática - PUC-Rio 1 INF1007: Programação 2 8 Listas Encadeadas (c) Dept. Informática - PUC-Rio 1 Tópicos Principais Motivação Listas encadeadas Implementações recursivas Listas de tipos estruturados (c) Dept. Informática

Leia mais

10. Listas Encadeadas

10. Listas Encadeadas 10. Listas Encadeadas W. Celes e J. L. Rangel Para representarmos um grupo de dados, já vimos que podemos usar um vetor em C. O vetor é a forma mais primitiva de representar diversos elementos agrupados.

Leia mais

Algoritmos e Estruturas de Dados: Árvore Binária

Algoritmos e Estruturas de Dados: Árvore Binária Algoritmos e Estruturas de Dados: Árvore Binária Exemplo de árvore binária e são os filhos de Altura desta árvore é 4 é a raiz da sub-árvore esquerda de Rômulo Silva de Oliveira Departamento de Automação

Leia mais

Pesquisa Sequencial e Binária

Pesquisa Sequencial e Binária Pesquisa Sequencial e Binária Prof. Túlio Toffolo http://www.toffolo.com.br BCC202 Aula 20 Algoritmos e Estruturas de Dados I Pesquisa em Memória Primária Introdução - Conceitos Básicos Pesquisa Sequencial

Leia mais

INF 1010 Estruturas de Dados Avançadas

INF 1010 Estruturas de Dados Avançadas INF Estruturas de Dados Avançadas Grafos // DI, PUC-Rio Estruturas de Dados Avançadas. Algoritmo de Dijkstra 8 8 Algoritmo de Dijkstra 8 8 8 Algoritmo de Dijkstra 8 8 8 Algoritmo de Dijkstra 8 8 8 8 8

Leia mais

Questão 1: O histograma deve ser: [0, 1, 4, 2, 0, 3, 0,, 0, 2] Exemplo: Para a matriz

Questão 1: O histograma deve ser: [0, 1, 4, 2, 0, 3, 0,, 0, 2] Exemplo: Para a matriz MAC122 rincípios de Desenvolvimento de Algoritmos Lista de exercícios 01 rof.: aulo Miranda Instituto de Matemática e Estatística (IME) Universidade de São aulo (US) Alocação Dinâmica & Matrizes Questão

Leia mais

Listas Lineares. continuando...

Listas Lineares. continuando... Listas Lineares continuando... 1 Listas! relembrando: listas lineares agrupa informações referentes aum conjunto de elementos que, de alguma forma, se relacionam entre si! Uma lista linear ou está vazia,

Leia mais

Estruturas (Registros)

Estruturas (Registros) Estruturas (Registros) Agrupa conjunto de tipos de dados distintos sob um único nome string string inteiro inteiro inteiro float float Cadastro Pessoal Nome Endereço Telefone Idade Data de Nascimento Peso

Leia mais

Algoritmos e Programação II. Sobrecarga

Algoritmos e Programação II. Sobrecarga Algoritmos e Programação II Baseado no Material do Prof. Júlio Machado Sobrecarga Em várias linguagens é comum encontrarmos rotinas que fazem basicamente a mesma coisa, porém, têm nomes distintos porque

Leia mais

Algoritmos e Programação Estruturada

Algoritmos e Programação Estruturada Algoritmos e Programação Estruturada Virgínia M. Cardoso Linguagem C Criada por Dennis M. Ritchie e Ken Thompson no Laboratório Bell em 1972. A Linguagem C foi baseada na Linguagem B criada por Thompson.

Leia mais

UNIVERSIDADE FEDERAL FLUMINENSE

UNIVERSIDADE FEDERAL FLUMINENSE UNIVERSIDADE FEDERAL FLUMINENSE Escola de Engenharia Industrial Metalúrgica de Volta Redonda PROVAS RESOLVIDAS DE CÁLCULO VETORIAL Professora Salete Souza de Oliveira Aluna Thais Silva de Araujo P1 Turma

Leia mais

Esboço de Gráficos (resumo)

Esboço de Gráficos (resumo) Esboço de Gráficos (resumo) 1 Máximos e Mínimos Definição: Diz-se que uma função tem um valor máximo relativo (máximo local) em c se existe um intervalo ( a, b) aberto contendo c tal que f ( c) f ( x)

Leia mais

INF1007: Programação 2 10 Árvores Binárias. (c) Dept. Informática - PUC-Rio 1

INF1007: Programação 2 10 Árvores Binárias. (c) Dept. Informática - PUC-Rio 1 INF1007: Programação 2 10 Árvores Binárias (c) Dept. Informática - PUC-Rio 1 Tópicos Principais Introdução Árvores binárias Representação em C Ordens de percurso em árvores binárias Altura de uma árvore

Leia mais

O mundo à nossa volta é povoado de formas as mais variadas tanto nos elementos da natureza como nos de objetos construídos pelo homem.

O mundo à nossa volta é povoado de formas as mais variadas tanto nos elementos da natureza como nos de objetos construídos pelo homem. TRIDIMENSIONALIDADE O mundo à nossa volta é povoado de formas as mais variadas tanto nos elementos da natureza como nos de objetos construídos pelo homem. As formas tridimensionais são aquelas que têm

Leia mais

Listas (Parte 2) Túlio Toffolo [email protected] www.toffolo.com.br. BCC202 Aula 10 Algoritmos e Estruturas de Dados I

Listas (Parte 2) Túlio Toffolo tulio@toffolo.com.br www.toffolo.com.br. BCC202 Aula 10 Algoritmos e Estruturas de Dados I Listas (Parte 2) Túlio Toffolo [email protected] www.toffolo.com.br BCC202 Aula 10 Algoritmos e Estruturas de Dados I Listas Encadeadas Características: Tamanho da lista não é pré-definido Cada elemento

Leia mais

Programação Estruturada I

Programação Estruturada I Programação Estruturada I Introdução a Linguagem C Prof. Thiago Caproni Tavares 1 Prof. Mateus dos Santos 2 1 [email protected] 2 [email protected] Última Atualização:

Leia mais

Linguagem C: Árvores Binarias

Linguagem C: Árvores Binarias Instituto de C Linguagem C: Árvores Binarias Luis Martí Instituto de Computação Universidade Federal Fluminense [email protected] - http://lmarti.com Tópicos Principais Introdução Árvores binárias Implementação

Leia mais

Estruturas de Dados I

Estruturas de Dados I UFES - Curso de verão 2011 Estruturas de Dados I Profa. Juliana Pinheiro Campos [email protected] Árvores binárias de busca (ou São árvores projetadas para dar suporte a operações de busca de forma eficiente.

Leia mais

Universidade Federal do Vale do São Francisco. Estruturas de Dados. Professor: Marcelo Santos Linder E-mail: [email protected].

Universidade Federal do Vale do São Francisco. Estruturas de Dados. Professor: Marcelo Santos Linder E-mail: marcelo.linder@univasf.edu. Universidade Federal do Vale do São Francisco Estruturas de Dados Professor: Marcelo Santos Linder E-mail: [email protected] Ementa Alocação dinâmica de memória; Vetores, pilhas, filas, listas:

Leia mais

INF 1007 Programação II

INF 1007 Programação II INF 1007 Programação II Aula 14 Árvores Binárias Edirlei Soares de Lima Árvores Uma estrutura de dados do tipo árvore permite que dados sejam organizados de maneira hierárquica.

Leia mais

PROVA P2 INF1007-31/10/2014 Programação II

PROVA P2 INF1007-31/10/2014 Programação II ALUNO: MATRÍCULA: (Nome Completo em Letra de Imprensa) ASSINATURA: TURMA: Instruções Gerais: 1. A duração da prova é de 1:50h; 2. A tolerância de entrada é de 30 min após o início da prova. Se um aluno

Leia mais

Geometria Computacional

Geometria Computacional Universidade Federal do Espírito Santo Centro de Ciências Agrárias CCA UFES Departamento de Computação Universidade Federal do Espírito Santo CCA UFES Geometria Computacional Tópicos Especiais em Programação

Leia mais

Algoritmo de Dijkstra

Algoritmo de Dijkstra lgoritmo de Dijkstra Caminhos mínimos em Grafos Considere um grafo orientado ponderado G = (V,E) em que cada aresta possui um rótulo não negativo associado que define o custo da aresta, e um dos vértices

Leia mais

Universidade da Beira Interior Cursos: Matemática /Informática e Ensino da Informática

Universidade da Beira Interior Cursos: Matemática /Informática e Ensino da Informática Folha 1-1 Introdução à Linguagem de Programação JAVA 1 Usando o editor do ambiente de desenvolvimento JBUILDER pretende-se construir e executar o programa abaixo. class Primeiro { public static void main(string[]

Leia mais

Estruturas de Dados Aula 12: Outras Implementações de Listas 18/04/2011

Estruturas de Dados Aula 12: Outras Implementações de Listas 18/04/2011 Estruturas de Dados Aula 12: Outras Implementações de Listas 18/04/2011 Fontes Bibliográficas Waldemar Celes, Renato Cerqueira, José Lucas Rangel, Introdução a Estruturas de Dados, Editora Campus (2004)

Leia mais

Algoritmos e Estruturas de Dados: Árvore Binária de Busca

Algoritmos e Estruturas de Dados: Árvore Binária de Busca Busca pelo nodo 72 Árvore Binária de Busca Introdução 2/21 Algoritmos e Estruturas de Dados: Árvore Binária de Busca 44 Raiz Rômulo Silva de Oliveira Departamento de Automação e Sistemas DAS UFSC [email protected]

Leia mais

Técnicas de Detecção de Colisão para Jogos

Técnicas de Detecção de Colisão para Jogos Técnicas de Detecção de Colisão para Jogos por Leandro Silva Técnicas de Detecção de Colisão para Jogos por: Gustavo Russo Zanardo Esse artigo visa mostrar as principais técnicas para detecção de colisão

Leia mais

%0/"1&2$&$3*$34+/!+&.05#!.62!+& #*+!&,&'-&"$.$"#/$&

%0/1&2$&$3*$34+/!+&.05#!.62!+& #*+!&,&'-&$.$#/$& !"#$%'()( %0/"12$$3*$34+/!+.05#!.62!+ #*+!,'-"$.$"#/$ 43#3)56(76'()( 48039:/;?8#/" @0/A$""/0; BC-2BBDEF!+GEGFFBEHIG #$.+)789:;?@ 8

Leia mais

Aula 3 Alocação Dinâmica

Aula 3 Alocação Dinâmica Aula 3 Alocação Dinâmica Universidade Federal de Santa Maria Colégio Agrícola de Frederico Westphalen Curso Superior de Tecnologia em Sistemas de Internet Prof. Bruno B. Boniati www.cafw.ufsm.br/~bruno

Leia mais

Índice. Capítulo 2 Estrutura de Dados sequencial com armazenamento sequencial

Índice. Capítulo 2 Estrutura de Dados sequencial com armazenamento sequencial Índice i Índice Capítulo 2 Estrutura de Dados sequencial com armazenamento sequencial 1. A Estrutura Abstrata de Dados Lista... 1 1.1. Definição... 1 1.2. Implementação de Listas utilizando armazenamento

Leia mais

6. Geometria, Primitivas e Transformações 3D

6. Geometria, Primitivas e Transformações 3D 6. Geometria, Primitivas e Transformações 3D Até agora estudamos e implementamos um conjunto de ferramentas básicas que nos permitem modelar, ou representar objetos bi-dimensionais em um sistema também

Leia mais

Aula 2. Objetivos. Encapsulamento na linguagem Java; Utilizando a referência this.

Aula 2. Objetivos. Encapsulamento na linguagem Java; Utilizando a referência this. Aula 2 Objetivos Encapsulamento na linguagem Java; Utilizando a referência this. Encapsulamento, data hiding é um conceito bastante importante em orientação a objetos. É utilizado para restringir o acesso

Leia mais

Tipo de Dados em Linguagem C

Tipo de Dados em Linguagem C Tipo de Dados em Linguagem C Principais tipos de dados em C int : tipo de dados inteiros (exemplo: 1, -3, 100, -9, 18, etc.) float : tipo de dados reais (exemplo: 1.33, 3.14, 2.00, -9.0, 1.8, etc.) Ocupa

Leia mais

Conceitos de Linguagens de Programação

Conceitos de Linguagens de Programação Conceitos de Linguagens de Programação Aula 07 Nomes, Vinculações, Escopos e Tipos de Dados Edirlei Soares de Lima Introdução Linguagens de programação imperativas são abstrações

Leia mais

Algoritmos e Estrutura de Dados II

Algoritmos e Estrutura de Dados II Universidade Federal do Vale do São Francisco Algoritmos e Estrutura de Dados II Professor: Marcelo Santos Linder E-mail: [email protected] Ementa Árvores B, grafos e tabelas de hash: alocação

Leia mais

Curso de C. Memória Dinâmica 17/05/2010 16:33 1

Curso de C. Memória Dinâmica 17/05/2010 16:33 1 Curso de C Memória Dinâmica 17/05/2010 16:33 1 Memória Dinâmica Curso C - IC/UNICAMP Roteiro: Memória dinâmica Vetores dinâmicos Listas ligadas 17/05/2010 16:33 @Arnaldo V. Moura, Daniel F. Ferber 2 Conceitos:

Leia mais

Módulo 10 Listas Encadeadas

Módulo 10 Listas Encadeadas Estruturas de Dados Módulo 10 Listas Encadeadas 9/8/2005 (c) Dept. Informática - PUC-Rio 1 Referências Waldemar Celes, Renato Cerqueira, José Lucas Rangel, Introdução a Estruturas de Dados, Editora Campus

Leia mais

Programação com Posix Threads

Programação com Posix Threads 9 Programação com Posix Threads Revisão: Data: 11-03-2016 Cap. 9 1/6 Programação multi-threaded com Pthreads 9.1. O que é uma thread? Um processo represente a execução pelo sistema operativo dum programa.

Leia mais

Universidade Federal do Paraná

Universidade Federal do Paraná Universidade Federal do Paraná Setor de Ciências Exatas Departamento de Matematica Prof. Juan Carlos Vila Bravo Curitiba, 1 de Dezembro de 005 1. A posição de uma particula é dada por: r(t) = (sen t)i+(cost)j

Leia mais

Computação I - C Prova /10/ Profs. Adriano Cruz e Valeria Bastos

Computação I - C Prova /10/ Profs. Adriano Cruz e Valeria Bastos Computação I - C Prova 2 2016-2 14/10/2016 - Profs. Adriano Cruz e Valeria Bastos Nome: DRE: Observação: Justifique todas as respostas dadas. Some nte serão aceitas respostas com justificativas. Questão

Leia mais

A Linguagem Java. Alberto Costa Neto DComp - UFS

A Linguagem Java. Alberto Costa Neto DComp - UFS A Linguagem Java Alberto Costa Neto DComp - UFS 1 Roteiro Comentários Variáveis Tipos Primitivos de Dados Casting Comandos de Entrada e Saída Operadores Constantes 2 Comentários /** Classe para impressão

Leia mais

2. Constantes e Variáveis

2. Constantes e Variáveis 2. Constantes e Variáveis Neste capitulo veremos como os dados constantes e variáveis são manipulados pela linguagem C. O que são constantes inteiras, reais, caracteres e strings. Quais são as regras de

Leia mais

Estruturas de Dados Aula 15: Árvores 17/05/2011

Estruturas de Dados Aula 15: Árvores 17/05/2011 Estruturas de Dados Aula 15: Árvores 17/05/2011 Fontes Bibliográficas Livros: Introdução a Estruturas de Dados (Celes, Cerqueira e Rangel): Capítulo 13; Projeto de Algoritmos (Nivio Ziviani): Capítulo

Leia mais

Árvore Binária de Busca

Árvore Binária de Busca Árvore Binária de Busca 319 Árvore Binária de Busca! construída de tal forma que, para cada nó:! nós com chaves menores estão na sub-árvore esquerda! nós com chaves maiores (ou iguais) estão na subárvore

Leia mais