de Recta e Polígonos

Documentos relacionados
Recorte. Edward Angel, Cap. 7. Instituto Superior Técnico Computação Gráfica 2009/2010

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

RECORTE (CLIPPING) por janelas rectangulares

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

1º Teste de Computação Gráfica

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

Recorte. Márcio Bueno Fonte: Material do Prof. Claudio Esperança e do Prof. Paulo Roma Cavalcanti

1º Teste Computação Gráfica

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

Remoção de Faces Traseiras Recorte

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

Exame Tipo Computação Gráfica

1º Exame Computação Gráfica

Exame de Época Especial Computação Gráfica

Algoritmos de Recorte em 2D

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

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

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

2º Exame de Computação Gráfica

Computação Gráfica. Exame de Época Especial de. Nº Nome:

1º Teste de Computação Gráfica 3º Ano

Escola Básica Integrada c/ Jardim de Infância da Malagueira SÍNTESE DO TÓPICO ISOMETRIAS. rotaçã

Pipeline Gráfico. Clipping (Recorte) Por que o recorte? INF 1366 Computação Gráfica Interativa. Clipping (Recorte)

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

Ponto em Polígono. António Leslie Bajuelos Departamento de Matemática Universidade de Aveiro

Pipeline Gráfico Cluter & Durand, MIT

ALGA /09 - Geometria Analítica 78. Geometria Analítica

ALGA - Eng. Civil e Eng. Topográ ca - ISE / Geometria Analítica 89. Geometria Analítica

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

1º Teste Computação Gráfica

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

Aula 10 Regiões e inequações no plano

Nº Nome: Sala: Responda às questões seguintes justificando adequadamente todas as respostas. Se necessário utilize o verso da respectiva folha.

2º Exame. Computação Gráfica

2º Exame de Computação Gráfica 2º Ano

ficha 5 transformações lineares

- Plano Anual 4º Ano de Escolaridade -

Universidade de Aveiro Departamento de Electrónica, Telecomunicações e Informática. Transformações 2D

Capítulo Coordenadas no Espaço. Seja E o espaço da Geometria Euclidiana tri-dimensional.

GEOMETRIA DESCRITIVA A

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

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

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

TEMA 2 GEOMETRIA ANALÍTICA FICHAS DE TRABALHO 11.º ANO COMPILAÇÃO TEMA 2 GEOMETRIA ANALÍTICA

MATEMÁTICA A - 12o Ano N o s Complexos - Conjuntos e condições

ESCOLA SECUNDÁRIA DE ALBERTO SAMPAIO

GEOMETRIA II EXERCÍCIOS RESOLVIDOS - ABRIL, 2018

Teste de avaliação (Versão A) Grupo I

MATEMÁTICA A - 12o Ano N o s Complexos - Conjuntos e condições

1º Exame. Computação Gráfica

1º Exame. Computação Gráfica

Teste de avaliação (Versão B) Grupo I

Escola Secundária com 3º ciclo D. Dinis 10º Ano de Matemática A TEMA 1 GEOMETRIA NO PLANO E NO ESPAÇO I. TPC nº 7 entregar no dia

Rasterização. Apontamentos CG + Edward Angel, Sec. 7.8 a Instituto Superior Técnico Computação Gráfica 2009/2010

1º Exame/2º Teste Computação Gráfica

1º Período MATEMÁTICA 4.º ANO. setembro. Domínios Conteúdos programáticos Objetivos/Descritores de desempenho

PLANIFICAÇÃO ANUAL DE MATEMÁTICA

Escola Secundária com 3º ciclo D. Dinis. 10º Ano de Matemática A. Geometria no Plano e no Espaço I

ALGA - Eng. Civil e Eng. Topográ ca - ISE /11 - Geometria Analítica 88. Geometria Analítica

Matriz Curricular 1º Ciclo 4.ºAno / 2016 Ano de Escolaridade: 4.º Ano Matemática

Escola Secundária com 3º Ciclo D. Dinis. Ficha de Apoio nº2

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

Domínio: Geometria. CONSELHO de DOCENTES 1.º Ciclo Página 1

Escola Secundária com 3º ciclo D. Dinis 11º Ano de Matemática A Tema I Geometria no Plano e no Espaço II. 2º Teste de avaliação.

PLANIFICAÇÃO ANUAL MATEMÁTICA 4º ANO

1º Teste de Computação Gráfica

AGRUPAMENTO DE ESCOLAS DE VALE DE MILHAÇOS PLANIFICAÇÃO ANUAL DE MATEMÁTICA 4.º ANO DE ESCOLARIDADE

Escola Secundária com 3º ciclo D. Dinis. 10º Ano de Matemática A. Geometria no Plano e no Espaço I

PLANIFICAÇÃO ANUAL 2015/ º Ano Matemática. METAS Domínios/Conteúdos Objetivos Descritores de Desempenho

4 º Ano Matemática. METAS Domínios/Conteúdos Objetivos Descritores de Desempenho

