Algoritmos de Recorte em 2D

Documentos relacionados
Introdução à Computação Gráfica Recorte. Claudio Esperança Paulo Roma Cavalcanti

O Problema de Visibilidade. Computação Gráfica Recorte. Onde Acontece? O que é Recorte? Renato Ferreira

Computação Gráfica e Processamento de Imagens. recorte ( clipping ) de : o segmentos de retas o polígonos o textos. Prof.

Transformações de Visualização 2D: Clipping. Antonio L. Bajuelos Departamento de Matemática Universidade de Aveiro

Visualização 2D: - Transformação window to viewport - Clipping

RECORTE (CLIPPING) por janelas rectangulares

Projeções e Transformações em 3D

Computação Gráfica - OpenGl 02

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

Pipeline de Visualização 3D

Introdução ao Processamento e Síntese de imagens Recorte 2D

Objetos definidos no seu próprio sistema de coordenadas

Instituto de Computação Bacharelado em Ciência da Computação Disciplina: Computação Gráfica Primeira lista de exercícios

de Recta e Polígonos

Instituto de Computação Bacharelado em Ciência da Computação Disciplina: Computação Gráfica Primeira lista de exercícios

Computação Gráfica e Processamento de Imagens. - mapeamento - visualização. Prof. Julio Arakaki

3D no OpenGL. Visualização e Transformações Perspectiva. Transformações do Modelview. Processo

Pipeline de Visualização 2D

Introdução à Computação Gráfica Visibilidade e Recorte

Exame Tipo Computação Gráfica

Computação Gráfica. Agostinho Brito. Departamento de Engenharia da Computação e Automação Universidade Federal do Rio Grande do Norte

Transformações Geométricas

Transformações 3D. Soraia Raupp Musse

Computação Gráfica. Engenharia de Computação. CEFET/RJ campus Petrópolis. Prof. Luis Retondaro. Aula 6. Projeções

Computação Gráfica. Licenciatura em Engenharia Informática e de Computadores Alameda / Taguspark. Terceiro Teste 19 de Maio de 2012

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

Rendering de Polígonos. Determinação de Superfícies Visíveis. Back Face Culling. Back Face Culling. Back Face Culling. Back Face Culling.

AULA 4. Atividade Complementar 10: Sistemas lineares 2x2 e sua interpretação geométrica 31

DIRETORIA DE PESQUISA E PÓS-GRADUAÇÃO PROJETO: TECNOLOGIAS DE INFORMAÇÃO E COMUNICAÇÃO NO PROCESSO DE ENSINO E APRENDIZAGEM DE MATEMÁTICA

COMPUTAÇÃO GRÁFICA - PROF. MSC. LEANDRO TONIETTO SELEÇÃO DE OBJETOS EM OPENGL - SELECT BUFFER

Visibilidade. Licenciatura em Engenharia Informática e de Computadores Computação Gráfica. Edward Angel, Cap. 7 Apontamentos CG

1º Exame Computação Gráfica

Computação Gráfica. Representação e Modelagem

Desenho de uma matriz de retângulos Serve de base para o exercício das cores

Primeiro Projeto de PG: Lista de Temas Selecionados

Exame de 1ª Época Computação Gráfica

UNIVERSIDADE REGIONAL DO NOROESTE DO ESTADO DO RIO GRANDE DO SUL DEPARTAMENTO DE FÍSICA, ESTATÍSTICA E MATEMÁTICA

Cap. 2: Executando o Cálculo de Volumes

Computação Gráfica 09

Algoritmos geométricos

Plano Director Municipal. Tecnologias de Informação Geográfica

1º Teste de Computação Gráfica

1 Para expressar um ponto intermediário em função dos pontos extremos, precisamos

Fundamentos da Computação Gráfica Lista de Exercícios Marcelo Gattass TeCGraf/Departamento de Informática/PUC-Rio 19jun2003

Introdução à Computação Gráfica. Claudio Esperança Paulo Roma Cavalcanti

Introdução ao Processamento e Síntese de imagens -Linhas e superfícies escondidas

Algoritmos de Rasterização e Recorte

