Diferența dintre DDA și algoritmul lui Bresenham Diferența dintre

Anonim

Algoritmul diferențial digital algoritmul lui Bresenhams sunt algoritmii de desenare a liniilor digitale și sunt folosiți în grafica computerizată pentru a desena imagini. Anterior, am folosit analizoare analitice pentru a calcula pixelii și, prin urmare, au fost posibile desene cu linii. Dar aceste metode analitice nu sunt la fel de exacte ca metodele digitale care, cu utilizarea acestor algoritmi digitali acum și ca și în cazul fiecărui domeniu, am inventat metode de calitate superioară și în grafica computerizată. Invenția acestor algoritmi este un exemplu perfect. Înainte de a continua, să ne uităm la conceptul din spatele acestor algoritmi. Deși pare a fi în afara discuției noastre, este esențial să subliniem diferențele de bază dintre cele două. Dacă sunteți cu adevărat familiarizați cu algoritmii, puteți să treceți la diferențele reale aflate la sfârșitul acestei pagini.

Ce este algoritmul diferențial digital (DDA)?

O DDA este cea mai mare parte folosită pentru a desena linii în grafica computerizată și utilizează valori reale în timp ce prezice valorile următoare ale pixelilor. Să presupunem valoarea inițială a pixelilor ca (X0, Y0) (X0, Y0) și pixelul de destinație ca (X1, Y1) (X1, Y1). Vom învăța cum să calculam valorile pixelilor de destinație de la valoarea pixelului cunoscut (X0, Y0) (X0, Y0) după cum urmează.

  • Cum se calculează valoarea punctului de destinație utilizând DDA?
În acest caz, avem intrarea (X0, Y0) (X0, Y0) și ar trebui să identificăm dacă linia se execută paralel cu axa x sau cu axa y. Pentru a găsi acest lucru, să calculam acum diferența dintre valorile inițiale și cele de destinație a pixelilor.

Dx = X1 - X0 dy = Y1 - Y0

Etapa 2:

Acum am identificat diferența și ar trebui să trasăm linia de-a lungul axei x dacă ' în caz contrar, ar trebui să trasăm linia paralelă cu axa y. Iată calculul real în ceea ce privește limbajul calculatorului.

- dacă (absolută (dx)> absolută (dy))

Pași = absolută (dx);

altceva

Pași = absolut (dy);

Pasul 3:

Acum este timpul să identificăm coordonatele reale "x" sau valorile pixelilor de coordonate "y" pentru a desena linia.

Pasul X increment = dx / (float); increment Y = etape dy / (float);

Pasul 4:

Acest lucru trebuie calculat până ajungem la pixelul de destinație. Algoritmul ADD rotunjește valoarea pixelului la cea mai apropiată valoare intregă în timp ce face calculul. Iată exemplul de cod al celor discutate acum.

