Computação Gráfica

Geometria Computacional - Contagem Geométrica

Prof.Dr. Márcio Sarroglia Pinho


Pergunta: Dada uma malha de pontos, quantos destes pontos estão dentro de um dado retângulo marcado sobre a malha ?

A solução tradicional é

contador = 0
Para cada ponto(xi,yi) da malha
     se (xi >= XMin) e (xi <=Xmax) e
        (yi >= YMin) e (yi <=YMax)
     então contador++

 

Mas e se o número de pontos for muito grande ?

Algoritmo de Dominância

A Dominância de um ponto corresponde ao número de pontos dominados por ele dentro de um plano.

Um ponto P1(x1,y1) domina um ponto P2(x2,y2) se e somente se:

(x1 >= x2) e (y1 >=y2)

A idéia é cria uma malha sobre os pontos do problema. Em cada ponto se passa uma linha horizontal e outra vertical. Os pontos não precisam estar espaçados de forma regular.

Nesta malha, em cada célula, todos os pontos internos tem a mesma dominância do ponto superior direito

Preenche-se a malha com a dominância em cada célula.

 

Para saber quantos pontos estão em um retângulo marcado sobre a malha calcula-se a dominância em cada vértice do retângulo.

Q(p) = dominância de P

Nro de Ptos dentro do retângulo: Q(C) - Q(B) - Q(D) + Q(A)

Exemplo:

 

Q(A) = 0, Q(B)= 1, Q(C)= 3, Q(D)= 0

Nro. de pontos = 3 - 1 - 1 + 0 = 1 ponto

FIM.