pdf interseção entre polígonos cohen

20
5/9/2018 PDFInterseoentrepolgonosCohen-slidepdf.com http://slidepdf.com/reader/full/pdf-intersecao-entre-poligonos-cohen 1/20 Mário Rui Gomes Computação Gráfica 1 1Recorte 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 = 0 e z = 1 como pode observar-se na figura 1.1. y z x ( - 1, 1, 1) ( - 1, -  1, 1) (1, - 1, 0) ( - 1, 1, 0) ( - 1, 1, 0) ( - 1, -  1, 1) (1, 1, 1) plano de recorte posterior (z = 0) plano de recorte anterior (z = 1) y z x ( - 1, 1, 1) ( - 1, -  1, 1) (1, - 1, 0) ( - 1, 1, 0) ( - 1, 1, 0) ( - 1, -  1, 1) (1, 1, 1) plano de recorte posterior (z = 0) plano de recorte anterior (z = 1) Figura 1.1 – Volume canónico.

Upload: roberto-marinho

Post on 08-Jul-2015

295 views

Category:

Documents


0 download

TRANSCRIPT

5/9/2018 PDF Interse o entre pol gonos Cohen - slidepdf.com

http://slidepdf.com/reader/full/pdf-intersecao-entre-poligonos-cohen 1/20

Mário Rui Gomes Computação Gráfica

1

1 Recorte de Segmentosde Recta e Polígonos

1.1 Introdução 

Relembrando os andares do pipeline de visualização, podemos verificar que no andaranterior foi efectuada a Transformação de Visualização a qual consistiu na definiçãode uma vista sobre a cena, recorrendo à especificação dos parâmetros de uma câmaravirtual 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 identificarquais os objectos que se encontram totalmente dentro desse volume, os quais sãotrivialmente aceites, e quais os que se encontram parcialmente dentro do volumecanónico, pelo que têm que ser recortados (clipping em Inglês) pelas faces dafronteira do volume canónico.

Como foi descrito no capítulo anterior, o volume canónico é um paralelepípedo quetem como limites os planos x = -1, x = 1, y = -1, y = 1, z = 0 e z = 1 como podeobservar-se na figura 1.1.

( - 1, 1, 1) 

( - 1, - 1, 1) (1, - 1, 0) 

( - 1, 1, 0) 

( - 1, 1, 0) 

( - 1, - 1, 1) 

(1, 1, 1) plano de recorte 

posterior (z = 0) 

plano de recorte 

anterior (z = 1) y 

( - 1, 1, 1) 

( - 1, - 1, 1) (1, - 1, 0) 

( - 1, 1, 0) 

( - 1, 1, 0) 

( - 1, - 1, 1) 

(1, 1, 1) plano de recorte 

posterior (z = 0) 

plano de recorte 

anterior (z = 1) 

Figura 1.1 – Volume canónico.

5/9/2018 PDF Interse o entre pol gonos Cohen - slidepdf.com

http://slidepdf.com/reader/full/pdf-intersecao-entre-poligonos-cohen 2/20

Computação Gráfica Recorte de Segmentos de Recta e Polígonos

2

O objectivo do recorte será, assim, eliminar as partes dos objectos da cena que seencontrem fora do volume canónico.