CIV2802 Sistemas Gráficos para Engenharia

Remoção de Faces Traseiras Recorte

d) Por dois pontos distintos passa uma única reta

Sumário Objetivos da Lição Estudo de Caso Exercício Exercício Exercício 3...

Introdução Geral a Computação Gráfica. Universidade Católica de Pelotas Curso de Engenharia da Computação Disciplina de Computação Gráfica

Computação Gráfica. Prof. MSc. André Yoshimi Kusumoto

Apostila Impress 01. Partes da Janela Principal do Impress

UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO 9º PERÍODO. Profª Danielle Casillo

Gráficos de posição e de velocidade versus tempo para o estudo dos movimentos

Computação Gráfica - 12

SISTEMA DE CÁLCULO DE POPULAÇÃO E VARIÁVEIS CENSITÁRIAS

Manual de operação do sistema Desenhador Geográfico. 05/2017 Versão 1.0

Computação Gráfica. Licenciatura em Engenharia Informática e de Computadores Alameda/Taguspark. 1º Exame 29 Junho de 2010

Computação Gráfica II

QGIS. Recorte de Shapefile com as ferramentas Corte (Clip) e Diferença: uma abordagem sobre geometrias no QGIS TUTORIAL

Preenchimento de Polígonos

UFRGS - UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL DEPARTAMENTO DE DESIGN E EXPRESSÃO GRÁFICA COMPUTAÇÃO GRÁFICA 1 JÉFERSON DOUGLAS DE FAVERI

Seções de Prismas Julho/ 2009

Nº Nome: Antes de começar: Identifique todas as folhas com o seu número.

Aula 4 TECNOLOGIA EM JOGOS DIGITAIS PROGRAMACAO E INTEGRACAO DE JOGOS I. Marcelo Henrique dos Santos

Transcrição:

Algoritmos de Recorte em 2D Computação Gráfica DCC065 Prof. Rodrigo Luis de Souza da Silva, D.Sc.

Sumário Conceito de Recorte (Clipping) Introdução Algoritmo simples (Força Bruta) Algoritmo de Cohen-Sutherland Recorte por área Algoritmo de Sutherland- OpenGL Relação Window x Viewport 2

s Uma cena é composta por uma série de objetos em coordenadas do mundo Coordenadas do Mundo 3

s Quando apresentamos uma cena, apenas os objetos contidos em uma janela em particular são mostrados wy max wy min wx min wx max Coordenadas do Mundo 4

s Desenhar objetos tem um custo computacional, por isso é necessário recortar tudo que está fora da janela wy max wy min wx min wx max Coordenadas do Mundo 5

Recorte Para a imagem abaixo, considere quais linhas e pontos deveriam estar dentro ou fora da janela. P 4 wy max P 3 P 6 P 2 P 7 P 5 P 1 wy min P 9 P 8 P 10 wx min wx max 6

Recorte Para a imagem abaixo, considere quais linhas e pontos deveriam estar dentro ou fora da janela. P 4 wy max P 3 P 6 P 2 P 7 P 5 P 1 wy min P 9 P 8 P 10 wx min wx max 7

Recorte Para a imagem abaixo, considere quais linhas e pontos deveriam estar dentro ou fora da janela. P 4 wy max P 3 P 6 P 2 P 7 P 5 P 1 wy min P 9 P 8 P 10 wx min wx max 8

Recorte Para a imagem abaixo, considere quais linhas e pontos deveriam estar dentro ou fora da janela. P 4 wy max P 3 P 6 P 2 P 7 P 5 P 1 wy min P 9 P 8 P 10 wx min wx max 9

Recorte de Pontos Fácil um ponto (x,y) NÃO é cortado se: wx min x wx max E wy min y wy max senão será cortado wy max wy min Cortado P 7 P 5 Window P 9 P 4 Cortado P 1 Pontos que não serão cortados Cortado P 2 P 8 Cortado P 10 wx min wx max 10

Recorte de linha Complicado devemos examinar os extremos de cada linha para avaliarmos se ela está dentro ou fora da janela de visualização Situação Ação Ação Extremos dentro da janela Não Recortar! Um extremo dentro e um fora Extremos fora da janela Recortar! Necessário fazer outros testes!

