Skillnad mellan DDA och Bresenhams algoritm Skillnaden mellan

Anonim

Digital Differential Algorithm (DDA) och Bresenhams algoritm är de digitala linjerna ritningsalgoritmerna och används i datorgrafik för att rita bilder. Tidigare använde vi analytiska analysatorer för att beräkna bildpunkterna och därigenom blev linjeteckningar möjliga. Men dessa analysmetoder är inte lika exakta som de digitala metoderna som med användningen av dessa digitala algoritmer nu och som med alla fält har vi också uppfinnat högre kvalitetsmetoder i datorgrafik. Uppfinningen av dessa algoritmer är ett perfekt exempel. Innan vi fortsätter, låt oss titta på konceptet bakom dessa algoritmer. Även om det verkar som om vi inte diskuterar det är det viktigt att påpeka de grundläggande skillnaderna mellan de två. Om du är riktigt bekant med algoritmerna kan du hoppa till de faktiska skillnaderna som finns i slutet av den här sidan.

Vad är digital differentialalgoritm (DDA)?

En DDA används mest för att dra rader i datorgrafik och använder reella värden medan man förutser nästa pixelvärde. Låt oss anta det ursprungliga pixelvärdet som (X0, Y0) (X0, Y0) och destinationspunkten som (X1, Y1) (X1, Y1). Vi kommer att lära oss att beräkna destinationens pixelvärden från det kända pixelvärdet (X0, Y0) (X0, Y0) som nedan.

  • Hur beräknar du referensvärdet med DDA?

Steg 1: Här har vi ingången (X0, Y0) (X0, Y0) och vi bör identifiera om linjen går parallellt med x-axeln eller y-axeln. För att hitta det, låt oss nu beräkna skillnaden mellan initialvärdena och destinationens pixelvärden.

dx = X1 - X0

dy = Y1 - Y0

Steg 2: Nu har vi identifierat skillnaden och vi borde dra linjen längs x-axeln om 'dx' är noll annars borde vi rita linjen parallellt med y-axeln. Här är den faktiska beräkningen vad gäller datorspråket.

om (absolut (dx)> absolut (dy))

Steg = absolut (dx);

annat

Steg = absolut (dy);

Steg 3: Nu är det dags att identifiera den faktiska "x" -koordinaten eller "y" -koordinaterna pixelvärdena för att rita linjen.

X inkrement = dx / (float) steg;

Y steg = dy / (float) steg;

Steg 4: Detta måste beräknas tills vi når destinationens pixel. DDA-algoritmen avrundar pixelvärdet till det närmaste heltalet medan beräkningen görs. Här är kodprovet av vad vi har diskuterat nu.