Grupo I. e ( 10,α ) sejam as coordenadas, num referencial o.n. (C) 6 (D) 8

FCTUNIVERSIDADE NOVA DE LISBOA!

PLANIFICAÇÃO MENSAL/ANUAL Matemática 4.ºano

CRITÉRIOS DE AVALIAÇÃO 1º CICLO 4.º ANO DE ESCOLARIDADE MATEMÁTICA

Exercícios de exames e provas oficiais

ESCOLA SECUNDÁRIA COM 3º CICLO D. DINIS 10º ANO DE MATEMÁTICA A. Ficha de revisão nº 14

Escola Secundária com 3º ciclo D. Dinis 10º Ano de Matemática A Funções e Gráficos Generalidades. Funções polinomiais. Função módulo.

Capítulo 2. Retas no plano. 1. Retas verticais e não-verticais. Definição 1

PLANIFICAÇÃO MENSAL DE MATEMÁTICA

Escola Secundária de Francisco Franco Matemática 12.º ano Números Complexos - Exercícios saídos em (Exames Nacionais 2000)

ESCOLA SECUNDÁRIA DE ALCÁCER DO SAL

Algoritmos geométricos

Aula 6 Produto interno

J. Delgado - K. Frensel - L. Crissaff Geometria Analítica e Cálculo Vetorial

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

Figura 9.1: Corpo que pode ser simplificado pelo estado plano de tensões (a), estado de tensões no interior do corpo (b).

Agrupamento de Escolas Dr. Vieira de Carvalho P L A N I F I C A Ç Ã O A N U A L D E M A T E M Á T I C A

Lista 6: transformações lineares.

Aula Exemplos diversos. Exemplo 1

Escola Secundária com 3º ciclo D. Dinis 10º Ano de Matemática A Estatística. Grupo I

Instituto Superior de Engenharia de Lisboa Engenharia Informática e de Computadores

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

Sabemos que se A, B são dois pontos num eixo com coordenadas x e y, respectivamente,

Aula Exemplos e aplicações. Exemplo 1. Nesta aula apresentamos uma série de exemplos e aplicações dos conceitos vistos.

Arranjos. Claudio Esperança Paulo Roma LCG/UFRJ. All rights reserved.

GAAL /1 - Simulado - 2 produto escalar, produto vetorial, retas e planos. Exercício 1: Determine a equação do plano em cada situação descrita.

Visibilidade. Apontamentos CG + Edward Angel, Sec Instituto Superior Técnico Computação Gráfica 2009/2010

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

Transcrição:

Mário Rui Gomes Computação Gráfica 1 Recorte de Segmentos de Recta e Polígonos 1.1 Introdução Relembrando os andares do pipeline de visualização, podemos verificar que no andar anterior foi efectuada a Transformação de Visualização a qual consistiu na definição de uma vista sobre a cena, recorrendo à especificação dos parâmetros de uma câmara virtual e à definição de uma projecção, seguindo-se a transformação do volume de visualização num volume canónico. No andar de recorte de objectos 3D sobre o volume canónico pretende-se identificar quais os objectos que se encontram totalmente dentro desse volume, os quais são trivialmente aceites, e quais os que se encontram parcialmente dentro do volume canónico, pelo que têm que ser recortados (clipping em Inglês pelas faces da fronteira do volume canónico. Como foi descrito no capítulo anterior, o volume canónico é um paralelepípedo que tem como limites os planos x = -1, x = 1, y = -1, y = 1, z = e z = 1 como pode observar-se na figura 1.1. ( - 1, 1, y ( - 1, 1, 1 plano de recorte anterior (z = 1 plano de recorte posterior (z = ( - 1, 1, x (1, - 1, z (1, 1, 1 ( - 1, - 1, 1 ( - 1, - 1, 1 Figura 1.1 Volume canónico. 1

Computação Gráfica Recorte de Segmentos de Recta e Polígonos O objectivo do recorte será, assim, eliar as partes dos objectos da cena que se encontrem fora do volume canónico. Nas representações mais simples, os objectos são descritos pelas suas s (modelo em arames ou pela sua fronteira definida por uma malha de polígonos, pelo que, neste capítulo serão descritos os algoritmos que permitem o recorte de segmentos de rectas e de polígonos. Mas os algoritmos de recorte têm, em Computação Gráfica, múltiplas aplicações para lá de permitirem escolher as partes dos objectos que se encontram no interior do volume de canónico. Considere-se, por exemplo, a situação em que existe uma cena composta por dois polígonos, A e B os quais, ao serem vistos segundo um dado ponto de vista, o polígono A encobre parcialmente o polígono B pelo que só deste estará visível. Para obter a parte visível do polígono B basta rejeitar a parte deste polígono que é recortada pelo polígono A. Esta operação designa-se por cálculo de elementos invisíveis e será tratada noutro capítulo. Objectivos Introduzir o recorte de segmentos de recta no pipeline de visualização Identificar os vários tipos de utilização dos algoritmos de recorte de segmentos de recta e polígonos Identificar as situações em que cada algoritmo deve ser aplicado Descrever o funcionamento dos algoritmos mais importantes 1.2 Recorte de Linhas O recorte de segmentos de recta consiste em identificar os valores das coordenadas X, Y e Z que correspondem aos pontos de intersecção com cada uma das faces do volume canónico, caso esses pontos existam. Por facilidade expositiva considera-se unicamente uma das paredes rectangulares do volume canónico a qual passamos a designar por rectângulo de recorte. Uma vez que o recorte é aplicado também na remoção de elementos ocultos considera-se que um rectângulo de recorte genérico com as coordenadas que podem ser observadas na figura 1.2. 2

Mário Rui Gomes Computação Gráfica F D F D Y max E B C H H J Rectângulo de Recorte X A G G I J I X max Y Figura 1.2 Recorte de segmentos de recta contra o rectângulo de recorte. Nos polígonos convexos (todos os ângulos internos inferiores a 18º em, por exemplo, rectângulos, pode ser usada a propriedade geométrica que garante que se os dois vértices de um segmentos de recta estiverem dentro do polígono, então todo o segmento de recta está dentro do polígono. Um vértice com coordenadas (X, Y encontra-se dentro de um rectângulo quando se verificarem, simultaneamente, as duas condições X Y X X Y Y max max (1-1 Tal como acontece com o segmento de recta AB da figura, se ambos os vértices estiverem dentro do rectângulo de recorte, então todo o segmento de recta se encontra também dentro dele, pelo que pode ser trivialmente aceite. Se ambos os vértices estiverem fora do rectângulo de recorte, o segmento de recta pode estar completamente fora (segmento EF da figura 1.2 e deve ser trivialmente rejeitado, ou não (caso do segmento GH da mesma figura, situação em que tem que ser efectuado o recorte. Quando um só dos vértices está dentro do rectângulo o recorte é inevitável (segmento CD da figura. 1.2.1 Algoritmo da Força Bruta Designa-se por algoritmo da Força Bruta aquele que efectua o cálculo de recorte de um segmento de recta através do cálculo da sua intersecção com cada uma das s que limitam o rectângulo de recorte. Considere-se a representação paramétrica de um segmento de recta cujas coordenadas dos vértices são, respectivamente, (X, Y e (X 1, Y 1 : 3

Computação Gráfica Recorte de Segmentos de Recta e Polígonos X = X Y = Y t seg + t + t 1 seg seg ( X 1 X ( Y Y 1 (1-2 Por seu lado, a representação paramétrica dos segmentos de recta constituintes do rectângulo de recorte é X Y = X Y = Y max + t ( X X max X Y X = = X Y max + t ( Y Y max (1-3 consoante sejam os limites inferior ou superior ou os limites esquerdo ou direito. Para deterar as intersecções de um segmento de recta a recortar com o rectângulo de recorte basta resolver o sistema de equações simultâneas da segmento de recta a recortar e de cada uma das s que delimitam o rectângulo em ordem a tseg e a t. Para o caso do limite vertical esquerdo do rectângulo de recorte temos: X Y = X = Y + t ( Y Y max (1-4 Deteram-se então tseg e a t, por esta ordem. Existirá intersecção quando se verificarem simultaneamente: t t seg 1 1 (1-5 Para calcular as coordenadas do ponto de intersecção basta substituir na representação paramétrica da o parâmetro t pelo valor que foi calculado. 1.2.2 Algoritmo de Cohen-Sutherland Considerando que o cálculo de intersecções é um algoritmo pesado, surgiram vários algoritmos mais eficientes que se baseiam em técnicas de atrasar o cálculo das intersecções. Essa técnica é utilizada pelo algoritmo cuja descrição será agora efectuada, o algoritmo de Cohen-Sutherland. Considere-se um rectângulo de recorte e classifique-se cada vértice dos segmentos de recta a recortar consoante a posição relativa às rectas colineares com cada uma das 4 s do rectângulo de recorte, conforma figura 1.3 apresenta. 4

Mário Rui Gomes Computação Gráfica 1 2 3 4 5 6 7 8 9 Figura 1.3 Algoritmo de Cohen-Sutherland: os limites do rectângulo de recorte deteram 9 sub espaços. O algoritmo inicia-se com o cálculo do sub espaço em que se encontra cada um dos vértices do segmento de recta a recortar. Por exemplo, se ambos os vértices se encontrarem nos sub espaços superiores, respectivamente 1, 2 ou 3, o segmento de recta será rejeitado. Se ambos os vértices estiverem no sub espaço 5, o segmento será aceite. Em ambos os casos não foi necessário efectuar qualquer cálculo de intersecção. Para simplificar a identificação dos sub espaços em que se encontram os vértices, os autores recorreram a uma codificação dos 9 sub espaços usando uma codificação com 4 bits, em que cada um dos bits define a posição do sub espaço relativamente a uma das s do polígono de recorte. Estes conjuntos de 4 bits denoam-se códigos ou outcodes. O 1º bit está relacionado com a superior, tomando o valor 1 se o vértice se encontra no sub espaço superior e se no sub espaço inferior relativamente à recta colinear com a superior. O código 1 é sempre usado para codificar os sub espaços que não contêm o rectângulo de recorte, conduzindo, desse modo a que a codificação do sub espaço 5 será. A tabela 1.1 apresenta os valores assumidos pelos vários bits do código de acordo com a posição do ponto em relação ao rectângulo de recorte. Daqui resulta a codificação dos sub espaços apresentada pela figura 1.4. Bit Aresta Valor Posição 1 Superior 1 acima 2 Inferior 1 abaixo 3 Direito 1 à direita 4 Esquerdo 1 à esquerda Tabela 1.1 Valores dos bits do código de posição de um ponto em relação ao rectângulo de recorte no algoritmo de Cohen-Sutherland. 5

Computação Gráfica Recorte de Segmentos de Recta e Polígonos 11 1 11 1 1 11 1 11 Figura 1.4 Algoritmo de Cohen-Sutherland: códigos dos 9 sub espaços deterados pelas rectas que suportam os segmentos de recta correspondentes aos lados do rectângulo de recorte. Usando esta codificação dos sub espaços é possível identificar vários tipos de situações e tratá-las adequadamente, realizando cálculos de intersecções apenas quando tal seja necessário. Considere-se que OC é o código do sub espaço dentro do qual se encontra o primeiro vértice do segmento de recta a recortar e que OC1 é o código do sub espaço dentro do qual se encontra o 2º vértice do segmento. Como já foi referido, teremos OC1 = OC = se ambos os vértices se encontrarem dentro do rectângulo de recorte e o segmento será aceite. O segmento será rejeitado se os seus dois vértices se encontrarem num dos 4 semiespaços definidos por cada uma das rectas sobre as quais assentam cada uma das 4 s do rectângulo de recorte. Essa situação ocorre quando OC1 & OC (1-6 Nos restantes casos, em que OC1 & OC =, terá que ser efectuada uma primeira subdivisão do segmento de recta. A tabela 1.2 resume estas situações e as acções correspondentes. Situação OC1 = OC = OC1 & OC OC1 & OC = Acção Aceitação Rejeição Subdivisão Tabela 1.2 Algoritmo de Cohen-Sutherland: Sequência de testes aos códigos dos pontos extremos de um segmento de recta. Nas situações em que é necessário subdividir o segmento de recta tem que se calcular a intersecção com a recta sobre a qual assenta uma das s do rectângulo de recorte. 6

Mário Rui Gomes Computação Gráfica Utilizando uma aproximação do tipo força bruta teria que calcular-se a intersecção da segmento de recta com cada um dos 4 lados do rectângulo de recorte. No entanto, como existe informação sobre em que sub espaço se encontra cada um dos vértices do segmento de recta a recortar, podemos utilizar essa informação para escolher um dos lados do rectângulo. Considere-se o caso do segmento de recta GH representado na figura 1.5 em que o segmento de recta GH não é nem trivialmente aceite pois pelo menos um dos códigos é diferente de (OCG = 1 e OCH = 1, nem trivialmente rejeitado (OCG & OCH =. H G Figura 1.5 Algoritmo de Cohen-Sutherland: o segmento de recta a recortar intersecta o rectângulo de recorte. Analisando os códigos dos vértices obtém-se informação sobre qual o lado do rectângulo de recorte que deverá ser seleccionado em primeiro lugar para recortar o segmento de recta, eliando as partes do segmento de recta que se encontram fora do rectângulo de recorte. O bit a 1 do código do 1º vértice, o vértice G, identifica a inferior como aquela que deve ser seleccionada. Efectuando o cálculo de intersecção obtêm-se um novo vértice, G (veja-se a figura 1.6, que tem como código o valor. Uma vez que o código do 1º vértice do novo segmento de recta passou a ter todos os bits a, selecciona-se agora o 2º vértice, H. O bit a 1 do 2º vértice conduz à selecção da direita do rectângulo de recorte. Daqui resulta o cálculo de um novo vértice, H, cujo código é. O segmento de recta resultante, G H, que a figura 1.6 apresenta, é trivialmente aceite. 7

Computação Gráfica Recorte de Segmentos de Recta e Polígonos G G H H I I J Figura 1.6 Algoritmo de Cohen- Sutherland: segmento de recta depois de recortado. Figura 1.7 Algoritmo de Cohen- Sutherland: segmento de recta não trivialmente rejeitado. A rejeição ocorre depois do primeiro recorte que gera o novo ponto I. Neste exemplo foi possível efectuar o número mínimo de cálculos de intersecções para obter-se o segmento de recta recortado, mas nem sempre tal acontece como se pode observar no exemplo que se segue. Considere-se agora uma nova situação, ilustrada na figura 1.7 e na qual os códigos do 1º e 2º vértice são os mesmos que anteriormente, mas que não intersecta o rectângulo de recorte. Sendo os código dos dois vértices exactamente os mesmos do exemplo anterior, será em primeiro lugar seleccionada a inferior do rectângulo de recorte e calculado um novo vértice. O código deste vértice é idêntico ao código do 2º vértice, de que resulta a situação em que o segmento recortado é rejeitado. Dos dois exemplos é possível concluir que o algoritmo de Cohen-Sutherland não garante que o cálculo de intersecções seja efectuado só quando é necessário. Em contrapartida, o algoritmo é eficiente nas situações em que a maioria dos segmentos de recta são trivialmente aceites ou trivialmente rejeitadas, casos em que basta serem calculados os códigos dos vértices. Existem situações em que a maioria dos segmentos são trivialmente aceites ou rejeitados, pelo que o Algoritmo de Cohen-Sutherland é eficiente. Sempre que o rectângulo de recorte é muito pequeno comparado com a cena a maioria dos segmentos de recta são trivialmente rejeitados. Sempre a que o rectângulo é muito grande a maioria dos objectos são trivialmente aceites. Uma das técnicas usadas para identificar os objectos que estão na proximidade do cursor (selecção de objectos ou pick em Inglês baseia-se na aplicação do algoritmo de recorte sobre um rectângulo de reduzidas dimensões centrado nas coordenadas do cursor, o rectângulo de selecção. Todos os objectos que sejam recortados por esse rectângulo, são seleccionados. Esta é uma situação em que o Algoritmo de Cohen- Sutherland é eficiente. O algoritmo é facilmente estendido para 3D, bastando para tal identificar 27 sub espaços e utilizar códigos compostos por 6 bits. 8

Mário Rui Gomes Computação Gráfica 1.2.3 Algoritmo Paramétrico de Cyrus-Beck Os investigadores Cyrus e Beck seguiram uma aproximação ao problema do recorte de segmentos de recta bastante diferente da anterior. Para tal conceberam um algoritmo que permite o recorte de um segmento de recta por qualquer polígono convexo, em 2D, ou de um segmento de recta em 3D por qualquer poliedro convexo. Consideremos novamente a representação paramétrica de um segmento de recta. Como pode observar-se na figura 1.8, existem sempre 4 valores de t que resultam da intersecção da recta contendo o segmento do recta a recortar com as 4 s do rectângulo de recorte. t3 t4 t2 t1 Figura 1.8 Recorte paramétrico: pontos de intersecção da recta contendo o segmento de recta a recortar com o rectângulo de recorte. Através da classificação de cada um dos pontos de intersecção é possível saber quais os valores de t dos vértices do segmento recortado, caso existam (no exemplo da figura seriam os vértices correspondentes a t 2 e t 3. Intersecção entre linhas Considere-se novamente a representação paramétrica de um segmento de recta: P( t = P + t( P1 P t 1 (1-7 O polígono de recorte é definido pela enumeração dos seus lados (ou vértices segundo a convenção da circulação directa (sentido contrário ao dos ponteiros do relógio. Para cada define-se a normal, Ni, orientada para o exterior do polígono. Seja Pei um ponto arbitrário pertencente a uma do polígono de recorte. Como pode observar-se na figura 1.9, podemos definir três vectores que partem desse ponto, 9

Computação Gráfica Recorte de Segmentos de Recta e Polígonos um deles seguindo a fronteira e os outros dois para o espaço interior e para o espaço exterior ao polígono convexo de recorte. Lado Ei Pei P1 Ni. [P(t - Pei] > P Ni Ni. [P(t - Pei] = Ni. [P(t - Pei] < Figura 1.9 Algoritmo de Cyrus-Beck: produtos internos dos três vectores com a normal exterior ao polígono de recorte. O produto interno da normal à do polígono com cada um destes três vectores é, respectivamente, nulo, negativo e positivo. O sinal do produto interno permite deterar se um ponto do segmento de recta coincide com a ou é um ponto interior ou exterior do polígono de recorte. Para deterar o ponto de intersecção do segmento de recta com a que estamos a considerar é necessário obter o valor do parâmetro no ponto de intersecção. Como vimos atrás, no ponto de intersecção o produto interno da normal à com o vector que une o ponto arbitrário Pei com o ponto de intersecção é nula, ou seja [ P( t P ] = N (1-8 i ei Substituindo P(t pela equação paramétrica da recta que contem o segmento de recta e explicitando o parâmetro t, obteremos sucessivamente: Ni [ P + ( P1 P t Pei ] = Ni ( P Pei + Ni [( P1 P t] = Ni ( P Pei t = N ( P P e, definindo D=P1-P, i 1 ( P P Ni ei t = (1-9 N D i Para ser possível calcular t é necessário que: N, o que é sempre verdadeiro; i 1

Mário Rui Gomes Computação Gráfica P1 e P não sejam coincidentes, o que é verdadeiro para qualquer segmento de recta de comprimento não nulo; N i D, o que aconteceria se o segmento de recta a recortar fosse paralelo à do polígono; Não existe intersecção se o valor de t for inferior a ou superior a 1. Tendo sido obtido um modo de calcular se um ponto está no exterior ou no interior do polígono convexo de recorte e um modo de calcular o valor de t na intersecção estamos em condições de descrever o algoritmo paramétrico. Descrição do Algoritmo O algoritmo de Cyrus-Beck aplica-se sucessivamente a cada uma das s do polígono convexo. Para cada uma das s, escolhe-se, por exemplo, o primeiro vértice como Pei, calcula-se a normal exterior, Ni e o valor de t no ponto de intersecção. É ainda necessário identificar se o primeiro vértice do segmento de recta está no exterior e o 2º no interior, situação em que a intersecção é definida como Potencialmente de Entrada, PE, ou vice-versa em que a intersecção é definida como Potencialmente de Saída, PS. Para efectuar essa identificação poderia classificar-se cada vértice do segmento de recta, tal como acontecia no algoritmo da Cohen-Sutherland. No entanto, é possível efectuar a classificação com base no ângulo existente entre o vector P P 1 e o vector Ni. Se o ângulo for inferior a 9º trata-se de uma intersecção do tipo PS, se não, será do tipo PE. Esta informação está contida no sinal do produto interno entre aqueles dois vectores e que é necessário para o cálculo do próprio valor de t. N D < PE i N D > PS i (1-1 Estando calculados todos os valores t dos pontos de intersecção, e devidamente classificados como sendo do tipo PE ou PS, estamos em condições de identificar exactamente os valores de t dos vértices do segmento de recta já recortado. Identifica-se a intersecção do tipo PE que corresponde ao maior t e a intersecção do tipo PS que corresponde ao menor t e comparam-se os dois valores de t. Se o valor de t da intersecção do tipo PE for superior ao valor de t da intersecção do tipo PS, então todo o segmento de recta pode ser rejeitado. Se o valor de t da intersecção do tipo PE for inferior ao valor de t da intersecção do tipo PS, então usam-se os dois valores para obter as coordenadas dos vértices do segmento de recta recortado. A figura 1.1 apresenta um polígono convexo de recorte com 5 lados e um segmento de recta a recortar (P P 1. 11

Computação Gráfica Recorte de Segmentos de Recta e Polígonos P 1 PS PE PE PS P Figura 1.1 Algoritmo de Cyrius-Beck: segmento de recta a recortar com identificação do tipo (PE ou PS das suas intersecções com o polígono de recorte. Do cálculo das intersecções resultam 4 valores de t, sendo dois do tipo PE e dois do tipo PS. Como o segmento de recta é paralelo ao lado inferior direito do polígono, o 5º valor de t não foi calculado uma vez que N i D =. Escolhendo-se a intersecção do tipo PE com maior valor de t e a intersecção do tipo PS com o menor valor de t obtêm-se os valores paramétricos de cada um dos vértices do segmento recortado. Considere-se agora o exemplo apresentado pela figura 1.11. Aplicando o algoritmo, são calculados 5 valores de t dos quais só são classificados os três valores representados na figura uma vez que os restantes têm valores de t inferiores a ou superiores a 1. P 1 PS PE PE P Figura 1.11 Algoritmo de Cyrus-Beck: segmento de recta rejeitado (o maior t das intersecções de tipo PE é superior ao menor t de tipo PS. 12

Mário Rui Gomes Computação Gráfica Como pode observar-se, a intersecção do tipo PS tem um valor de t inferior ao maior valor de t de uma intersecção do tipo PE pelo que se conclui que o segmento de recta deve ser rejeitado. Pseudocódigo Pré-calcular Ni e seleccionar Pei para cada Para cada segmento de recta Se P1 = P então segmento de recta degenerado: recortar como ponto Senão te = ; tl= 1; para cada de recorte Se Ni. D então /* ignorar s paralelas ao segmento */ calcular t; /* de intersecção do segmento com */ usar sinal de Ni. D para caracterizar PE ou PS; Se PE então t E = max(t E, t; Se PS então t S = (t S, t; FimSe Se t E > t S então devolve nulo; Senão devolve [P(t E, P(t S ] Rectângulo de Recorte (Liang e Barsky Quando os polígonos de recorte são rectângulos com as respectivas s horizontais e verticais podem ser efectuadas várias simplificações. Em primeiro lugar, os valores de Ni só têm uma coordenada com valor diferente de e a outra coordenada toma o valor 1 ou 1 (veja-se a figura 1.12. N i =(,1 N i =(-1, N i =(1, N i =(,-1 Figura 1.12 Algoritmo de Liang e Barsky: normais às s do rectângulo de recorte 13

Computação Gráfica Recorte de Segmentos de Recta e Polígonos Como nos cálculos de t é utilizado o produto da normal com o vector P Pei, basta utilizar uma das coordenadas de Pei, sendo irrelevante o valor da outra coordenada. Neste caso os cálculos são bastante simplificados, como pode observar-se na tabela 1.3. O algoritmo paramétrico é eficiente quando é necessário recortar a maioria dos segmentos de recta, uma vez o cálculo das coordenadas dos pontos de intersecção é adiado até se ter a certeza de que existe intersecção. Aresta Normal N i Pei P -Pei t= Esquerda: x=x (-1, (x,y (x o- x, y o- y Direita: x=x max (1, (x max,y (x o- x max, y o- y Superior: y=y (,-1 (x, y (x o- x, y o- y Inferior: y=y max (,1 (x, y max (x o- x, y o- y max N i ( x ( P Pei ( x ( x o N D 1 ( x ( y ( y i x x x 1 1 ( y Tabela 1.3 Algoritmo de Liang e Barsky: expressões do parâmetro do ponto de intersecção de um segmento de recta com os limites do rectângulo de recorte. ( y max x y y y max y 1.3 Recorte de Polígonos O recorte de polígonos implica a identificação do lugar geométrico dos pontos que simultaneamente pertencem ao polígono a recortar e ao polígono de recorte. A existência de uma topologia no caso de polígonos torna esta operação mais complexa que no caso de segmentos de recta. Assim, não basta usar as coordenadas de cada um dos vértices do polígono. Estes têm que estar ordenados segundo o sentido directo (contrário ao dos ponteiros do relógio. Figura 1.13 Recorte de um Triângulo 14

Mário Rui Gomes Computação Gráfica Figura 1.14 Recorte de um Polígono Côncavo Figura 1.15 Recorte de um Polígono Côncavo (2 polígonos recortados O problema também fica mais complexo quando é aplicado a um polígono côncavo, como o da figura 1.14. Quando é aplicado o recorte a um polígono côncavo podemos obter mais do que um polígono recortado, como pode observar-se na figura 1.15. 1.3.1 Algoritmo de Sutherland - Hodgman O algoritmo de Sutherland-Hodgman permite o recorte de qualquer tipo de polígono por um polígono convexo de recorte. Baseia-se na aproximação de dividir para conquistar segundo a qual se obtém um polígono recortado por recorte sucessivamente efectuado por cada uma das rectas de suporte de cada uma das s do polígono de recorte. Como pode observar-se nas figuras 1.16 e 1.17, o algoritmo consiste em recortar o polígono por cada uma das linhas que suportam as s do polígono de recorte (4 s, se for um rectângulo. 15

Computação Gráfica Recorte de Segmentos de Recta e Polígonos Figura 1.16 Algoritmo de Sutherland-Hodgman: primeiro recorte pela recta que suporta a direita do polígono de recorte. Figura 1.17 Algoritmo de Sutherland-Hodgman: recorte pelas rectas que suportam as s inferior, esquerda e superior do polígono de recorte. A formulação do algoritmo passa do problema do recorte de um polígono por outro polígono para o recorte de um polígono por uma recta, garantindo que se mantém a topologia. Assim sendo, dada a descrição de um polígono através de uma lista de vértices (V 1, V 2,, V n, o algoritmo consiste em, ao recortar o polígono contra cada uma das rectas sobre a qual assenta uma do polígono de recorte, obter uma nova lista de vértices, ou mais do que uma lista se houver lugar ao aparecimento de polígonos degenerados que são separados. Cada uma destas listas descreve um dos polígonos recortados contra cada um desses limites. Em primeiro lugar é necessário identificar se o 1º vértice se encontra dentro ou fora do polígono de recorte. Este vértice é colocado na lista de vértices do polígono já recortado se o vértice se encontrar dentro do polígono de recorte. Caso contrário, a lista permanecerá vazia. 16

Mário Rui Gomes Computação Gráfica Seguidamente podem ocorrer 4 situações quando é efectuado o tratamento de cada par de vértices formando uma do polígono de recorte (vejam-se as figuras 1.18 e 1.19 Transição Interior-Interior: Quando ambos os vértices estão contidos no semi-plano interior, o 2º vértice da é adicionado à lista de vértices do polígono recortado. Transição Interior-Exterior: Quando ocorre uma transição do semi-espaço interior para o exterior é necessário calcular o vértice de intersecção, I, o qual é adicionado à lista de vértices do polígono recortado. Transição Exterior-Exterior: Quando ambos os vértices estão contidos no semi-plano exterior nada é adicionado à lista de vértices do polígono recortado. Transição Exterior-Interior: Quando ocorre uma transição do semi-espaço exterior para o interior é necessário calcular o vértice de intersecção, I, o qual é adicionado à lista de vértices do polígono recortado, assim como o 2º vértice da. Interior Exterior Interior Exterior S P S I P Figura 1.18 Transição Interior Interior e Interior Exterior Exterior Exterior Interior Exterior P I S P S Figura 1.19 Transição Exterior Exterior e Exterior - Interior 17

Computação Gráfica Recorte de Segmentos de Recta e Polígonos A H H F F F G E D D G B B C Figura 1.2 Recorte de polígono côncavo pelo algoritmo de Sutherland- Hodgman. Como exemplo, vamos agora aplicar o algoritmo de Sutherland-Hodgman ao polígono côncavo com 8 vértices ordenados segundo o sentido directo (contrário ao dos ponteiros do relógio representado na figura 1.2. Escolhendo em primeiro lugar a recta sobre a qual assenta a esquerda: A é um ponto exterior, pelo que a lista de vértices resultantes se mantém vazia; AB: Transição EE -> nenhum dos vértices é adicionado à lista que continua vazia; BC: Transição EI -> calcula-se a intersecção B que é adicionada à lista assim como o 2º vértice (B C; CD: Transição II -> o vértice D é adicionado à lista (B CD; DE: Transição IE -> calcula-se a intersecção D que é adicionada à lista (B CDD ; EF: Transição EE -> nenhum dos vértices é adicionado à lista (B CDD ; FG: Transição EI -> calcula-se a intersecção F a qual é adicionada à lista assim como o 2º vértice (B CDD F G; GH: Transição II -> o vértice H é adicionado à lista (B CDD F GH; HA: Transição IE -> calcula-se a intersecção H a qual é adicionada à (B CDD F GHH ; Antes de passar ao recorte pela superior, convém verificar o que foi obtido como polígono recortado. Analisando o conteúdo da lista de vértices (B CDD F GHH verifica-se que obtivemos um rectângulo (B CDD, ligado por uma (D F a um 2º polígono (F GHH o qual está, também ligado por uma (H B ao 1º polígono. Obteve-se um polígono degenerado, pelo que será 18

Mário Rui Gomes Computação Gráfica necessário efectuar um pós-processamento que transforme o polígono degenerado em dois polígonos (B CDD e F GHH. Seguidamente efectuam-se os mesmos cálculos para cada um dos polígonos. O 1º polígono não será mais recortado pela recta que suporta a superior uma vez que todos os vértices estão contidos no semi-plano interior. O 2º polígono, (F GHH, será processado do seguinte modo: F é um vértice pertencente ao semi-espaço exterior pelo que a lista de vértices se mantém vazia (; F G: Transição EI -> calcula-se a intersecção F que é adicionada à lista assim como o 2º vértice (F G; GH: Transição IE -> calcula-se a intersecção G que é adicionado à lista (F GG ; HH : Transição EE -> nenhum dos vértices é adicionado à lista (F GG ; H F : Transição EE -> nenhum dos vértices é adicionado à lista (F GG ; Obtém-se assim o triângulo (F GG ; Exercícios 1-1 Descreva, sucintamente, o algoritmo de recorte Força Bruta e descreva, justificando, uma das suas fraquezas. 1-2 Explique como procederia para adaptar o algoritmo de Cohen-Sutherland para três dimensões. Escreva o pseudocódigo resultante. 1-3 Proponha uma extensão para 3D do algoritmo de Cohen-Sutherland, incluindo o cálculo dos códigos e das intersecções. 1-4 O algoritmo de Cohen-Sutherland é particularmente eficaz no recorte de segmentos de recta contra janelas rectangulares. Considere a figura seguinte e explique como seriam processados cada um dos 5 segmentos, pelo algoritmo mencionado. Além de calcular os códigos, deve definir o critério seguido na subdivisão dos segmentos. 1 Ymax 2 3 5 Y X 4 Xmax 1-5 Qual o critério usado no Algoritmo de Cohen-Sutherland para a definição dos códigos do 9 sub espaços? 19

Computação Gráfica Recorte de Segmentos de Recta e Polígonos 1-6 No Algoritmo de Cohen-Sutherland como é que os códigos dos vértice de um segmentos de recta pode ser usado na escolha da do polígono de recorte com a qual se deve proceder ao calculo de uma intersecção? 1-7 Considere o caso da figura anexa com a qual vai ser utilizado o algoritmo de Cohen-Sutherland no recorte da segmento de recta poligonal ABCD pelo polígono de recorte. Calcule os códigos dos vértices. Qual o significado de um 1 no código do ponto C? Como aplicaria esse algoritmo no recorte do polígono ABCD? B C A 1-8 Considere o algoritmo de Cohen Suntherland. D a Qual o número máximo de recortes de um segmento de recta aplicando esse algoritmo? b Quais os códigos dos vértices de um segmento de recta de modo a que o número máximo de intersecções seja? 1-9 Descreva sucintamente o modo como funciona o Algoritmo de Cyrus-Beck e indique um ponto fraco e outro forte desse algoritmo. 1-1 Aplique o algoritmo de Cyrus-Beck à figura. Inclua a classificação de todos os pontos de intersecção que o algoritmo calcula. 1-11 Descreva os principais problemas que podem ocorrer ao aplicar o recorte a um polígono côncavo? Justifique, utilizando uma figura. 1-12 Descreva o algoritmo de Sutherland Hodgman. O que poderá acontecer se o algoritmo for aplicado a um polígono côncavo? Ilustre com um exemplo. 1-13 Por que é que o algoritmo de Sutherland-Hodgman só funciona com polígonos de recorte convexos? Dê um exemplo. 2