Différence entre l'ADD et l'algorithme de Bresenham Différence entre

Anonim

l'algorithme numérique différentiel (DDA) et l'algorithme de Bresenhams sont les algorithmes de dessin de lignes numériques et sont utilisés en infographie pour dessiner des images. Auparavant, nous utilisions des analyseurs analytiques pour calculer les pixels et ainsi les dessins au trait étaient rendus possibles. Mais ces méthodes analytiques ne sont pas aussi précises que les méthodes numériques qui, avec l'utilisation de ces algorithmes numériques maintenant et comme dans tous les domaines, nous avons également inventé des méthodes de qualité supérieure en infographie. L'invention de ces algorithmes est un exemple parfait. Avant de continuer, regardons le concept derrière ces algorithmes. Bien qu'il semble hors de la portée de notre discussion, il est essentiel de souligner les différences fondamentales entre les deux. Si vous êtes vraiment familier avec les algorithmes, vous pouvez sauter aux différences réelles situées à la fin de cette page.

Qu'est-ce que l'algorithme différentiel numérique (DDA)?

Un ADD est principalement utilisé pour dessiner des lignes dans des graphiques informatiques et utilise des valeurs réelles tout en prédisant les valeurs de pixels suivantes. Supposons que la valeur de pixel initiale soit (X0, Y0) (X0, Y0) et que le pixel de destination soit (X1, Y1) (X1, Y1). Nous allons apprendre comment calculer les valeurs de pixels de destination à partir de la valeur de pixel connue (X0, Y0) (X0, Y0) comme ci-dessous.

  • Comment calculer la valeur du point de destination en utilisant DDA?

Etape-1: Ici nous avons l'entrée (X0, Y0) (X0, Y0) et nous devrions identifier si la ligne est parallèle à l'axe des abscisses ou à l'axe des y. Pour trouver cela, calculons maintenant la différence entre les valeurs de pixel initial et de destination.

dx = X1 - X0

dy = Y1 - Y0

Étape 2: Maintenant, nous avons identifié la différence et nous devrions tracer la ligne le long de l'axe des x si 'dx' est zéro sinon, nous devrions tracer la ligne parallèle à l'axe des ordonnées. Voici le calcul réel en termes de langage informatique.

si (absolu (dx)> absolu (dy))

Étapes = absolu (dx);

else

Steps = absolute (dy);

Étape-3: Maintenant, il est temps d'identifier la coordonnée 'x' réelle ou les valeurs des pixels des coordonnées 'y' afin de tracer la ligne.

X increment = dx / (float) pas;

Y increment = dy / (float) pas;

Étape 4: Cela doit être calculé jusqu'à ce que nous atteignions le pixel de destination. L'algorithme DDA arrondit la valeur du pixel à la valeur entière la plus proche tout en effectuant le calcul. Voici l'exemple de code de ce dont nous avons discuté maintenant.

