Diferença entre DDA e Bresenham's Algorithm Diferença entre

Anonim

O Algoritmo Diferencial Digital (DDA) e O Algoritmo de Bresenhams são os algoritmos de desenho de linhas digitais e são usados ​​em computação gráfica para desenhar imagens. Anteriormente, estávamos usando analisadores analíticos para calcular os pixels e, assim, os desenhos em linha eram possíveis. Mas esses métodos analíticos não são tão precisos como os métodos digitais que, com o uso desses algoritmos digitais agora e como em todos os campos, também estamos inventando métodos de qualidade superior em computação gráfica. A invenção desses algoritmos é um exemplo perfeito. Antes de prosseguir, vejamos o conceito por trás desses algoritmos. Embora pareça fora do alcance de nossa discussão, é essencial ressaltar as diferenças básicas entre os dois. Se você está realmente familiarizado com os algoritmos, você pode saltar para as diferenças reais localizadas no final desta página.

O que é o Algoritmo Diferencial Digital (DDA)?

Um DDA é usado principalmente para desenhar linhas em gráficos de computador e usa valores reais ao prever os próximos valores de pixel. Vamos assumir o valor inicial do pixel como (X0, Y0) (X0, Y0) e o pixel de destino como (X1, Y1) (X1, Y1). Aprenderemos a calcular os valores de pixel de destino a partir do valor de pixel conhecido (X0, Y0) (X0, Y0) conforme abaixo.

  • Como calcular o valor do ponto de destino usando DDA?

Passo 1: Aqui temos a entrada (X0, Y0) (X0, Y0) e devemos identificar se a linha é paralela ao eixo x ou ao eixo y. Para descobrir isso, permitamos agora calcular a diferença entre os valores de pixel inicial e de destino.

dx = X1 - X0

dy = Y1 - Y0

Passo 2: Agora, identificamos a diferença e devemos desenhar a linha ao longo do eixo x se 'dx' for zero Caso contrário, devemos desenhar a linha paralelamente ao eixo y. Aqui está a computação real em termos da linguagem do computador.

se (absolute (dx)> absolute (dy))

Steps = absolute (dx);

else

Passos = absoluto (dy);

Passo 3: Agora, é hora de identificar a coordenada real 'x' ou os valores de pixels de coordenadas 'y' para desenhar a linha.

X incremento = dx / (flutuador) etapas;

Y increment = dy / (float) etapas;

Passo 4: Isso deve ser calculado até chegar ao pixel de destino. O algoritmo DDA arredonda o valor do pixel para o valor inteiro mais próximo ao fazer a computação. Aqui está o exemplo de código do que discutimos agora.