Recorte de linha Força Bruta Recorte de linha forçado pode ser feito da seguinte forma: Não recorte linhas com extremos dentro da janela Para linhas com uma ponta dentro da janela e outra fora, calcule o ponto de interseção e recorte deste ponto para fora. 12

Recorte de linha Força Bruta Para linhas com os extremos fora da janela devemos testá-las contra todas as bordas da janela e recortar de forma apropriada. Entretanto, calcular interseção de linha é computacionalmente dispendioso. Se a cena tiver um número grande de segmentos de reta o método de força bruta é muito lento 13

Algoritmo de Cohen-Sutherland É um algoritmo clássico de recorte de linha A vantagem chave deste algoritmo em relação ao anterior é reduzir drasticamente o número de interseções que precisam ser calculadas Dr. Ivan E. Sutherland auxiliou o desenvolvimento deste algoritmo. Sutherland é uma das referências na área de CG. Ele foi o inventor dos primeiros HMD (Head mounted display) na década de 60. 14

Algoritmo de Cohen-Sutherland Neste algoritmo, o mundo é dividido em regiões baseadas nas fronteiras da janela de interesse Cada região tem um código único de 4 bits, um para cada semi-espaço. Os bits de cada ponto são classificados como dentro = 0 e fora = 1 em relação a cada semi-espaço. 1001 1000 1010 0001 0000 0010 0101 0100 0110 15

Cohen-Sutherland: Identificação Os pontos que compõem cada linha são identificados com códigos de região apropriados P 4 [1000] P 11 [1010] wy max wy min P 3 [0001] P 7 [0001] P 6 [0000] P 5 [0000] P 9 [0000] P 12 [0010] P 8 [0010] P 10 [0100] P 13 [0101] P 14 [0110] wx min wx max 16

Algoritmo de Cohen-Sutherland Aceitação trivial: Classif(P1) OR Classif(P2) = 0 Rejeição trivial: Classif(P1) AND Classif(P2) 0 Interseção com quais semi-espaços? Classif(P1) XOR Classif(P2) 17

Algoritmo de Cohen-Sutherland 1001 1000 1010 0001 0000 0010 0101 0100 0110 1001 1000 1010 0001 0000 0010 0101 0100 0110 0000 OR 0000 = 0000 0000 AND 0000 = 0000 0000 XOR 0000 = 0000 1010 OR 0110 = 1110 1010 AND 0110 = 0010 1010 XOR 0110 = 1100 18

Algoritmo de Cohen-Sutherland 1001 1000 1010 0001 0000 0010 0101 0100 0110 1001 1000 1010 0001 0000 0010 0101 0100 0110 0001 OR 0100 = 0101 0001 AND 0100 = 0000 0001 XOR 0100 = 0101 0100 OR 1010 = 1110 0100 AND 1010 = 0000 0100 XOR 1010 = 1110 19

Cohen-Sutherland: Outras Linhas Como visto, linhas que não podem ser classificadas como completamente dentro ou fora da janela podem ou não cruzar seu interior Podemos usar os códigos de região para determinar quais semi-espaços devem ser considerados no cálculo de interseção Como visto anteriormente, para checar se uma linha atravessa um semi-espaço em particular podemos utilizar o operador XOR 20

Cohen-Sutherland: Outras Linhas Estas linhas são processadas da seguinte forma: Compare uma extremidade fora da janela com uma borda (da janela) e determine quanto pode ser descartado Se o restante da linha estiver dentro da janela ou fora da janela mantenha o segmento ou recorte, respectivamente Senão, compare o restante da linha com as outras bordas da janela Continue o processo até que a linha seja descartada ou um segmento dentro da janela seja encontrado 21

Cohen-Sutherland: Exemplos Considere a linha (P 9, P 10 ) Começaremos em P 10 Considerando os códigos wy max de região dos pontos sabemos que a linha não P cruza as bordas direita e 9 [0000] wy min esquerda Calculamos a interseção wx da linha em relação ao min semi-espaço inferior para gerar o ponto P 10 P 10 [0000] P 10 [0100] A linha (P 9,P 10 ) está completamente contida na janela e, desta forma, será mantida wx max 22