Pour (int v = 0; v

{

x = x + X incrément;

y = y + incrément de Y;

putpixel (Rond (x), Rond (y));

}

Nous avons fini de tracer la ligne en utilisant le DDA et passons maintenant au Bresenham!

Qu'est-ce que l'algorithme de Bresenham?

C'est aussi un algorithme de dessin au trait numérique qui a été inventé par Bresenham en 1962 et c'est pourquoi il a le même nom. Cet algorithme est plus précis et utilise la soustraction et l'addition pour calculer la valeur du pixel tout en traçant la ligne. La précision de l'algorithme de Bresenham est fiable tout en dessinant des courbes et des cercles. Regardons comment fonctionne cet algorithme.

Étape-1: Les algorithmes de Bresenham supposent que la coordonnée initiale des pixels est (x a + 1 , y a ).

Étape-2: Il calcule automatiquement la prochaine valeur de pixel comme (x a + 1 , y a + 1 ), ici 'a' est la valeur incrémentale et l'algorithme le calcule en ajoutant ou soustrayant les équations qu'il a formées.

Cet algorithme calcule des valeurs précises sans arrondi et semble plus facile aussi!

  • Exemple numérique de l'algorithme de Bresenham:

Considérons maintenant les points (0, 0) et (-8, -4) et dessinons une ligne entre ces points en utilisant l'algorithme de Bresenham.

Données fournies, (x1, y1) = (0, 0) et (x2, y2) = (-8, -4).

Calculons maintenant les valeurs différentielles comme ci-dessous.

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

Par conséquent, la valeur incrémentale pour x = Δx / x2 = 8 / -8 = -1.

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

Par conséquent, la valeur incrémentale pour y = Δy / y2 = 4 / -4 = -1.

Variable de décision = e = 2 * (Δy) - (Δx)

Par conséquent, e = 2 * (4) - (8) = 8-8 = 0

Avec le calcul ci-dessus, nous tabulons les valeurs résultantes. Les valeurs de y-coordonnée sont ajustées en fonction d'une variable de décision et nous ignorons simplement son calcul ici.

Pixel x y Variable de décision
(0, 0) 0 0 0
(- 1, 0) - 1 0 Une valeur
(- 2, -1) -2 -1 0
(- 3, -1) -3 < -1 Une valeur (- 4, -2)
-4 -2 0 (- 5, -2)
-5 > -2 Une valeur (- 6, -3) -6
-3 0 (- 7, -3) -7
-3 Une valeur (- 8, -4) -8
-4 0 Différences entre l'algorithme de DDA & Bresenham :

Calcul arithmétique: La DDA utilise des valeurs réelles dans ses calculs avec l'utilisation de points flottants. Les prochaines valeurs de pixel ou de point sont déterminées avec des équations différentielles

  • X incrément = dx / (float) pas

Y increment = dy / (float) pas

Ici, aucune constante fixe n'est utilisée mais dans les points fixes de l'algorithme de Bresenham sont utilisés dans les calculs arithmétiques. L'algorithme de Bresenham utilise l'arithmétique entière, contrairement à la DDA.

Type d'opération utilisé:

Le DDA résout les équations différentielles avec des opérations de multiplication et de division. Vous pouvez remarquer la même chose ici, X increment = dx / (float) étapes. L'algorithme de Bresenham utilise des opérations d'addition et de soustraction et vous pouvez remarquer la même chose ici dans son équation suivante de calcul de la valeur de pixel (x

  • a + 1

, y a + 1 ). L'arithmétique est plus simple chez Bresenham comparée à la DDA. Efficacité: Comme nous l'avons vu plus haut, l'algorithme de Bresenham utilise une arithmétique plus simple que le DDA et donne des résultats efficaces.

  • Vitesse:

Comme DDA utilise des nombres entiers flottants avec des opérations de multiplication et de division, il est relativement plus lent, alors que l'algorithme de Bresenham n'utilise que l'arithmétique entière et les additions et soustractions seules. Ceci réduit considérablement le temps pris pour ses calculs et donc plus rapide que le DDA.

  • Précision: Bien que DDA utilise des valeurs à virgule flottante, la précision de DDA n'est pas aussi bonne que celle de Bresenham. Une variété de facteurs affectent ce concept et, par conséquent, Bresenham est plus précis que le DDA.
  • Arrondi: Regardez simplement le calcul du PDD ici.
  • X increment = dx / (float) étapes Vous pouvez remarquer le 'float' et donc ne pas arrondir les valeurs alors que l'algorithme de Bresenham arrondit les valeurs à l'entier le plus proche. Par conséquent, les valeurs utilisées sont plus simples dans l'algorithme de Bresenham.

Qu'est-ce que ça dessine?

Le DDA est capable de dessiner des cercles et des courbes en dehors des lignes de dessin. L'algorithme de Bresenham est également capable de dessiner tous ceux mentionnés ci-dessus et sa précision est vraiment supérieure à celle de la DDA. De même, l'algorithme de Bresenham pourrait produire des courbes efficaces par rapport à celles produites par le DDA. Les deux algorithmes peuvent également dessiner des triangles et des polygones.

  • Qu'est-ce qui est cher?

Comme le DDA inclut également l'arrondi, il est plus coûteux que l'utilisation de l'algorithme de Bresenham.

  • Qu'est-ce qu'un algorithme optimisé?

De notre discussion ci-dessus, il est très clair que l'algorithme de Bresenham est optimisé en termes de vitesse, de coût et d'utilisation des opérations.

  • Regardons les différences sous une forme tabulaire.

S. Non

Différences dans

Algorithme Différentiel Numérique Algorithme de Bresenham 1. Pourquoi le nom?
Juste parce que c'était l'implémentation numérique des équations, elle a eu le nom. Il a été inventé par J. E. Bresenham en 1962 et d'où le nom. 2. Calculs
Cela implique des calculs plus stricts. Les calculs utilisés sont vraiment plus simples. 3. Types d'opérations utilisées
Il a utilisé des multiplications et des divisions. Les exemples d'équations différentielles utilisées ici sont les étapes Xincrement = dx / (float), Yincrement = dy / (float). Il utilise des additions et des soustractions. L'exemple de calcul ici peut être noté comme (x

a + 1

, y a + 1 ). 4. Valeurs de calcul arithmétique
Il utilise des valeurs à virgule flottante. Il utilise uniquement les valeurs entières. 5. Efficacité
L'arithmétique complexe entraîne une efficacité moindre. L'arithmétique simplifiée se traduit par plus d'efficacité. 6. Vitesse
L'utilisation des opérations de multiplication et de division prend beaucoup de temps pour ses processus de calcul. L'utilisation des opérations d'addition et de soustraction prend moins de temps que la DDA. 7. Précision
Il est moins précis. C'est plus précis. 8. Arrondi
Il utilise des valeurs réelles et n'élimine jamais les valeurs. Arrondit les valeurs aux valeurs entières les plus proches. 9. Capacité de dessin
Il est capable de tracer des lignes, des cercles et des courbes mais avec une précision moindre. Nous pouvons même dessiner des triangles et des polygones avec cet algorithme. Il est capable de dessiner des lignes, des cercles et des courbes avec une plus grande efficacité. Des triangles et des polygones peuvent également être dessinés avec cet algorithme. 10. Coût des calculs
Il est coûteux car il implique également l'arrondissement. L'utilisation de l'algorithme de Bresenham est moins coûteuse que la DDA. 11. Algorithme optimisé
Ce n'est pas un algorithme optimisé C'est un algorithme optimisé. Nous avons traité toutes les différences possibles entre le DDA et l'algorithme de Bresenham. Cela peut même sembler répétitif, mais il y a une raison valable de mentionner à nouveau ces points et vous viendrez à savoir quand vous le comprendrez complètement. Si vous pensez toujours qu'il existe une ambiguïté, merci de nous laisser un commentaire. Laissez-nous apprendre ensemble en partageant la bonne connaissance!