Pentru (int v = 0; v {

x = x + X increment;

y = y + incrementarea Y;

putpixel (Runda (x), Runda (y));

}

Am terminat cu desenarea liniei folosind DDA și să ne îndreptăm spre Bresenham's now!

Ce este Algoritmul lui Bresenham?

Este, de asemenea, un algoritm de scriere a liniilor digitale și a fost inventat de Bresenham în anul 1962 și de aceea are același nume. Acest algoritm este mai precis și a folosit scăderea și adăugarea la calculul valorii pixelilor în timpul tragerii liniei. Precizia algoritmului lui Bresenham este fiabilă în timp ce desenează curbele și cercurile. Să arătăm cum funcționează acest algoritm.

Pasul 1:

Algoritmii lui Bresenham își asumă coordonatele pixelului inițial ca (x

a + 1 , y a ). Pasul 2: Se calculează automat următoarea valoare a pixelilor ca (x

a + 1 , y a + 1 iar algoritmul o calculează prin adăugarea sau scăderea ecuațiilor pe care le-a format. Acest algoritm calculează valori corecte fără a se rotunji și arată mai ușor! Exemplu numeric al algoritmului lui Bresenham:

Să luăm acum în considerare punctele (0, 0) și (-8, -4) și să trasăm o linie între aceste puncte folosind algoritmul lui Bresenham.

  • Date date, (x1, y1) = (0, 0) și (x2, y2) = (-8, -4).

Să calculăm valorile diferențiale după cum urmează.

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

Prin urmare, valoarea incrementală pentru x = Δx / x2 = 8 / -8 = -1.

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

Prin urmare, valoarea incrementală pentru y = Δy / y2 = 4 / -4 = -1.

Variabila de decizie = e = 2 * (Δy) - (Δx)

Prin urmare, e = 2 * (4) - (8) = 8-8 = 0

ne tabulați valorile rezultate. Valorile coordonatei y sunt ajustate pe baza unei variabile de decizie și doar ignorăm calculul acesteia aici.

Pixel

x

y Variabila de decizie (0, 0) 0
1 0 O valoare (- 2, -1)
-2 -1 O valoare (- 4, -2)
-4 -2 0 >
(- 6, -3) -6 -3
0 -3 Valoare (- 8, -4)
-8 -4 0
ADD utilizează valori reale în calculele sale cu utilizarea punctelor flotante. Următoarele valori ale pixelilor sau ale punctelor sunt determinate cu ecuații diferențiale Pasii X increment = dx / (float) Pasul Y increment = dy / (float) Aici nu se utilizează constante fixe ci puncte fixe ale algoritmului lui Bresenham sunt utilizate în calculele aritmetice. Algoritmul lui Bresenham folosește aritmetica Integer, spre deosebire de DDA.
Tipul operațiunii utilizate: DDA rezolvă ecuațiile diferențiale cu operații de multiplicare și divizare. Puteti observa acelasi lucru aici, pasi X increment = dx / (float). Algoritmul lui Bresenham folosește operații de adăugare și scădere și puteți observa același lucru în următoarea ecuație de calcul al valorii pixelilor (x a + 1 , y
a + 1 ). Aritmetica este mai simplă în cazul lui Bresenham în comparație cu DDA. Eficiența: Așa cum am discutat mai devreme, algoritmul lui Bresenham folosește aritmetică mai simplă decât DDA și are ca rezultat rezultate eficiente.

Viteza: Pe măsură ce DDA utilizează numerele cu virgulă mobilă împreună cu operațiile de multiplicare și diviziune, este relativ mai lent, în timp ce algoritmul lui Bresenham folosește numai aritmetică întregă, împreună cu adăugiri și subtracții. Acest lucru reduce în mod considerabil timpul necesar pentru calculele sale și, prin urmare, este mai rapid decât DDA.

  • Precizie:

Deși DDA utilizează valori în virgulă mobilă, precizia DDA nu este la fel de bună ca cea a lui Bresenham. O varietate de factori afectează acest concept și, prin urmare, Bresenham's este mai precis decât DDA.

Închidere:

Uită-te la calculul DDA aici.

Pasul X = dx / (float)

  • Ați observat "float" și, prin urmare, nu rotunjește valorile, în timp ce algoritmul lui Bresenham rotunjește valorile la cel mai apropiat număr întreg. De aceea, valorile folosite sunt mai simple în algoritmul lui Bresenham.

Ce trage? DDA este capabil să atragă cercuri și curbe în afara liniilor de desen. Algoritmul lui Bresenham este, de asemenea, capabil să atragă toate cele menționate mai sus și precizia sa este cu adevărat mai mare decât cea a DDA. În mod similar, algoritmul lui Bresenham ar putea să vină cu curbe eficiente decât cele produse de ADD. Ambii algoritmi pot desena triunghiuri și poligoane. Care este scump? Pe măsură ce DDA include și rotunjirea, este mai scump decât utilizarea algoritmului lui Bresenham. Care este un algoritm optimizat?

  • Din discuția de mai sus, este foarte clar că algoritmul lui Bresenham este unul optimizat în ceea ce privește viteza, costul și utilizarea operațiunilor.

Să analizăm diferențele dintr-o formă tabelară.

  • S. Nu Diferențe în
  • Algoritmul diferențial digital Algoritmul lui Bresenham
  • 1. De ce numele?

Doar pentru că a fost implementarea digitală a ecuațiilor, ea a primit numele.

A fost inventat de către J. E. Bresenham în anul 1962 și, prin urmare, numele.

  • 2.

Computări

  • Aceasta implică calcule mai dure.

Calculele utilizate sunt cu atât mai simple.

  • 3.

Tipuri de operațiuni utilizate

A folosit multiplicări și diviziuni. Exemplele de ecuații diferențiale utilizate aici sunt pașii Xincrement = dx / (float), pașii

Yincrement = dy / (float). Folosește adăugiri și subtracții. Calculul eșantionului aici poate fi notat ca (x a + 1 , y
a + 1 ). 4. Valori de calcul aritmetice
Utilizează valori în virgulă mobilă. Utilizează doar valorile întregi. 5. Eficiența
Rezultatele aritmetice complexe au o eficiență mai mică. Aritmetica mai simplă rezultă într-o mai mare eficiență. 6.

Viteza

Utilizarea multiplicărilor și operațiunilor de divizare necesită mult timp pentru procesele sale de calcul. Utilizarea operațiunilor de adăugare și scădere durează mai puțin decât DDA. 7. Precizie Este mai mică în precizie.
Este mai precis. 8. Se rotunjește Utilizează valori reale și niciodată nu rotunjește valorile.
Se rotunjește valorile la cele mai apropiate valori întregi. 9. Capacitate de desen Este capabil să deseneze linii, cercuri și curbe, dar cu o precizie mai mică. Putem chiar desena triunghiuri și poligoane cu acest algoritm.
Este capabil să deseneze linii, cercuri și curbe cu o eficiență mai mare. Triunghiurile și poligoanele pot fi de asemenea trase cu acest algoritm. 10. Costul calculelor Este scump deoarece implică și rotunjirea.
Utilizarea algoritmului lui Bresenham este mai ieftină decât DDA. 11. Algoritm optimizat Nu este un algoritm optimizat
Este un algoritm optimizat. Ne-am ocupat de orice diferență posibilă dintre ADD și algoritmul lui Bresenham. S-ar putea să pară chiar repetitivă, dar există un motiv întemeiat pentru a menționa din nou acele puncte și ați ajunge să știți când îl înțelegeți complet. Dacă tot credeți că există o ambiguitate, vă rugăm să ne lăsați un comentariu. Să învățăm împreună prin împărtășirea cunoștințelor corecte!