Cohen-Sutherland: Exemplos Considere agora a linha (P 3, P 4 ) Começaremos em P 4 Considerando os códigos de região dos pontos sabemos que a linha cruza o semi-espaço esquerdo. Calculando a interseção da linha com este semi-espaço o ponto P 4 é gerado wy max wy min P 4 [1001] P 3 [0001] wx min P 4 [1000] A linha (P 3,P 4 ) está completamente fora da janela e, portanto, será descartada ( a linha (P 4,P 4 ) também ) wx max 23

Cohen-Sutherland: Exemplos Considere a linha (P 7, P 8 ) Começaremos por P 7 Considerando os códigos de região dos pontos sabemos que a linha cruza a borda esquerda então calcularemos a interseção da linha com esta borda para gerar o ponto P 7 wy max wy min wx min P 7 [0000] P 7 [0001] P 8 [0010] P 8 [0000] wx max 24

Cohen-Sutherland: Exemplos Considere a linha (P 7, P 8 ) Começaremos de P 8 Calculando a interseção com a borda direita geraremos P 8 O ponto (P 7,P 8 ) está dentro da janela e portanto será mantido wy max wy min wx min P 7 [0000] P 7 [0001] P 8 [0010] P 8 [0000] wx max 25

Outros algoritmos Outros algoritmos para recorte de linha mais eficientes foram propostos posteriormente. Entre eles podemos citar: Cyrus-Beck Liang-Barsky Nicholl-Lee-Nicholl 26

Recorte de Polígonos Polígonos são definidos por arestas Por que não utilizar algoritmos de recorte de linhas? Geram segmentos de reta desconexos Precisamos de uma área delimitada após o recorte A área deve ser rasterizada posteriormente A saída do cortador deve ser uma sequência de vértices que define as fronteiras cortadas 27

Aplicado a cada fronteira separadamente Partes visíveis são repassadas ao próximo cortador Começamos com o conjunto inicial de vértices Após cada fronteira, uma nova sequência de vértices é gerada 28

Este algoritmo utiliza quatro tipos de transição: Fora-dentro Dentro-dentro Dentro-fora Fora-fora O tipo de transição determina quais vértices serão salvos 29

Transição fora-dentro v 2 Vértices salvos: e 30

Transição dentro-dentro Vértices salvos: 31

Transição dentro-fora Vértices salvos: 32

Transição fora-fora Vértices salvos: nenhum 33

Transição fora-fora 34

Lista de vértices de saída de uma fronteira é a entrada para o cortador da próxima fronteira Como otimizar? Processar vértices individualmente Vértices são incluídos ou removidos da lista de saída somente após terem sido classificados com relação a todos planos Vértice classificado como exterior é imediatamente retido 35

Exemplo 1 36

Exemplo 1 Vértices 37

Exemplo 1 Vértices 38

Exemplo 1 Vértices 39

Exemplo 1 Vértices 40

Exemplo 1 Vértices 41

Exemplo 1 Vértices 42

Exemplo 1 Vértices 43

Exemplo 1 Vértices 44

Exemplo 1 Vértices 45

Exemplo 1 Vértices 46

Exemplo 1 Vértices 47

Exemplo 1 Vértices 48

Exemplo 1 v 2 Vértices v 1 v 3 49

Exemplo 2 50

Exemplo 2 Vértices 51

Exemplo 2 Vértices 52

Exemplo 2 Vértices 53

Exemplo 2 Vértices 54

Exemplo 2 Vértices 55

Exemplo 2 Vértices 56

Exemplo 2 Vértices 57

Exemplo 2 Vértices V 3 58

Exemplo 2 Vértices V 3 59

Exemplo 2 Vértices V 3 60

Exemplo 2 v 3 v 2 Vértices 61

Exemplo 3 v 5 v 2 v 62

Exemplo 3 v 2 v 5 Vértices v v 5 63

Exemplo 3 v 2 v 5 Vértices v 5 64

