Diferença entre DDA e Bresenham's Algorithm Diferença entre
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! É 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! 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. 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 , 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. 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. 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. Como o DDA inclui o arredondamento também, é caro do que o uso do algoritmo de Bresenham. Da nossa discussão acima, é muito claro que o algoritmo do Bresenham é otimizado em termos de velocidade, custo e uso das operações. S. Não Diferenças emO que é o Algoritmo de Bresenham?
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