Forskjell mellom DDA og Bresenhams algoritme Forskjellen mellom
Den digitale differensialalgoritmen (DDA) og Bresenhams algoritme er de digitale linjene tegningsalgoritmer og brukes i datagrafikk for å tegne bilder. Tidligere brukte vi analytiske analysatorer til å beregne pikslene og derved ble det muliggjort linjetegninger. Men disse analysemetodene er ikke like nøyaktige som de digitale metodene som ved bruk av disse digitale algoritmer nå og som med alle felt, har vi også oppfunnet høyere kvalitetsmetoder i datagrafikk. Oppfinnelsen av disse algoritmer er et perfekt eksempel. Før vi går videre, la oss se på konseptet bak disse algoritmene. Selv om det virker ut av omfanget av diskusjonen vår, er det viktig å påpeke de grunnleggende forskjellene mellom de to. Hvis du er veldig kjent med algoritmer, kan du hoppe til de faktiske forskjellene som ligger på slutten av denne siden.
Hva er digital differensialalgoritme (DDA)?
En DDA brukes for det meste til å tegne linjer i datagrafikk og bruker ekte verdier mens de forutsier de neste pixelverdiene. La oss anta den opprinnelige pikselverdien som (X0, Y0) (X0, Y0) og destinasjonspikselet som (X1, Y1) (X1, Y1). Vi lærer å beregne målpunktspikselverdiene fra den kjente pikselverdien (X0, Y0) (X0, Y0) som nedenfor.
- Hvordan beregne du destinasjonspoengverdien ved hjelp av DDA?
Trinn 1: Her har vi inngangen (X0, Y0) (X0, Y0) og vi bør identifisere om linjen går parallelt med x-aksen eller y-aksen. For å finne det, la oss nå beregne forskjellen mellom initialverdien og destinasjonspikselverdiene.
Dx = X1 - X0
dy = Y1 - Y0
Trinn 2: Nå har vi identifisert forskjellen, og vi bør tegne linjen langs x-aksen hvis 'dx' er null Ellers bør vi tegne linjen parallelt med y-aksen. Her er den faktiske beregningen når det gjelder dataspråket.
hvis (absolutt (dx)> absolutt (dy))
Trinn = absolutt (dx);
else
Trinn = absolutt (dy);
Trinn 3: Nå er det på tide å identifisere den faktiske 'x'-koordinaten eller' y'-koordinatene pikselverdiene for å tegne linjen.
X inkrement = dx / (float) trinn;
Y trinn = dy / (float) trinn;
Trinn 4: Dette må beregnes til vi når destinasjonspikselet. DDA-algoritmen runder av pikselverdien til nærmeste heltallverd mens beregningen utføres. Her er kodesammenstillingen av det vi har diskutert nå.
For (int v = 0; v
{ x = x + X trinn; y = y + Y økning; putpixel (Round (x), Round (y)); } Vi er ferdige med å tegne linjen ved hjelp av DDA og la oss gå videre til Bresenhams nå! Det er også en digital linje tegningsalgoritme og ble oppfunnet av Bresenham i år 1962, og det er derfor det har samme navn. Denne algoritmen er mer nøyaktig og den brukte subtraksjon og tillegg til beregning av pikselverdien mens du tegnet linjen. Nøyaktigheten av Bresenhams algoritme er pålitelig mens tegningskurver og -kretser også. La oss se hvordan denne algoritmen fungerer. Trinn 1: Bresenhams algoritmer antar den opprinnelige pikselkoordinaten som (x a + 1 , y a ). Trinn 2: Beregner automatisk neste pikselverdien som (x a + 1 , y a + 1 ), Her er 'a' den inkrementelle verdien og algoritmen beregner det ved å legge til eller subtrahere likningene som den hadde dannet. Denne algoritmen beregner nøyaktige verdier uten avrunding og ser også lettere ut! La oss nå vurdere poengene (0, 0) og (-8, -4) og la oss tegne en linje mellom disse punktene ved hjelp av Bresenhams algoritme. Gitte data, (x1, y1) = (0, 0) og (x2, y2) = (-8, -4). La oss nå beregne differensverdiene som nedenfor. Δx = x2-x1 = -8-0 = 8 Derfor er inkrementverdien for x = Δx / x2 = 8 / -8 = -1. Δy = y2-y1 = -4-0 = 4 Derfor er inkrementverdien for y = Δy / y2 = 4 / -4 = -1. Avgjørelsesvariabel = e = 2 * (Δy) - (xx) Derfor, e = 2 * (4) - (8) = 8-8 = 0 Med ovennevnte beregning, la oss tabulere de resulterende verdiene. Verdiene av y-koordinaten justeres basert på en beslutningsvariabel, og vi ignorerer bare beregningen her. Her brukes ingen faste konstanter, men i Bresenhams algoritme faste punkter brukes i aritmetiske beregninger. Bresenhams algoritme bruker helhetlig aritmetikk, i motsetning til DDA. Type operasjon brukt: DDA løser differensialligningene med multiplikasjon og delingsoperasjoner. Du kan legge merke til det samme her, X trinn = dx / (float) trinn. Bresenhams algoritme bruker tilleggs- og subtraksjonsoperasjoner, og du kan se det samme her i sin neste pixelverdiberegningsligning (x a + 1 a + 1 ). Aritmetikken er enklere i Bresenhams sammenlignet med DDA. Effektivitet: Som vi har diskutert tidligere, bruker Bresenhams algoritme enklere aritmetikk enn DDA, og det resulterer i effektive resultater. Hastighet: Nøyaktighet: DDA er i stand til å tegne sirkler og kurver bortsett fra tegningslinjer. Bresenhams algoritme er også i stand til å tegne alle de som er nevnt ovenfor, og dens nøyaktighet er virkelig høyere enn for DDA. På samme måte kunne Bresenhams algoritme komme opp med effektive kurver enn det som ble produsert av DDA. Begge algoritmene kan også tegne trekanter og polygoner. Hvilken er dyr? Hvilken er en optimalisert algoritme? La oss se på forskjellene i en tabellform. Forskjeller i Digital differensialalgoritmeHva er Bresenhams algoritme?
Pixel
x
y
Beslutningsvariabel
(0, 0)
0
0
0
(- 1, 0)
- 1
0
(- 2, -1)
-2
-1
0
(- 3, -1)
-3 < -1
En verdi
(- 4, -2)
-4
-2
0
(- 5, -2)
-5 > -2
En verdi
(- 6, -3)
-6
-3
0
(- 7, -3)
-7
-3
En verdi
(- 8, -4)
-8
-4
0
Forskjeller mellom DDA & Bresenhams algoritme
:
Aritmetisk beregning:
DDA bruker virkelige verdier i sine beregninger med bruk av flytende poeng. De neste piksel- eller punktverdiene bestemmes med differensialligninger X trinn = dx / (float) trinn