Exemplo 3 v 2 v 5 Vértices v v 5 65

Exemplo 3 v 2 v 5 Vértices v v 5 66

Exemplo 3 v 2 v 5 Vértices v v 5 67

Exemplo 3 v 2 v 5 Vértices v v 5 68

Exemplo 3 v 2 v 5 Vértices v v 5 69

Exemplo 3 v 2 v 5 Vértices v v 5 70

Exemplo 3 v 5 v 2 v 5 Vértices v v 5 71

Exemplo v 5 v 2 v 5 Vértices v v 5 72

Exemplo 3 v 5 v 2 v 5 Vértices v v 5 73

v 5 v 2 v 5 Vértices v v 5 74

v 1 v 2 v 3 v 5 v 2 v 5 Vértices v 1 v 1 v 3 75

Este algoritmo recorta corretamente qualquer polígono, mas somente contra janelas convexas! Existem algoritmos mais genéricos, que podem ser utilizados para recorte contra janelas côncavas, mas possuem um custo computacional maior. Exemplo: Algoritmo de Weiler-Atherton 76

Recorte Aplicação Normalmente cenas são renderizadas em uma janela retangular Neste cenário, os algoritmos vistos nesta aula podem ser aplicados para remover objetos ou parte de objetos que estiverem fora desta janela Após o recorte, o próximo passo na visualização dos objetos em uma cena é definir em que parte da janela (física) estes objetos serão representados Essa porção da janela é chamada Viewport 77

Entidades de Visualização Window ( de Recorte) É área do mundo a ser visualizada e é definida em coordenadas do mundo Exemplo de comando: glortho Viewport Área a ser visualizada na janela do dispositivo É a área onde a window definida é mapeada. Exemplo de comando: glviewport do dispositivo de saída (janela física) Exemplo de comando e criação: glutcreatewindow 78

79

Entidades de Visualização 80

Saiba mais! Computer Graphics, C Version Capítulo 7 Este capítulo trata dos algoritmos de recorte visto nesta aula acrescidos de uma visão detalhada de outros algoritmos correlatos. Há também uma explicação teórica sobre as entidades de visualização. 81

Saiba mais! OpenGL Programming Guide Seventh Edition Capítulo 3 Você encontrará muita informação a respeito da criação de janelas e viewports neste capítulo (página 134 a 160). 82

Resumo Nesta aula vimos Algoritmos de recorte de linhas. Algoritmos de recorte de polígonos. Entidades de visualização em OpenGL. 83

Exercício Relação Window x Viewport Para os exercícios a seguir, baixe o código 08_viewport.cpp para utilizar como base. Verifique o código e entenda o seu funcionamento antes de prosseguir. 84

Exercício Relação Window x Viewport 1. Desenvolva um programa que crie a ilustração do slide a seguir. Nesse programa, serão desenhadas 4 viewports, e para cada viewport será projetada uma Window com parâmetros diferentes. Desenvolva uma função para criar a ilustração do canto superior esquerdo desta janela e visualize esta ilustração por esses quatro pontos de vista diferentes. Lembre-se de criar uma window e uma viewport para cada um dos quadrantes da imagem ao lado. Utilize as constantes GL_PROJECTION (para utilizar o comando glortho) e GL_MODELVIEW (para viewport e desenhos) corretamente. 85

Exercício Relação Window x Viewport 86

Exercício Relação Window x Viewport 2. Baseado no exercício anterior faça uma modificação na qual as viewports sejam visíveis e selecionáveis. A ideia encontra-se ilustrada no próximo slide. Basicamente as viewports passarão a estar visíveis por uma caixa envoltória branca (os parâmetros dos comandos glortho utilizados em cada ilustração podem ajudar a definir essas caixas). Deve-se criar um código que identifique qual viewport foi clicada. Para essa identificação, faça uso das coordenadas das viewports. Ao clicar e arrastar dentro da viewport selecionada com o botão esquerdo do mouse, a representação do mundo visualizado por ela mudará de posição (Essa mudança será realizada através de modificações do comando glortho correspondente). 87

Exercício Relação Window x Viewport 88