For (int v = 0; v

{

x = x + incremento X;

y = y + Y incremento;

putpixel (Round (x), Round (y));

}

Terminamos com o desenho da linha usando o DDA e vamos passar para o Bresenham agora!

O que é o Algoritmo de Bresenham?

É também um algoritmo de desenho de linha digital e foi inventado por Bresenham no ano de 1962 e é por isso que ele tem o mesmo nome. Este algoritmo é mais preciso e utilizou subtração e adição para calcular o valor do pixel ao desenhar a linha. A precisão do algoritmo de Bresenham é confiável ao desenhar curvas e círculos também. Vejamos como esse algoritmo funciona.

Passo 1: Os algoritmos de Bresenham assumem a coordenada de pixels inicial como (x a + 1 , y a ).

Passo 2: Calcula automaticamente o próximo valor de pixel como (x a + 1 , y a + 1 ), Aqui 'a' é o valor incremental e o algoritmo calcula-o adicionando ou subtraindo as equações que ele formou.

Este algoritmo calcula valores precisos sem arredondamento e parece mais fácil também!

  • Exemplo Numérico do Algoritmo de Bresenham:

Consideremos agora os pontos (0, 0) e (-8, -4) e vamos desenhar uma linha entre esses pontos usando o algoritmo de Bresenham.

Dados dados, (x1, y1) = (0, 0) e (x2, y2) = (-8, -4).

Vamos agora calcular os valores diferenciais como abaixo.

Δx = x2-x1 = -8-0 = 8

Portanto, o valor incremental para x = Δx / x2 = 8 / -8 = -1.

Δy = y2-y1 = -4-0 = 4

Portanto, o valor incremental para y = Δy / y2 = 4 / -4 = -1.

Variável de decisão = e = 2 * (Δy) - (Δx)

Portanto, e = 2 * (4) - (8) = 8-8 = 0

Com o cálculo acima, deixe nós tabulam os valores resultantes. Os valores da coordenada y são ajustados com base em uma variável de decisão e estamos apenas ignorando sua computação aqui.

Pixel x y Variável de decisão
(0, 0) 0 0 0
(- 1, 0) - 1 0 Um valor
(- 2, -1) -2 -1 0
(- 3, -1) -3 < -1 Um valor (- 4, -2)
-4 -2 0 (- 5, -2)
-5 > -2 Um valor (- 6, -3) -6
-3 0 (- 7, -3) -7
-3 Um valor (- 8, -4) -8
-4 0 Diferenças entre DDA & Bresenham's Algorithm :

Cálculo aritmético: O DDA usa valores reais em seus cálculos com o uso de pontos flutuantes. Os seguintes valores de pixel ou ponto são determinados com as equações diferenciais

  • X incremento = dx / (flutuante) etapas

Y incremento = dy / (float) etapas

Aqui não são usadas constantes fixas, mas no algoritmo de Bresenham pontos fixos são usados ​​em cálculos aritméticos. O algoritmo de Bresenham usa a aritmética Integer, ao contrário do DDA.

Tipo de operação utilizada:

O DDA resolve as equações diferenciais com operações de multiplicação e divisão. Você pode notar o mesmo aqui, X incremento = dx / (flutuante) etapas. O algoritmo de Bresenham usa operações de adição e subtração e você pode notar o mesmo aqui na sua próxima equação de cálculo de valor de pixel (x

  • a + 1

, y a + 1 ). A aritmética é mais simples em Bresenham quando comparada à DDA. Eficiência: Como discutimos anteriormente, o algoritmo de Bresenham usa aritmética mais simples que o DDA e resulta em resultados eficientes.

  • Velocidade:

Como DDA usa inteiros de ponto flutuante juntamente com operações de multiplicação e divisão, é comparativamente mais lento, enquanto o algoritmo de Bresenham usa apenas aritmética inteira, além de adições e subtrações sozinhas. Isso reduz consideravelmente o tempo necessário para seus cálculos e, portanto, mais rápido do que o DDA.

  • Precisão: Embora o DDA use valores de ponto flutuante, a precisão do DDA não é tão melhor quanto o de Bresenham. Uma variedade de fatores afetam esse conceito e, portanto, o Bresenham é mais preciso do que o DDA.
  • Arredondamento: Basta olhar para o cálculo do DDA aqui.
  • X incremento = passos dx / (flutuante) Você pode notar o 'flutuador' e, portanto, não arredonda os valores, enquanto que o algoritmo de Bresenham arredonda os valores para o número inteiro mais próximo. Portanto, os valores utilizados são mais simples no algoritmo de Bresenham.

O que ele desenha?

O DDA é capaz de desenhar círculos e curvas para além das linhas de desenho. O algoritmo de Bresenham também é capaz de desenhar todos os mencionados acima e sua precisão é realmente maior que a do DDA. Da mesma forma, o algoritmo de Bresenham poderia apresentar curvas eficientes do que a produzida pelo DDA. Ambos os algoritmos podem desencadear triângulos e polígonos também.

  • Qual é caro?

Como o DDA inclui o arredondamento também, é caro do que o uso do algoritmo de Bresenham.

  • Qual é um algoritmo otimizado?

Da nossa discussão acima, é muito claro que o algoritmo do Bresenham é otimizado em termos de velocidade, custo e uso das operações.

  • Vejamos as diferenças em uma forma tabular.

S. Não

Diferenças em

Algoritmo Diferencial Digital Algoritmo de Bresenham 1. Por que o nome?
Apenas porque era a implementação digital das equações, ele obteve o nome. Foi inventado por J. E. Bresenham no ano de 1962 e, portanto, o nome. 2. Cálculos
Envolve cálculos mais difíceis. Os cálculos utilizados são realmente mais simples. 3. Tipos de operações utilizadas
Utilizou multiplicações e divisões. As equações diferenciais da amostra usadas aqui são os passos Xincrement = dx / (float), Yincrement = dy / (float). Usa adições e subtrações. A computação da amostra aqui pode ser denotada como (x

a + 1

, y a + 1 ). 4. Valores de cálculo aritmético
Usa valores de ponto flutuante. Usa apenas os valores inteiros. 5. Eficiência
A aritmética complexa resulta em menor eficiência. A aritmética mais simples resulta em mais eficiência. 6. Velocidade
O uso de multiplicações e operações de divisão leva muito tempo para seus processos de computação. O uso das operações de adição e subtração leva menos tempo do que o DDA. 7. Precisão
É menor em precisão. É mais preciso. 8. Arredondando
Usa valores reais e nunca completa os valores. Arredonda os valores para os valores inteiros mais próximos. 9. Capacidade de desenho
É capaz de desenhar linhas, círculos e curvas, mas com menor precisão. Nós podemos até desenhar triângulos e polígonos com esse algoritmo. É capaz de desenhar linhas, círculos e curvas com maior eficiência. Triângulos e polígonos também podem ser desenhados com este algoritmo. 10. Custo dos cálculos
É caro porque envolve o encerramento também. O uso do algoritmo de Bresenham é mais barato do que o DDA. 11. Algoritmo otimizado
Não é um algoritmo otimizado É um algoritmo otimizado. Nós lidamos com todas as diferenças possíveis entre o DDA eo algoritmo de Bresenham. Pode até parecer repetitivo, mas há algum motivo válido para mencionar esses pontos novamente e você saberia quando você o entender completamente. Se você ainda sente que existe uma ambiguidade, deixe-nos um comentário. Vamos aprender juntos compartilhando o conhecimento apropriado!