Différence entre l'ADD et l'algorithme de Bresenham Différence entre
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! 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! 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. 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 , 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. 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. 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. Comme le DDA inclut également l'arrondi, il est plus coûteux que l'utilisation de l'algorithme de Bresenham. 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. S. Non Différences dansQu'est-ce que l'algorithme de Bresenham?
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