För (int v = 0; v

{

x = x + X inkrement;

y = y + Y ökning;

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

}

Vi är klara med att rita linjen med hjälp av DDA och låt oss gå vidare till Bresenhams nu!

Vad är Bresenhams algoritm?

Det är också en digital linje teckning algoritm och uppfanns av Bresenham år 1962 och det är därför det har samma namn. Denna algoritm är mer exakt och den använde subtraktion och tillägg för att beräkna pixelvärdet medan du ritar linjen. Noggrannheten i Bresenhams algoritm är tillförlitlig samtidigt som man ritar kurvor och cirklar. Låt oss se hur denna algoritm fungerar.

Steg 1: Bresenhams algoritmer antar den ursprungliga pixelkoordinaten som (x a + 1 , a ).

Steg 2: Beräknar automatiskt det nästa pixelvärdet som (x a + 1 , y a + 1 ), här är 'a' det inkrementella värdet och algoritmen beräknar det genom att lägga till eller subtrahera ekvationerna som den hade bildat.

Denna algoritm beräknar exakta värden utan avrundning och ser också lättare ut!

  • Numeriskt exempel på Bresenhams algoritm:

Låt oss nu överväga punkterna (0, 0) och (-8, -4) och låt oss rita en linje mellan dessa punkter med Bresenhams algoritm.

Givad data, (x1, y1) = (0, 0) och (x2, y2) = (-8, -4).

Låt oss nu beräkna differentialvärdena enligt nedan.

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

Därför är inkrementvärdet för x = Δx / x2 = 8 / -8 = -1.

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

Därför är inkrementet för y = Δy / y2 = 4 / -4 = -1.

Beslutsvariabel = e = 2 * (Δy) - (xx)

Därför, e = 2 * (4) - (8) = 8-8 = 0

Med ovanstående beräkning, låt vi tabulera de resulterande värdena. Värdena för y-koordinaten justeras baserat på en beslutsvariabel och vi ignorerar bara dess beräkning här.

Pixel x y Beslutsvariabel
(0, 0) 0 0 0
(- 1, 0) - 1 0 Ett värde
(- 2, -1) -2 -1 0
(- 3, -1) -3 < -1 Ett värde (- 4, -2)
-4 -2 0 (- 5, -2)
-5 > -2 Ett värde (- 6, -3) -6
-3 0 (- 7, -3) -7
-3 Ett värde (- 8, -4) -8
-4 0 Skillnader mellan DDA & Bresenhams algoritm :

Aritmetisk beräkning: DDA använder reella värden i sina beräkningar med användningen av flytande punkter. Nästa pixel- eller punktvärden bestäms med differentialekvationer

  • X inkrement = dx / (float) steg

Y inkrement = dy / (float) steg

Här används inga fasta konstanter men i Bresenhams algoritm fixade punkter används i aritmetiska beräkningar. Bresenhams algoritm använder heltal aritmetik, till skillnad från DDA.

Typ av operation som används:

DDA löser differentialekvationerna med multiplikations- och delningsoperationer. Du kan märka detsamma här, X increment = dx / (float) steg. Bresenhams algoritm använder tilläggs- och subtraktionsoperationer och du kan märka samma sak här i sin nästa pixelvärdesberäkningsekvation (x

  • a + 1

, y a + 1 ). Aritmetiken är enklare i Bresenham jämfört med DDA. Effektivitet: Som vi tidigare diskuterat använder Bresenhams algoritm enklare aritmetik än DDA och det resulterar i effektiva resultat.

  • Hastighet:

Eftersom DDA använder flytande punkts heltal tillsammans med multiplikations- och delningsoperationer är det relativt långsammare medan Bresenhams algoritm använder helt heltalsräkning tillsammans med tillägg och subtraheringar ensamma. Detta minskar avsevärt tiden för dess beräkningar och därmed snabbare än DDA.

  • Noggrannhet: Även om DDA använder flytpunktvärden är inte DDA-noggrannheten lika bra som Bresenhams. En mängd faktorer påverkar detta koncept och därför är Bresenhams mer exakt än DDA.
  • Avrundning: Se bara på beräkningen av DDA här.
  • X inkrement = dx / (float) steg Du kan märka "float" och därför runda inte värdena medan Bresenhams algoritm avrundar värdena till närmsta heltal. Därför är de använda värdena enklare i Bresenhams algoritm.

Vad ritar det?

DDA kan dra cirklar och kurvor bortsett från ritningslinjer. Bresenhams algoritm kan också dra alla de som nämnts ovan och dess noggrannhet är verkligen högre än för DDA. På samma sätt kan Bresenhams algoritm komma med effektiva kurvor än det som produceras av DDA. Båda algoritmerna kan också rita trianglar och polygoner.

  • Vilket är dyrt?

Eftersom DDA inkluderar avrundning så är det dyrt än användningen av Bresenhams algoritm.

  • Vilken är en optimerad algoritm?

Av ovanstående diskussion är det mycket tydligt att Bresenhams algoritm är en optimerad fråga om hastighet, kostnad och användning av operationer.

  • Låt oss titta på skillnaderna i en tabellform.

S. Ingen

Skillnader i

Digital differentialalgoritm Bresenhams algoritm 1. Varför namnet?
Bara för att det var den digitala implementeringen av ekvationerna, har den fått namnet. Det uppfanns av J. E. Bresenham år 1962 och därmed namnet. 2. Beräkningar
Det innebär hårdare beräkningar. Beräkningarna som används är mycket enklare. 3. Typ av operationer som används
Det användes multiplikationer och divisioner. De provskillnadsekvationer som används här är Xincrement = dx / (float) steg, Yincrement = dy / (float) steg. Den använder tillägg och subtraheringar. Provberäkningen här kan betecknas som (x

a + 1

, y a + 1 ). 4. Aritmetiska beräkningsvärden
Den använder flytande punktvärden. Den använder bara heltalsvärdena. 5. Effektivitet
Komplex aritmetik resulterar i mindre effektivitet. Enklare aritmetik resulterar i effektivitet. 6. Hastighet
Användning av multiplikationer och delningsoperationer tar mycket tid för sina beräkningsprocesser. Användning av tillsats- och subtraktionsoperationer tar mindre tid än DDA. 7. Noggrannhet
Det är mindre i noggrannhet. Det är mer exakt. 8. Avrundning
Den använder reella värden och avrunder aldrig värdena. Det avrundar värdena till närmaste heltalvärden. 9. Ritningsförmåga
Den kan rita linjer, cirklar och kurvor men med mindre noggrannhet. Vi kan till och med rita trianglar och polygoner med denna algoritm. Den kan rita linjer, cirklar och kurvor med större effektivitet. Trianglar och polygoner är också möjliga att dras med denna algoritm. 10. Kostnad för beräkningar
Det är dyrt eftersom det innebär att avrunda också. Användningen av Bresenhams algoritm är billigare än DDA. 11. Optimerad algoritm
Det är inte en optimerad algoritm Det är en optimerad algoritm. Vi har behandlat alla möjliga skillnader mellan DDA och Bresenhams algoritm. Det kan till och med tyckas vara repetitivt men det finns några giltiga skäl att nämna dessa poäng igen och du kommer att få veta när du förstår det helt. Om du fortfarande känner att det finns en tvetydighet, vänligen lämna oss en kommentar. Låt oss lära oss tillsammans genom att dela rätt kunskap!