Loading

Alison's New App is now available on iOS and Android! Download Now

Study Reminders
Support
Text Version

Set your study reminders

We will email you at these times to remind you to study.
  • Monday

    -

    7am

    +

    Tuesday

    -

    7am

    +

    Wednesday

    -

    7am

    +

    Thursday

    -

    7am

    +

    Friday

    -

    7am

    +

    Saturday

    -

    7am

    +

    Sunday

    -

    7am

    +

Olá e bem vindo a palestra número 21 no curso, Gráficos da Computação. Atualmente estamosdiscutindo o pipeline gráfico, é assim que a cena 3D é convertida em uma imagem 2D na tela do computador, quais são os estágios lá para executar esta tarefa. Juntos esses estágios são conhecidoscomo pipeline, como já discutimos. Por isso, vamos rapidamente ter uma reveja no pipelineestágios e então iniciaremos nossa discussão sobre o tópico de hoje.Quais são os estágios de pipeline? Temos representação de objetos como o primeiro estágio, depois modelagemtransformação como o segundo estágio, iluminação ou atribuindo cor aos objetos como terceira etapa,pipeline de visualização como o quarto estágio, e conversão de varredura como a quinta etapa. Então, aqui eu gostaria dereenfatizar sobre o ponto que essa sequência que é mostrada aqui não precisa ser exatamente seguidadurante a implementação do pipeline, lá os estágios talvez em uma sequência um pouco diferente.Agora, entre esses estágios, já discutimos primeiro estágio, segunda etapa, terceira etapa eatualmente estamos discutindo a quarta etapa que está visualizando pipeline. Como você pode ver aqui, no pipeline de visualizaçãohá sub estágios. Então, temos visualização de transformação, recorte, ocultação de superfície oculta, transformação de projeção e transformação de janela para viewport.Entre eles, já discutimos nas palestras anteriores, já discutimos a transformação de visualização, a transformação de projeção e a transformação da janela para o visor. Restam mais duas operações na quarta fase, nomeadamente o recorte e a remoção de superfície oculta. Por isso, essas operações vamos discutir em todias e palestras subsequentes.Então, no estágio de visualização de dutos cobrimos essas três transformações: transformação de visão, transformação de projeção e transformação de viewport já.E há mais duas operações: clipping e remoção de superfície oculta que fazem parte da quarta etapa.Então, essas operações vamos cobrir nas palestras que vamos ter esta semana.Vamos começar com recorte. O que é essa operação e como ela é realizada.Se você pode se lembrar, mais cedo conversamos sobre um conceito chamado volume de visualização. Então, essencialmente o que discutimos é que quando estamos tentando gerar uma imagem 2D, essencialmente isso é análogo a tirar uma foto de uma cena de 3D. Então, nós primeiro executamos transformação de visualização, para transferir esse conteúdo do sistema de coordenadas do mundo para visualizar sistema de coordenadas, então executamos transformação de projeção para projetar a descrição do sistema de coordenadas de visualização 3D da cena para uma descrição do avião de visualização 2D. E, finalmente, realizamos mapeamento de janela para visualização.No entanto, neste processo o que projetamos no plano de visualização, projetamos somente os objetos que estão presentes no volume de visualização que é uma região no espaço de coordenadas de visualização 3D que decidimos projetar. Assim, quaisquer que sejam os objetos dentro do volume de visualização devem ser projetados. Assim, precisamos definir este volume de visualização nesta região de 3D, no sistema de coordenadas de visualização antes da projeção.Então, qualquer objeto que esteja dentro deste volume são projetados, enquanto os objetos que estão fora do volume são descartados. Por exemplo, vamos ter um olhar para esta figura. Aqui o volume de visualização está neste tubo paralelo retangular. Agora, como você pode ver esse objeto está inteiramente dentro do volume de visualização, assim ele será projetado no plano de visualização. Este objeto está parcialmente dentro do volume de visualização, portanto, consoante a parte que estiver dentro do volume de visualização será projetada e a parte externa, esta será descartada. Considerando que, nesse caso, o objeto inteiro está fora do volume de visualização, portanto, não será projetado.Então, temos três situações. Em um caso, o objeto inteiro está dentro do volume, portanto, objeto inteiro é projetado. No outro caso, o objeto está parcialmente dentro do volume. Sendo assim, qual parte está dentro do volume será projetada, enquanto que a parte externa será descartada. E, no terceiro caso, temos o objeto inteiro fora do volume que será descartado. Agora, o processo de descarte de objetos é chamado de recorte. Então, antes da projeção nós realizaríamos clipping e então, quaisquer que sejam os objetos que permaneça devem ser projetados.Agora, a questão é saber como um computador pode descartar ou clip um objeto? Isso é feito através de alguns programas ou algoritmos, que coletivamente são conhecidos como clipping algoritmos. Então, nós executamos clipping com a ajuda de alguns algoritmos de clipping. E nesta palestra, e palestras subsequentes passaremos por poucos desses algoritmos que são mais fáceis de entender.Antes de iniciarmos nossa discussão sobre os algoritmos de clipping, devemos manter em mente dois pontos. Primeira coisa é: os algoritmos estarão supondo que o recorte seja feito contra o volume de visualização canônica. Para relembrar, um volume de visualização canônica é um volume de visualização padronizado em que a forma deo volume de visualização é o tubo paralelo retangular e seus aviões de aterramento estão dentro de um intervalo fixo. Então, é um volume de visualização padronizado.Então, sempre que estamos falando de recorte, supomos que a cena já está transferida para o volume de visualização canônica e então estamos realizando clipping. Em segundo lugar, discutiremos pela primeira vez os algoritmos de clipping 2D pela simplicidade. Será mais fácil entender recorte quando estamos lidando com objetos 2D e então estenderemos nossa discussão para o clipping 3D.Então, vamos ver quais são os algoritmos que podemos usar para realizar o clipping 2D.Agora já que estamos discutindo o clipping 2D, temos que nos restringir aos conceitos de 2D. Agora visualizar volume que mencionamos anteriormente é um conceito 3D mas que não é relevante no 2D. Por isso, em vez de volume de visualização utilizamos agora o conceito de janela de visualização que é uma região quadrada no plano de visualização. Em palestras anteriores, já nos apresentamos a ideia de que mencionamos que no plano da vista há uma janela de recorte sobre a qual os objetos são projetados, o conceito é mesmo da janela de visualização.Então ele é equivalente na verdade, para supor que o volume de visualização e todos os objetos já são projetados no plano de visualização, essa é outra maneira de olhar para o recorte 2D. Então já a projeção é feita e temos a janela de clipping 2D agora queremos realizar clipping. Sendo assim, após a projeção queremos realizar clipping.Então, este volume de visualização é projetado para formar a janela e outros objetos são projetados para formar pontos, linhas e áreas de preenchimento, como um polígono. Então, temos uma janela que é formada projetando o volume de visualização no plano de visualização e então outros objetos são projetados para formar pontos, linhas assim como áreas de preenchimento como polígonos.Então, então nosso objetivo resume-se a realizar a operação de recorte para pontos, linhas e áreas de preenchimento com respeito à janela. Então, o cenário é que temos uma janela de clipping ou janela de visualização e temos objetos projetados no plano de visualização e queremos clip osobjetos projetados contra esta janela onde a projeção se dá na forma de pontos, linhas ou áreas de preenchimento.Vamos começar com o mais simples de todo recorte, que é recorte de ponto. Como clip um ponto contra a janela de visualização.Vamos supor que nos é dado um ponto com uma coordenada x, y. Agora a ideia de recorte é simples, temos que verificar se o ponto está dentro da janela ou do lado de fora. Então, o que temos que fazer ésimplesmente ter que verificar se os valores da coordenada estão dentro do limite da janela. Então, precisamos realizar esses check-ins. Então, aqui estamos verificando o valor x contra os limites de janela e valor y aqui estamos verificando contra os limites da janela para determinar se eles estão dentro do limite ou fora. Então, se ele está dentro do limite, nós mantemos o ponto de outra forma o clivamos para fora. Essa é uma ideia muito simples.Mais complicado é o clipping de linha. Aqui não temos um único ponto, temos um grande número de pontos a considerar. Então, o algoritmo correspondente seria mais complicado do que o que temos visto para recorte de ponto.Vamos primeiro falar sobre uma abordagem intuitiva muito simples. O que podemos fazer, podemos representar qualquer segmento de linha com seus pontos finais e então verificamos as posições de ponto final para decidir se clipe ou não. Então, estamos representando uma linha com seus pontos finais. Em seguida, para cada ponto final, estamos aplicando esta abordagem de recorte de ponto para verificar se o terminal está dentro do limite ou não. E depois de verificar ambos os pontos finais, podemos chegar a uma conclusão se a linha está dentro da janela ou não.Mas há um problema. Se seguirmos essa abordagem, pode haver qualquer um dos três cenários. No primeiro caso, ambos os pontos finais podem estar dentro do limite da janela. Considere este segmento de linha como L1. Aqui, ambos os pontos finais estão dentro do limite. Por isso, não clivamos. No segundo caso, um ponto final está dentro e o outro ponto final está fora. Considere L2, aqui este terminal está dentro e este terminal está fora. Então, nesse caso tem que ser recortado. E então há um terceiro cenário em que ambos os terminais estão fora.No entanto, aqui temos um problema. Considerada a linha L4. Neste caso, ambos os pontos finais estão fora e a linha inteira está fora, para que possamos simplesmente descartá-la. Mas em caso de L3, aqui também ambos os pontos finais estão fora. No entanto, uma parte dela definida entre esses dois pontos de interseção está realmente dentro da janela de visualização. Então, não podemos descartar a linha inteiramente. Em vez disso, temos que cortar essas partes externas e descartá-las enquanto isso dentro de parte deve ser mantido. Então, neste caso, então temos que verificar intersecções de limite de linha para determinar se alguma porção está dentro da janela ou não.Agora, esta verificação de interseção é computacionalmente cara porque eles envolvem operações de ponto flutuante. E em aplicações práticas, toda mudança de tela envolve grande número de tais verificações de interseção, o que pode desacelerar o processo de renderização geral e pode até mesmo se tornar imprático. Então, nós exigimos alguns umlternative, alguma solução melhor.Uma dessas soluções é fornecida por um algoritmo chamado, Cohen-Sutherland Algoritmo. Vamos percorrer as etapas do algoritmo.Então, neste algoritmo, assumimos uma representação do plano de visualização. Por isso, aqui assumimos que a janela e seu entorno é dividido em nove regiões como mostrado aqui. Então, esta é a janela, a parte central, e então temos acima da esquerda, acima, acima da direita com relação à janela, esquerda, direita, com respeito à janela novamente, e abaixo esquerda, abaixo, e abaixo direito com respeito à posição da janela novamente. Então, essas nove regiões são assumidas para representar o plano de visão ecomo obtemos a nove região, estendendo os limites da janela como mostrado aqui. Então, esta é a primeira suposição.Então o que fazemos, atribuímos um código a cada uma dessas regiões. Agora, há nove regiões. Então, nós exigimos quatro bits para representar todas as nove regiões, o que é muito óbvio e cada região recebe um código exclusivo, um código exclusivo de quatro bits. Agora, cada bit indica a posição da região com relação à janela. Então, esta é a representação de nove região e este são os códigos atribuídos a essas nove regiões. Observe aqui que cada código é único.Tão acima da esquerda é representado por 1001, acima é representado por 1000, acima direito é representado por 1010, esquerda representada por 0001, direita representada por 0010, abaixo da esquerda representada por 0101, abaixo representada por 0100, e abaixo direita representada por 0110. A região central ou a janela é representada por todos os zeros.E a organização do código parece algo assim, em que o bit mais à esquerda indica localização acima, o próximo bit indica abaixo do local, o próximo bit indica certo e o bit mais à direita indica localização da esquerda. Sendo assim, cada local pode levar 1 ou 0, 1 significa que está acima, 0 significa que está abaixo. Por exemplo, considere 1001. Então, temos acima de 1, abaixo de 0, direito 0, e esquerda 1, isso significa que a região está acima da esquerda como mostrado aqui porque esses dois bits são 1, enquanto que abaixo e os bits certos são 0. Sendo assim, é assim que os códigos são atribuídos a cada região.Agora que é a assunção e atribuição de código. Em seguida, o algoritmo começa a funcionar uma vez que essas coisas são feitas. Por isso, na etapa um do algoritmo atribuímos códigos de região aos pontos finais do segmento de linha. Por isso, dado um segmento de linha, primeiro temos que atribuir seus terminais, os códigos de região correspondentes. Como podemos fazer isso, suponha que o ponto final, um ponto final seja denotado por P (x, y) e a janela seja especificada por esses valores limites Xmin, Xmax, Ymin, Ymax. Então, estes são os valores limites que especifica a janela.Então o que fazemos, realizamos uma verificação simples para determinar o código da região do terminal P. Quais são esses cheques, então verificamos o sinal da diferença entre Y e Ymax. P tem coordenadas x e y e Xmax, Ymax, Xmin, Ymin são os limites da janela. Então, nós tiramos a diferença de Y e Ymax e verificamos seu signo. Agora eles assinam essa quantidade, vão nos dar um resultado 1 se essa quantidade for positiva, caso contrário, é 0 em caso de negativa. Então, nós fazemos isso para cada posição de bit. Então, por pouco 3, verificamos a diferença entre Y e Ymax.Para o bit 2, verificamos a diferença entre Ymin e Y. Para o bit 1 verificamos a diferença entre X e Xmax e por bit 0 verificamos a diferença entre Xmin e X e tiramos o sinal deles e então aplicamos esta regra para obter o valor do bit real.Então, o primeiro passo é atribuição de códigos de região aos pontos finais. Na etapa 2, realizamos mais verificações nos códigos de região que são atribuídos aos terminais e, em seguida, realizamos ação. Então, se ambos os códigos de terminais viram 0000, isso significa que a linha está completamente por dentro. Então, nós mantemos a linha. Agora, se lógico AND ou o bitwise AND operação nos códigos de terminais se tornar não igual a 0000, então a linha está completamente fora e descartamos a linha inteira. Observe que, aqui não precisamos verificar interseção.Na próxima etapa, quando nenhum dos casos que acabamos de discutir na etapa 2 ocorrer, sabemos que a linha está parcialmente dentro da janela e precisamos clivá-lo. Por isso, na etapa 2 realizamos verificações para decidir se a linha está completamente dentro ou completamente fora e, consequentemente, damos passo. Então se nenhuma dessas condições satisfazer isso significa que a linha está parcialmente dentro e precisamos clivá-lo, que fazemos na etapa 3.Então para clipping, precisamos calcular o ponto de interseção de limite e linha. Por isso, aqui não podemos evitar o cálculo dos pontos de intersecções. E que podemos fazer de maneiras diferentes, uma possível maneirapode ser tirar os limites em uma ordem particular. Por exemplo, primeiro acima dos limites então abaixo do limite, então direito limite, então limite de esquerda e assim por diante, qualquer ordem é multa. E para cada limite comparar os valores de bits correspondentes de códigos de região de ponto final para decidir se a linha está atravessando o limite ou não.Se os códigos de região não são mesmos então a linha se crua com esse limite específico, então formamos a equação da linha a partir dos pontos finais e determinamos o ponto de interseção resolvendo as equações. E então atribuímos código de região ao ponto de interseção, como já fizemos anteriormente. E o fazemos para todos os limites e neste processo, descartamos o segmento de linha que fica do lado de fora da janela.Agora temos um novo código de região que é o ponto de interseção e o outro ponto final com relação a um determinado limite. Então, comparamos os dois novos pontos finais para ver se eles estão completamente dentro da janela. Se eles forem, então é claro que mantemos isso, se não então levarmos o outro ponto final e repetimos o processo. Então, o que fazemos na etapa 3, na etapa 3 vamos para recortar a linha. Começamos com um ponto final; atribuímos um código de região que já está lá, verificamos o código da região com relação a todos os limites seguindo uma determinada sequência e com base nessa verificação determinamos se a linha está interseccionando um determinado limite.Se é assim, então utilizamos as equações de linha e as equações de limite para resolver para o ponto de interseção. Em seguida, atribuímos um novo código, a maneira como fizemos antes para este ponto de interseção e o ponto de interseção e o ponto final claramente fica fora da janela de recorte e nós descartamos. Em seguida, temos dois novos pontos finais que é o ponto de interseção e o terminal restante original. Verificamos se ele está completamente dentro da janela se é então nós o mantemos, caso contrário repetimos o processo novamente para o outro ponto final.Vamos tentar entender o que nós discutimos até agora em termos de alguns exemplos.Então mais cedo mostramos como atribuir os códigos da região, e com base nisso como determinar se recorre a uma linha ou não. Consideremos esse segmento de linha definido entre o ponto final A e B. E a extensão de janela fornecida aqui, o Xmin é 2, Xmax é 4, Ymin é 2 e Ymax é 4. Verificamos o sinal e, consequentemente, atribuímos código de região aos pontos finais. Por exemplo, para A, vamos tentar fazer isso. Comecemos com o bit 3, aqui a expressão correspondente é sinal de 3 menos 4, o que é sinal de menos 1, uma vez que é uma quantidade negativa tão pouco 3 será 0.Da mesma forma, bit 2 novamente em quantidade negativa para que seja 0. Bit 1, esta é uma quantidade positiva 1 para que rende 1. E o bit 0 que é novamente uma quantidade negativa e estamos levando o sinal disso, assim resultará em 0. Então, nosso código de região será dado por esses bits.Ou 0010. De forma semelhante, podemos verificar B que é 0010, será mesmo.Agora vamos para a etapa 2, série de cheques. Então, primeiro cheque é se ambos os pontos finais são iguais a 0. Agora eles não são 0000, então a primeira verificação falha. Segunda verificação é se eles são lógicos AND não é iguala 0000 o que acontece de ser verdadeiro neste caso. Então, podemos ter certeza de que essa linha está completamente fora do limite da janela. Então, não é necessário mais verificação e podemos simplesmente descartá-lo. Então, essa linha em particular será completamente descartada apenas verificando os códigos da região, conseguimos determinar que ela está completamente fora.Agora vamos considerar um outro segmento de linha, que é dado pelos pontos finais P e Q. Como de costume vamos determinar primeiramente os códigos de região de ponto final. O código P vai se transformar em 0000, como você pode ver aqui por bit 3 sinal de uma quantidade negativa 0. Novamente, bit 2 negativo quantidade 0, bit 1 negativo quantidade 0 e bit 0 sinal de uma quantidade negativa novamente 0. Da mesma forma, podemos determinar o código de região de Q, que acaba por ser 0010. Você pode tentar a si mesmo.Então uma vez que os códigos da região estão decididos, nós vamos para a série de cheques. Primeira verificação falha, os pontos finais ambos os pontos finais não são 0000. Segunda verificação também falha, lógica E acaba sendo 0000. Então, não está completamente fora. Então, precisamos ir para a terceira etapa e precisamos determinar as intersecções.A partir dos endpoints podemos derivar a equação da linha, como mostrado aqui. E então verificamos a interseção desta linha com limites na ordem a seguir, acima do limite primeiro vamos verificar com, então abaixo limite, então limite direito e, em seguida, limite esquerdo. Assim, para acima delimite você pode ver que o bit 3 que representa o limite acima de P e Q ambos os pontos finais são iguais. Então, a linha não se crua acima do limite. Da mesma forma, você pode ver que essa linha não se crua abaixo do limite. Há uma diferença dos valores de bits em caso de bit 1, esses valores são diferentes. Então, podemos concluir que a linha cruza o limite certo.Então, temos que descobrir o ponto de interseção com o limite certo. Agora, equação da linha de limite direita é x igual a 4, como você pode ver aqui. E colocamos esse valor na equação da linha para conseguir o ponto de interseção em 4, 5 por 2. Este é o ponto de interseção. Agora, como você pode ver deixe-nos chamar este Q ’. Então, já que a linha atravessou o limite, então Q ’ Q está fora do limite porque Q está fora. Então, esse segmento é descartado e o novo segmento de linha passa a ser PQ ’. Estes são os dois novos pontos finais.Próximo, determinamos ae código de região de Q ’ como vimos anteriormente o que acaba por ser 0000. Agora, como você pode ver ambos P e Q ’ ter o mesmo código de região 0000. Então, esse segmento está inteiramente dentro da janela. E ele é retido alterando Q para Q ’.Uma coisa foi esquerda, mais cedo nós verificamos por acima abaixo direito limite, não verificamos o limite esquerdo. No entanto, como podemos ver com esses códigos de região de P e Q ’ porque esse é o novo segmento de linha bit 0 é o mesmo para ambos o ponto final para que não haja cruzamento. E assim, no final do algoritmo, obtemos PQ ’ como a linha recortada. Por isso, é assim que podemos verificar recorte seguindo este algoritmo.Vamos ver mais um exemplo. Agora vamos considerar um segmento de linha um pouco mais complicado dado por M e N. Como antes podemos determinar o código da região como mostrado aqui, para ambos os pontos finais M e N que acaba por ser para M é 0001 e para N é 0010.Então, na próxima etapa, vamos para os cheques, séries de cheques. Aqui também a primeira verificação falha, ambos os pontos finais não são iguais a 0000. Segunda verificação também falha. Lógico e resultados em 0000, portanto não é 0000, então segundo cheque falha. Assim, não podemos mantê-lo completamente ou descartá-lo completamente. Então, deve haver alguma interseção e temos que determinar que o cruzamento e o clipe da linha. Então, precisamos determinar pontos de interseção de limites de linha e clip it.Para isso precisamos decidir a questão de linha a partir de seus pontos finais, o que é fácil como mostrado aqui. Em seguida, verificamos a interseção de linha com limites e seguindo esta ordem acima, abaixo, direita e limites de esquerda. Sendo assim, pouco 3 de M e N são mesmos que significa linha não crua acima do limite. Da mesma forma, não se crua abaixo do limite de bits 2 é igual. No entanto, o bit 1 são diferentes e a linha cruza o limite certo.Então verificamos pontos de interseção, portanto, a equação do limite certo é x igual a 4. Então, usando essa equação e a equação da linha obtemos o ponto de interseção para ser N ’ (4, 9) por 4, que é aqui. Agora este ponto é o ponto de interseção entre o limite certo e a linha e já que N está fora do limite da direita, de modo que antes de descartar este segmento N ’ N e o segmento de nova linha torna-se MN ’, portanto esta parte. Em seguida, decidimos o código da região do novo ponto final N ’ que é 0000.Assim, temos agora dois novos terminais M e N ’. M tem código 0001 e N ’ tem código 0000. Agora mais cedo verificamos por acima, abaixo, e limite de direita, a verificação de limite esquerdo estava pendente, faremos isso a seguir. Aqui se verificarmos, podemos ver que para o limite esquerdo, os valores de bits não são iguais, isso significa novamente há uma interseção com o limite esquerdo e verificamos por que pontos de interseção entre o limite esquerdo e o novo segmento de linha dado pelos terminais M e N ’.Agora, sabemos que equação de limite de esquerda é x=2. Utilizamos essa equação e a equação de linha para obter o ponto de interseção M ’, que é 2 e 11/4, aqui. Agora o ponto M está fora do limite de esquerda que já conhecemos, isso significa no lado esquerdo, por isso descartamos este segmento MM ’. E novo segmento de linha torna-se M ’ N ’ entre estes dois pontos, este é M ’ e este é N ’. Então, nós agora decidimos ou determinamos o código da região deste novo terminal M ’ que é 0000.Então vamos para verificação dos códigos de região do ponto N novamente, etapa 2 do algoritmo e encontramos que M ’ e N ’ são mesmo código de região 0000, isso significa que todo esse segmento de linha M ’ e N ’ está dentro da janela. Então, o algoritmo redefine o segmento de linha para M ’ N ’ e nós já verificamos por todos os limites, portanto, não resta mais limite a ser verificado. E o algoritmo retorna esse segmento de linha como o segmento de linhas cortadas e paradas. É assim que o algoritmo funciona.Então, para resumir, o algoritmo de Cohen Sutherland é projetado para reduzir os cálculos de interseção. Se nós vamos para método intuitivo então quando a linha está completamente dentro ou completamente fora, édifícil de dizer. Por isso, para cada linha temos que ir para verificações de interseção, isso não é necessário em caso de método de Cohen Sutherland.Aqui, atribuímos alguns códigos de região aos terminais de linha e com base nos códigos da região podemos decidir se a linha está completamente dentro ou completamente fora. Nesses casos, não precisamos ir para a verificação de interseção. No entanto, se a linha não estiver completamente dentro ou completamente fora, sabemos que há alguma interseção e precisamos clip, lá temos que ir para alguns checagem de interseção e descobrir os pontos de interseção. Então, alguma quantidade de cálculo de intersecção ainda permanece.Mas ela reduz o cálculo em grande medida, o que é benéfica para tornar os complexos mais rápidos. Mas como eu disse, ainda conserva alguns cálculos de interseção.Então, esse algoritmo em particular funciona bem quando o número de linhas que podem ser cortadas sem mais processamento é grande em comparação com o tamanho do conjunto de entrada de linhas. Então, quando o número de linhas que podem ser recortadas sem mais processamento é grande, então claramente Cohen Sutherland funciona muito melhor porque nenhum cálculo de interseção está envolvido. Mas se isso não for assim, então ainda tem algum problema.Há de fato outros métodos mais rápidos que são desenvolvidos para reduzir ainda mais o cálculo de intersecções e esses métodos são desenvolvidos com base em testes mais eficientes que não requerem interseção ou operações de ponto flutuante complexas.Houve um algoritmo proposto por Cyrus e Beck, que estava entre as primeiras tentativas neste sentido e que contava com equações de linha paramétrica. Mais tarde, uma versão mais eficiente foi proposta por Liang e Barsky.No entanto, neste curso não discutiremos mais esses algoritmos. Se você estiver interessado então pode se referir ao material de leitura que será mencionado em seguida. Por isso, resumindo, hoje aprendemos sobre recorte em 2D, clipping significa descartar objetos que estão fora do volume de visualização. Em caso de recorte 2D queremos descartar linhas ou pontos que estão fora da janela de clipping. Mais tarde, veremos como descartar área de preenchimento também que estão fora da janela de clipping. E, para fazer isso, contamos com algum algoritmo para reduzir extensos cálculos de ponto de interseção.Um tal algoritmo que aprendemos hoje, que é o algoritmo de Cohen Sutherland. É bastante eficiente no entanto, ainda mantém alguma quantidade de cálculos complexos que podem ser aliviados com outros algoritmos mais eficientes, a saber, por Ciro e Beck ou por Liang e Barsky. Então, aqueles algoritmos que não discutimos.Se você quer aprender sobre aqueles que você pode referir ao material de leitura que é mencionado neste slide. Então, você pode se referir a este livro. Acesse o capítulo 7, seção 7,1, hoje discutimos a seção 7.1.1. No entanto, se você está interessado em aprender sobre o algoritmo Liang Barsky, então você pode passar pela próxima seção também, seção 7.1.2 também. Não discutiremos esse algoritmo mas você pode passar por ele, se quiser mais informações. Isso é tudo para hoje. Obrigado e adeus.