Nas representações mais simples, os objectos são descritos pelas suas arestas (modeloem 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 derectas e de polígonos.

Mas os algoritmos de recorte têm, em Computação Gráfica, múltiplas aplicações paralá de permitirem escolher as partes dos objectos que se encontram no interior dovolume de canónico.

Considere-se, por exemplo, a situação em que existe uma cena composta por doispolígonos, A e B os quais, ao serem vistos segundo um dado ponto de vista, opolí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 segmentosde 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 dovolume canónico, caso esses pontos existam.

Por facilidade expositiva considera-se unicamente uma das paredes rectangulares dovolume 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 ocultosconsidera-se que um rectângulo de recorte genérico com as coordenadas que podemser observadas na figura 1.2.

5/9/2018 PDF Interse o entre pol gonos Cohen - slidepdf.com

http://slidepdf.com/reader/full/pdf-intersecao-entre-poligonos-cohen 3/20

Mário Rui Gomes Computação Gráfica

3

 

A

B

D

E

F

G

I

J

D´F´

CH

Ymax 

Ymin 

Xmax Xmin 

Rectângulode Recorte

Figura 1.2 – Recorte de segmentos de recta contra o rectângulo de recorte.

Nos polígonos convexos (todos os ângulos internos inferiores a 180º) em, porexemplo, rectângulos, pode ser usada a propriedade geométrica que garante que se osdois vértices de um segmentos de recta estiverem dentro do polígono, então todo osegmento de recta está dentro do polígono.

Um vértice com coordenadas (X, Y) encontra-se dentro de um rectângulo quando severificarem, simultaneamente, as duas condições

maxmin

maxmin

Y Y Y 

 X  X  X 

≤≤≤≤ (1-1)

Tal como acontece com o segmento de recta AB da figura, se ambos os vérticesestiverem dentro do rectângulo de recorte, então todo o segmento de recta se encontratambém dentro dele, pelo que pode ser trivialmente aceite.

Se ambos os vértices estiverem fora do rectângulo de recorte, o segmento de rectapode estar completamente fora (segmento EF da figura 1.2) e deve ser trivialmenterejeitado, 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 (segmentoCD 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 deum segmento de recta através do cálculo da sua intersecção com cada uma das arestasque limitam o rectângulo de recorte.

Considere-se a representação paramétrica de um segmento de recta cujas coordenadasdos vértices são, respectivamente, (X0, Y0) e (X1, Y1):

5/9/2018 PDF Interse o entre pol gonos Cohen - slidepdf.com

http://slidepdf.com/reader/full/pdf-intersecao-entre-poligonos-cohen 4/20

Computação Gráfica Recorte de Segmentos de Recta e Polígonos

4

 

( )

( )

10

010

010

≤≤

−+=

−+=

seg

seg

seg

Y Y t Y Y 

 X  X t  X  X 

(1-2)

Por seu lado, a representação paramétrica dos segmentos de recta constituintes dorectângulo de recorte é

( )

( )

−+=

=

=

−+=

minmaxmin

max

min

max

min

minmaxmin

Y Y t Y Y 

 X 

 X  X 

Y Y 

 X  X t  X  X 

arestaaresta

aresta

aresta

arestaaresta

(1-3)

consoante sejam os limites inferior ou superior ou os limites esquerdo ou direito. Para

determinar as intersecções de um segmento de recta a recortar com o rectângulo derecorte basta resolver o sistema de equações simultâneas da segmento de recta arecortar e de cada uma das arestas que delimitam o rectângulo em ordem a

segt  e a

arestat  . Para o caso do limite vertical esquerdo do rectângulo de recorte temos:

( )minmaxmin

min

Y Y t Y Y 

 X  X 

arestaaresta

aresta

−+=

=(1-4)

Determinam-se entãoseg

t  e aaresta

t  , por esta ordem. Existirá intersecção quando se

verificarem simultaneamente:

10

10

≤≤

≤≤

seg

aresta

t (1-5)

Para calcular as coordenadas do ponto de intersecção basta substituir na representaçãoparamétrica da aresta o parâmetro arestat  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áriosalgoritmos mais eficientes que se baseiam em técnicas de “atrasar” o cálculo dasintersecções. Essa técnica é utilizada pelo algoritmo cuja descrição será agoraefectuada, o algoritmo de Cohen-Sutherland.

Considere-se um rectângulo de recorte e classifique-se cada vértice dos segmentos derecta a recortar consoante a posição relativa às rectas colineares com cada uma das 4arestas do rectângulo de recorte, conforma figura 1.3 apresenta.

5/9/2018 PDF Interse o entre pol gonos Cohen - slidepdf.com

http://slidepdf.com/reader/full/pdf-intersecao-entre-poligonos-cohen 5/20

Mário Rui Gomes Computação Gráfica

5

1 2 3

4 5 6

7 8 9

Figura 1.3 – Algoritmo de Cohen-Sutherland: os limites do rectângulo de recortedeterminam 9 sub espaços.

O algoritmo inicia-se com o cálculo do sub espaço em que se encontra cada um dosvértices do segmento de recta a recortar. Por exemplo, se ambos os vértices seencontrarem nos sub espaços superiores, respectivamente 1, 2 ou 3, o segmento derecta 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 deintersecção.

Para simplificar a identificação dos sub espaços em que se encontram os vértices, osautores recorreram a uma codificação dos 9 sub espaços usando uma codificação com4 bits, em que cada um dos bits define a posição do sub espaço relativamente a umadas arestas do polígono de recorte. Estes conjuntos de 4 bits denominam-se códigosou outcodes.

O 1º bit está relacionado com a aresta superior, tomando o valor 1 se o vértice seencontra no sub espaço superior e 0 se no sub espaço inferior relativamente à rectacolinear com a aresta superior. O código 1 é sempre usado para codificar os subespaços que não contêm o rectângulo de recorte, conduzindo, desse modo a que acodificação do sub espaço 5 será 0000.

A tabela 1.1 apresenta os valores assumidos pelos vários bits do código de acordocom a posição do ponto em relação ao rectângulo de recorte. Daqui resulta acodificação dos sub espaços apresentada pela figura 1.4.

Bit Aresta Valor Posição

1 Superior 1 acima2 Inferior 1 abaixo3 Direito 1 à direita4 Esquerdo 1 à esquerda

Tabela 1.1 – Valores dos bits do código de posição de um ponto em relação aorectângulo de recorte no algoritmo de Cohen-Sutherland.

5/9/2018 PDF Interse o entre pol gonos Cohen - slidepdf.com

http://slidepdf.com/reader/full/pdf-intersecao-entre-poligonos-cohen 6/20

Computação Gráfica Recorte de Segmentos de Recta e Polígonos

6

1001 1000 1010

0001 0000 0010

0101 0100 0110

Figura 1.4 – Algoritmo de Cohen-Sutherland: códigos dos 9 sub espaçosdeterminados 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 desituações e tratá-las adequadamente, realizando cálculos de intersecções apenasquando tal seja necessário.

Considere-se que OC0 é o código do sub espaço dentro do qual se encontra o primeirovértice do segmento de recta a recortar e que OC1 é o código do sub espaço dentro doqual se encontra o 2º vértice do segmento.

Como já foi referido, teremos OC1 = OC0 = 0 se ambos os vértices se encontraremdentro 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 semi-espaços definidos por cada uma das rectas sobre as quais assentam cada uma das 4arestas do rectângulo de recorte. Essa situação ocorre quando

OC1 & OC0 ≠ 0 (1-6)

Nos restantes casos, em que OC1 & OC0 = 0, terá que ser efectuada uma primeirasubdivisão do segmento de recta. A tabela 1.2 resume estas situações e as acções

correspondentes.Situação  Acção

OC1 = OC0 = 0 AceitaçãoOC1 & OC0 ≠ 0 RejeiçãoOC1 & OC0 = 0 Subdivisão

Tabela 1.2 – Algoritmo de Cohen-Sutherland: Sequência de testes aos códigosdos pontos extremos de um segmento de recta.

Nas situações em que é necessário subdividir o segmento de recta tem que se calculara intersecção com a recta sobre a qual assenta uma das arestas do rectângulo derecorte.

5/9/2018 PDF Interse o entre pol gonos Cohen - slidepdf.com

http://slidepdf.com/reader/full/pdf-intersecao-entre-poligonos-cohen 7/20

Mário Rui Gomes Computação Gráfica

7

Utilizando uma aproximação do tipo “força bruta” teria que calcular-se a intersecçãoda 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 dosegmento de recta a recortar, podemos utilizar essa informação para escolher um doslados do rectângulo.

Considere-se o caso do segmento de recta GH representado na figura 1.5 em que osegmento de recta GH não é nem trivialmente aceite pois pelo menos um dos códigosé diferente de 0 (OCG = 0100 e OCH = 0010), nem trivialmente rejeitado(OCG & OCH = 0).

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 dorectângulo de recorte que deverá ser seleccionado em primeiro lugar para recortar osegmento de recta, eliminando as partes do segmento de recta que se encontram forado rectângulo de recorte.

O bit a 1 do código do 1º vértice, o vértice G, identifica a aresta inferior como aquelaque deve ser seleccionada. Efectuando o cálculo de intersecção obtêm-se um novovértice, G´ (veja-se a figura 1.6), que tem como código o valor 0000.

Uma vez que o código do 1º vértice do novo segmento de recta passou a ter todos osbits a 0, selecciona-se agora o 2º vértice, H. O bit a 1 do 2º vértice conduz à selecçãoda aresta direita do rectângulo de recorte. Daqui resulta o cálculo de um novo vértice,H´, cujo código é 0000. O segmento de recta resultante, G´H´, que a figura 1.6apresenta, é trivialmente aceite.

5/9/2018 PDF Interse o entre pol gonos Cohen - slidepdf.com

http://slidepdf.com/reader/full/pdf-intersecao-entre-poligonos-cohen 8/20

Computação Gráfica Recorte de Segmentos de Recta e Polígonos

8

G´ 

H´ 

Figura 1.6 – Algoritmo de Cohen-Sutherland: segmento de recta depois

de recortado.

I´ 

Figura 1.7 – Algoritmo de Cohen-Sutherland: segmento de recta nãotrivialmente 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çõespara obter-se o segmento de recta recortado, mas nem sempre tal acontece como sepode observar no exemplo que se segue.

Considere-se agora uma nova situação, ilustrada na figura 1.7 e na qual os códigos do1º e 2º vértice são os mesmos que anteriormente, mas que não intersecta o rectângulode recorte.

Sendo os código dos dois vértices exactamente os mesmos do exemplo anterior, será

em primeiro lugar seleccionada a aresta inferior do rectângulo de recorte e calculadoum novo vértice. O código deste vértice é idêntico ao código do 2º vértice, de queresulta a situação em que o segmento recortado é rejeitado.

Dos dois exemplos é possível concluir que o algoritmo de Cohen-Sutherland nãogarante 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 dossegmentos de recta são trivialmente aceites ou trivialmente rejeitadas, casos em quebasta 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 orectângulo de recorte é muito pequeno comparado com a cena a maioria dossegmentos de recta são trivialmente rejeitados. Sempre a que o rectângulo é muitogrande a maioria dos objectos são trivialmente aceites.

Uma das técnicas usadas para identificar os objectos que estão na proximidade docursor (selecção de objectos ou  pick em Inglês) baseia-se na aplicação do algoritmo derecorte sobre um rectângulo de reduzidas dimensões centrado nas coordenadas docursor, o rectângulo de selecção. Todos os objectos que sejam recortados por esserectâ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 subespaços e utilizar códigos compostos por 6 bits.

5/9/2018 PDF Interse o entre pol gonos Cohen - slidepdf.com

http://slidepdf.com/reader/full/pdf-intersecao-entre-poligonos-cohen 9/20

Mário Rui Gomes Computação Gráfica

9

1.2.3 Algoritmo Paramétrico de Cyrus-Beck

Os investigadores Cyrus e Beck seguiram uma aproximação ao problema do recortede segmentos de recta bastante diferente da anterior. Para tal conceberam umalgoritmo 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 daintersecção da recta contendo o segmento do recta a recortar com as 4 arestas dorectângulo de recorte.

t1 

t2  

t3

t4

Figura 1.8 – Recorte paramétrico: pontos de intersecção da recta contendo osegmento 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 quaisos valores de t dos vértices do segmento recortado, caso existam (no exemplo dafigura seriam os vértices correspondentes a t2 e t3).

Intersecção entre linhas

Considere-se novamente a representação paramétrica de um segmento de recta:

10

)()( 010

≤≤

−+=

PPt Pt P(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 dorelógio). Para cada aresta define-se a normal, Ni, orientada para o exterior dopolígono.

Seja Pei um ponto arbitrário pertencente a uma aresta do polígono de recorte. Comopode observar-se na figura 1.9, podemos definir três vectores que partem desse ponto,

5/9/2018 PDF Interse o entre pol gonos Cohen - slidepdf.com

http://slidepdf.com/reader/full/pdf-intersecao-entre-poligonos-cohen 10/20

Computação Gráfica Recorte de Segmentos de Recta e Polígonos

10

um deles seguindo a fronteira e os outros dois para o espaço interior e para o espaçoexterior ao polígono convexo de recorte.

Lado Ei Pei

NiP0

P1

Ni . [P(t) - Pei] < 0

Ni . [P(t) - Pei] = 0

Ni . [P(t) - Pei] > 0

 

Figura 1.9 – Algoritmo de Cyrus-Beck: produtos internos dos três vectores com anormal exterior ao polígono de recorte.

O produto interno da normal à aresta do polígono com cada um destes três vectores é,respectivamente, nulo, negativo e positivo. O sinal do produto interno permitedeterminar se um ponto do segmento de recta coincide com a aresta ou é um pontointerior ou exterior do polígono de recorte.

Para determinar o ponto de intersecção do segmento de recta com a aresta queestamos 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 à aresta como vector que une o ponto arbitrário Pei com o ponto de intersecção é nula, ou seja

( )[ ] 0=−• eii Pt P N  (1-8)

Substituindo P(t) pela equação paramétrica da recta que contem o segmento de recta eexplicitando o parâmetro t, obteremos sucessivamente:

( )[ ]

( ) ( )[ ]

( )( )01

0

010

010

0

0

PP N 

PP N t 

t PP N PP N 

Pt PPP N 

i

eii

ieii

eii

−•−−•=

=−•+−•

=−−+•

 

e, definindo D=P1-P0,

( )

 D N 

PP N t 

i

eii

•−

−•= 0 (1-9)

Para ser possível calcular t é necessário que:

• 0≠i N  , o que é sempre verdadeiro;

5/9/2018 PDF Interse o entre pol gonos Cohen - slidepdf.com

http://slidepdf.com/reader/full/pdf-intersecao-entre-poligonos-cohen 11/20

Mário Rui Gomes Computação Gráfica

11

• P1 e P0 não sejam coincidentes, o que é verdadeiro para qualquer segmento derecta de comprimento não nulo;

• 0≠• D N i , o que aconteceria se o segmento de recta a recortar fosse paralelo

à aresta do polígono;

Não existe intersecção se o valor de t for inferior a 0 ou superior a 1.Tendo sido obtido um modo de calcular se um ponto está no exterior ou no interior dopolígono convexo de recorte e um modo de calcular o valor de t na intersecçãoestamos em condições de descrever o algoritmo paramétrico.

Descrição do AlgoritmoO algoritmo de Cyrus-Beck aplica-se sucessivamente a cada uma das arestas dopolígono convexo. Para cada uma das arestas, escolhe-se, por exemplo, o primeirové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á noexterior e o 2º no interior, situação em que a intersecção é definida comoPotencialmente de Entrada, PE, ou vice-versa em que a intersecção é definida comoPotencialmente de Saída, PS.

Para efectuar essa identificação poderia classificar-se cada vértice do segmento derecta, tal como acontecia no algoritmo da Cohen-Sutherland. No entanto, é possívelefectuar a classificação com base no ângulo existente entre o vector P0P1 e o vectorNi. Se o ângulo for inferior a 90º 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.

PS D N 

PE  D N 

i

i

⇒>•

⇒<•

0

0(1-10)

Estando calculados todos os valores t dos pontos de intersecção, e devidamenteclassificados como sendo do tipo PE ou PS, estamos em condições de identificarexactamente 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 dotipo 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 dotipo PS, então usam-se os dois valores para obter as coordenadas dos vértices dosegmento de recta recortado.

A figura 1.10 apresenta um polígono convexo de recorte com 5 lados e um segmentode recta a recortar (P0P1). 

5/9/2018 PDF Interse o entre pol gonos Cohen - slidepdf.com

http://slidepdf.com/reader/full/pdf-intersecao-entre-poligonos-cohen 12/20

Computação Gráfica Recorte de Segmentos de Recta e Polígonos

12

 

PE

P0 

P1 

PS

PS

PE

Figura 1.10 – Algoritmo de Cyrius-Beck: segmento de recta a recortar comidentificaçã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 dotipo 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 0=• D N 

i.

Escolhendo-se a intersecção do tipo PE com maior valor de t e a intersecção do tipoPS com o menor valor de t obtêm-se os valores paramétricos de cada um dos vérticesdo 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 valoresrepresentados na figura uma vez que os restantes têm valores de t inferiores a 0 ousuperiores a 1.

PEP0 

P1 

PSPE

Figura 1.11 – Algoritmo de Cyrus-Beck: segmento de recta rejeitado (o maior tdas intersecções de tipo PE é superior ao menor t de tipo PS).

5/9/2018 PDF Interse o entre pol gonos Cohen - slidepdf.com

http://slidepdf.com/reader/full/pdf-intersecao-entre-poligonos-cohen 13/20

Mário Rui Gomes Computação Gráfica

13

Como pode observar-se, a intersecção do tipo PS tem um valor de t inferior ao maiorvalor de t de uma intersecção do tipo PE pelo que se conclui que o segmento de rectadeve ser rejeitado.

PseudocódigoPré-calcular Ni e seleccionar Pei para cada aresta

Para cada segmento de recta

Se P1 = P0 então

segmento de recta degenerado: recortar como ponto

Senão

te = 0; tl= 1;

para cada aresta de recorte

Se Ni . D ≠ 0 então /* ignorar arestas paralelas ao segmento */ 

calcular t; /* de intersecção do segmento com aresta */ usar sinal de Ni . D para caracterizar PE ou PS;

Se PE então tE = max(tE, t);

Se PS então tS = min(tS, t);

FimSe

Se tE > tS então devolve nulo;

Senão devolve [P(tE), P(tS)]

Rectângulo de Recorte (Liang e Barsky)

Quando os polígonos de recorte são rectângulos com as respectivas arestas horizontaise verticais podem ser efectuadas várias simplificações.

Em primeiro lugar, os valores de Ni só têm uma coordenada com valor diferente de 0e a outra coordenada toma o valor 1 ou –1 (veja-se a figura 1.12).

Ni=(0,1)

Ni=(1,0)Ni=(-1,0)

Ni=(0,-1)

Figura 1.12 – Algoritmo de Liang e Barsky: normais às arestas do rectângulo derecorte

5/9/2018 PDF Interse o entre pol gonos Cohen - slidepdf.com

http://slidepdf.com/reader/full/pdf-intersecao-entre-poligonos-cohen 14/20

Computação Gráfica Recorte de Segmentos de Recta e Polígonos

14

Como nos cálculos de t é utilizado o produto da normal com o vector P0 Pei, bastautilizar 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 tabela1.3.

O algoritmo paramétrico é eficiente quando é necessário recortar a maioria dossegmentos 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 Ni Pei  P0-Pei t= D N 

PeiP N 

i

oi

−• )( 

Esquerda: x=xmin (-1,0) (xmin,y) (xo-xmin, yo-y))(

)(

01

min0

 x x

 x x

−− 

Direita: x=xmax (1,0) (xmax,y) (xo-xmax, yo-y) )(

)(

01

max0

 x x

 x x

−−

 

Superior: y=ymin (0,-1) (x, ymin) (xo-x, yo-ymin))(

)(

01

min0

 y y

 y y

−− 

Inferior: y=ymax (0,1) (x, ymax) (xo-x, yo-ymax))(

)(

0

max0

 y y

 y y

−−

− 

Tabela 1.3 – Algoritmo de Liang e Barsky: expressões do parâmetro do ponto deintersecção de um segmento de recta com os limites do rectângulo de recorte.

1.3 Recorte de Polígonos 

O recorte de polígonos implica a identificação do lugar geométrico dos pontos quesimultaneamente 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 maiscomplexa que no caso de segmentos de recta. Assim, não basta usar as coordenadasde cada um dos vértices do polígono. Estes têm que estar ordenados segundo o sentidodirecto (contrário ao dos ponteiros do relógio).

Figura 1.13 – Recorte de um Triângulo

5/9/2018 PDF Interse o entre pol gonos Cohen - slidepdf.com

http://slidepdf.com/reader/full/pdf-intersecao-entre-poligonos-cohen 15/20

Mário Rui Gomes Computação Gráfica

15

 

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 umpolígono recortado, como pode observar-se na figura 1.15.

1.3.1 Algoritmo de Sutherland - HodgmanO algoritmo de Sutherland-Hodgman permite o recorte de qualquer tipo de polígonopor um polígono convexo de recorte. Baseia-se na aproximação de “dividir paraconquistar” segundo a qual se obtém um polígono recortado por recortesucessivamente efectuado por cada uma das rectas de suporte de cada uma das arestasdo polígono de recorte.

Como pode observar-se nas figuras 1.16 e 1.17, o algoritmo consiste em recortar opolígono por cada uma das linhas que suportam as arestas do polígono de recorte (4arestas, se for um rectângulo).

5/9/2018 PDF Interse o entre pol gonos Cohen - slidepdf.com

http://slidepdf.com/reader/full/pdf-intersecao-entre-poligonos-cohen 16/20

Computação Gráfica Recorte de Segmentos de Recta e Polígonos

16

 

Figura 1.16 – Algoritmo de Sutherland-Hodgman: primeiro recorte pela rectaque suporta a aresta direita do polígono de recorte.

Figura 1.17 – Algoritmo de Sutherland-Hodgman: recorte pelas rectas quesuportam as arestas inferior, esquerda e superior do polígono de recorte.

A formulação do algoritmo passa do problema do recorte de um polígono por outropolígono para o recorte de um polígono por uma recta, garantindo que se mantém atopologia.

Assim sendo, dada a descrição de um polígono através de uma lista de vértices (V 1,V2, …, Vn), o algoritmo consiste em, ao recortar o polígono contra cada uma dasrectas sobre a qual assenta uma aresta do polígono de recorte, obter uma nova lista devértices, ou mais do que uma lista se houver lugar ao aparecimento de polígonosdegenerados que são separados. Cada uma destas listas descreve um dos polígonosrecortados contra cada um desses limites.

Em primeiro lugar é necessário identificar se o 1º vértice se encontra dentro ou forado 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, alista permanecerá vazia.

5/9/2018 PDF Interse o entre pol gonos Cohen - slidepdf.com

http://slidepdf.com/reader/full/pdf-intersecao-entre-poligonos-cohen 17/20

Mário Rui Gomes Computação Gráfica

17

Seguidamente podem ocorrer 4 situações quando é efectuado o tratamento de cada parde vértices formando uma aresta do polígono de recorte (vejam-se as figuras 1.18 e1.19)

• Transição Interior-Interior: Quando ambos os vértices estão contidos nosemi-plano interior, o 2º vértice da aresta é adicionado à lista de vértices dopolígono recortado.

• Transição Interior-Exterior: Quando ocorre uma transição do semi-espaçointerior 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 nosemi-plano exterior nada é adicionado à lista de vértices do polígonorecortado.

• Transição Exterior-Interior: Quando ocorre uma transição do semi-espaçoexterior 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érticeda aresta.

Interior Exterior

S

P

Interior Exterior

S

PI

 

Figura 1.18 – Transição Interior – Interior e Interior – Exterior

Exterior Exterior

S

P

Interior Exterior

S

P

I

Figura 1.19 – Transição Exterior – Exterior e Exterior - Interior

5/9/2018 PDF Interse o entre pol gonos Cohen - slidepdf.com

http://slidepdf.com/reader/full/pdf-intersecao-entre-poligonos-cohen 18/20

Computação Gráfica Recorte de Segmentos de Recta e Polígonos

18

  A

F

H

G

ED

CBB´

F´´ G´

Figura 1.20 – Recorte de polígono côncavo pelo algoritmo de Sutherland-Hodgman.

Como exemplo, vamos agora aplicar o algoritmo de Sutherland-Hodgman ao polígonocôncavo com 8 vértices ordenados segundo o sentido directo (contrário ao dosponteiros do relógio) representado na figura 1.20.

Escolhendo em primeiro lugar a recta sobre a qual assenta a aresta 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 continuavazia;

• BC: Transição EI -> calcula-se a intersecção B´ que é adicionada à lista assimcomo 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 à listaassim 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 aresta superior, convém verificar o que foi obtidocomo 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 poruma aresta (D´F´) a um 2º polígono (F´GHH´) o qual está, também ligado por uma

aresta (H´B´) ao 1º polígono. Obteve-se um polígono degenerado, pelo que será

5/9/2018 PDF Interse o entre pol gonos Cohen - slidepdf.com

http://slidepdf.com/reader/full/pdf-intersecao-entre-poligonos-cohen 19/20

Mário Rui Gomes Computação Gráfica

19

necessário efectuar um pós-processamento que transforme o polígono degenerado emdois 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 aresta superior uma vez quetodos 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érticesse mantém vazia ();

• F´G: Transição EI -> calcula-se a intersecção F´´ que é adicionada à listaassim 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 paratrês dimensões. Escreva o pseudocódigo resultante.

1-3 Proponha uma extensão para 3D do algoritmo de Cohen-Sutherland, incluindo ocálculo dos códigos e das intersecções.

1-4 O algoritmo de Cohen-Sutherland é particularmente eficaz no recorte desegmentos de recta contra janelas rectangulares. Considere a figura seguinte eexplique como seriam processados cada um dos 5 segmentos, pelo algoritmomencionado. Além de calcular os códigos, deve definir o critério seguido nasubdivisão dos segmentos.

Ymax 

Ymin 

Xmax Xmin 

1-5 Qual o critério usado no Algoritmo de Cohen-Sutherland para a definição doscódigos do 9 sub espaços?

5/9/2018 PDF Interse o entre pol gonos Cohen - slidepdf.com

http://slidepdf.com/reader/full/pdf-intersecao-entre-poligonos-cohen 20/20

Computação Gráfica Recorte de Segmentos de Recta e Polígonos

20

1-6 No Algoritmo de Cohen-Sutherland como é que os códigos dos vértice de umsegmentos de recta pode ser usado na escolha da aresta do polígono de recortecom 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 deCohen-Sutherland no recorte da segmento de recta poligonal ABCD pelopolígono de recorte. Calcule os códigos dos vértices. Qual o significado de um 1no código do ponto C? Como aplicaria esse algoritmo no recorte do polígonoABCD?

A

B

D

C

A

B

D

C

 1-8 Considere o algoritmo de Cohen – Suntherland.

a) Qual o número máximo de recortes de um segmento de recta aplicando essealgoritmo?

b) Quais os códigos dos vértices de um segmento de recta de modo a que onúmero máximo de intersecções seja 0?

1-9 Descreva sucintamente o modo como funciona o Algoritmo de Cyrus-Beck eindique um ponto fraco e outro forte desse algoritmo.

1-10 Aplique o algoritmo de Cyrus-Beck à figura. Inclua a classificação de todos ospontos de intersecção que o algoritmo calcula.

1-11 Descreva os principais problemas que podem ocorrer ao aplicar o recorte a umpolígono côncavo? Justifique, utilizando uma figura.

1-12 Descreva o algoritmo de Sutherland – Hodgman. O que poderá acontecer se oalgoritmo 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ígonosde recorte convexos? Dê um exemplo.