Forskel mellem DDA og Bresenhams algoritme Forskellen mellem

Anonim

Digital Differential Algorithm (DDA) og Bresenhams algoritme er de digitale linjer tegningsalgoritmer og bruges i computer grafik til at tegne billeder. Tidligere brugte vi analytiske analysatorer til at beregne pixlerne og derved blev linjetegninger muliggjort. Men disse analysemetoder er ikke lige så præcise som de digitale metoder, der med anvendelsen af ​​disse digitale algoritmer nu og som med alle felter, har vi også opfundet højere kvalitetsmetoder i computergrafik. Opfindelsen af ​​disse algoritmer er et perfekt eksempel. Før vi går videre, lad os se på konceptet bag disse algoritmer. Selvom det ikke synes at være omfattet af vores diskussion, er det vigtigt at påpege de grundlæggende forskelle mellem de to. Hvis du er virkelig bekendt med algoritmerne, kan du hoppe til de faktiske forskelle placeret i slutningen af ​​denne side.

Hvad er digital differentialalgoritme (DDA)?

En DDA bruges mest til at tegne linjer i computergrafik og bruger reelle værdier, mens man forudsiger de næste pixelværdier. Lad os antage den indledende pixelværdi som (X0, Y0) (X0, Y0) og destination pixel som (X1, Y1) (X1, Y1). Vi vil lære at beregne destinations pixelværdierne fra den kendte pixelværdi (X0, Y0) (X0, Y0) som nedenfor.

  • Sådan beregnes destinationspointværdien ved hjælp af DDA?

Trin 1: Her har vi indgangen (X0, Y0) (X0, Y0), og vi skal identificere, om linjen løber parallelt med x-aksen eller y-aksen. For at finde det, lad os nu beregne forskellen mellem de indledende og destination pixel værdier.

Dx = X1 - X0

dy = Y1 - Y0

Trin 2: Nu har vi identificeret forskellen, og vi bør tegne linjen langs x-aksen, hvis 'dx' er nul Ellers skal vi tegne linjen parallelt med y-aksen. Her er den faktiske beregning i forhold til computersproget.

hvis (absolut (dx)> absolut (dy))

trin = absolut (dx);

ellers

Trin = absolut (dy);

Trin 3: Nu er det tid til at identificere den faktiske 'x' koordinat eller 'y'-koordinaterne pixelværdier for at tegne linjen.

X trin = dx / (float) trin;

Y increment = dy / (float) trin;

Trin 4: Dette skal beregnes, indtil vi når destination pixel. DDA-algoritmen afrunder pixelværdien til nærmeste heltalsværdi, mens beregningen foretages. Her er kodeeksemplet af det, vi har diskuteret nu.

For (int v = 0; v

{

x = x + X inkrement;

y = y + Y stigning;

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

}

Vi er færdige med at tegne linjen ved hjælp af DDA og lad os gå videre til Bresenhams nu!

Hvad er Bresenhams algoritme?

Det er også en digital line drawing algoritme og blev opfundet af Bresenham i år 1962 og derfor har det samme navn. Denne algoritme er mere præcis, og den anvendte subtraktion og tilføjelse til beregning af pixelværdien under tegning af linjen. Nøjagtigheden af ​​Bresenhams algoritme er pålidelig samtidig med tegningskurver og cirkler. Lad os se, hvordan denne algoritme fungerer.

Trin 1: Bresenhams algoritmer antager den indledende pixelkoordinat som (x a + 1 , y a ).

Trin 2: Beregner automatisk den næste pixelværdi som (x a + 1 , y a + 1 ). Her er 'a' den trinvise værdi og algoritmen beregner det ved at tilføje eller subtrahere de ligninger, den havde dannet.

Denne algoritme beregner nøjagtige værdier uden afrunding og ser også lettere ud!

  • Numerisk eksempel på Bresenhams algoritme:

Lad os nu overveje punkterne (0, 0) og (-8, -4) og lad os tegne en linje mellem disse punkter ved hjælp af Bresenhams algoritme.

Givet data, (x1, y1) = (0, 0) og (x2, y2) = (-8, -4).

Lad os nu beregne differentieringsværdierne som nedenfor.

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

Derfor er inkrementværdien for x = Δx / x2 = 8 / -8 = -1.

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

Derfor er inkrementværdien for y = Δy / y2 = 4 / -4 = -1.

Afgørelsesvariabel = e = 2 * (Δy) - (xx)

Derfor e = 2 * (4) - (8) = 8-8 = 0

Med ovenstående beregning os tabulere de resulterende værdier. Værdierne for y-koordinaten justeres baseret på en beslutningsvariabel, og vi ignorerer bare dens beregning her.

Pixel x y Beslutningsvariabel
(0, 0) 0 0 0
(- 1, 0) - 1 0 (- 2, -1)
-2 -1 0 (- 3, -1)
-3 < -1 En værdi (- 4, -2) -4
-2 0 (- 5, -2) -5 > -2
En værdi (- 6, -3) -6 -3
0 (- 7, -3) -7 -3
En værdi (- 8, -4) -8 -4
0 Forskelle mellem DDA & Bresenhams algoritme : Aritmetisk beregning:

DDA bruger reelle værdier i sine beregninger med brugen af ​​flydende punkter. De næste pixel- eller punktværdier bestemmes med differentialekvationer X trin = dx / (float) trin

  • Y increment = dy / (float) trin

Her anvendes ingen faste konstanter, men i Bresenhams algoritme fikserede punkter bruges i aritmetiske beregninger. Bresenhams algoritme anvender Integer aritmetik, i modsætning til DDA.

Anvendt type:

DDA løser differentialekvationerne med multiplikation og division operationer. Du kan se det samme her, X trin = dx / (float) trin. Bresenhams algoritme bruger tilføjelses- og subtraktionsoperationer, og du kan se det samme her i sin næste beregningsligning for pixelværdi (x

a + 1

  • , y

a + 1 ). Aritmetikken er enklere i Bresenhams sammenlignet med DDA. Effektivitet: Som vi tidligere har diskuteret bruger Bresenhams algoritme enklere aritmetik end DDA, og det resulterer i effektive resultater. Hastighed:

  • Da DDA bruger floating point-tal sammen med multiplikations- og delingsoperationer, er det forholdsvis langsommere, mens Bresenhams algoritme kun bruger heltals aritmetik sammen med tilføjelser og subtraktioner alene. Dette reducerer den tid, der er taget for dens beregninger, og dermed hurtigere end DDA.

Nøjagtighed:

  • Selvom DDA bruger flydende punktværdier, er nøjagtigheden af ​​DDA ikke så bedre som Bresenhams. En række faktorer påvirker dette koncept, og derfor er Bresenhams mere præcise end DDA. Afrunding:
  • Se bare på beregningen af ​​DDA her. X trin = dx / (float) trin
  • Du kan bemærke 'float'en og derfor afrundes ikke værdierne, mens Bresenhams algoritme afrunder værdierne til nærmeste heltal. Derfor er de anvendte værdier enklere i Bresenhams algoritme. Hvad tegner det?

DDA er i stand til at tegne cirkler og kurver bortset fra tegningslinjer. Bresenhams algoritme er også i stand til at tegne alle de ovennævnte, og dens nøjagtighed er virkelig højere end den for DDA. På samme måde kan Bresenhams algoritme komme op med effektive kurver end den, der produceres af DDA. Begge algoritmer kan også tegne trekanter og polygoner.

Hvilket er dyrt?

  • Da DDA også omfatter afrunding, er det dyrt end brugen af ​​Bresenhams algoritme.

Hvilken er en optimeret algoritme?

  • Fra ovenstående diskussion er det meget klart, at Bresenhams algoritme er en optimeret, hvad angår hastighed, omkostninger og brug af operationer.

Lad os se på forskellene i en tabelform.

  • S. Ingen

Forskelle i

Digital Differential Algoritme

Bresenhams Algoritme 1. Hvorfor navnet? Bare fordi det var den digitale implementering af ligningerne, har den fået navnet.
Det blev opfundet af J. E. Bresenham i år 1962 og dermed navnet. 2. Computations Det indebærer hårdere beregninger.
De anvendte beregninger er meget enklere. 3. Typer af operationer brugt Det brugte multiplikationer og divisioner. De stikprøve-differentialekvationer, der anvendes her, er Xincrement = dx / (float) trin,
Yincrement = dy / (float) trin. Det bruger tilføjelser og subtraktioner. Prøveberegningen her kan betegnes som (x a + 1, y

a + 1 ). 4. Aritmetiske beregningsværdier Den bruger flydende punktværdier.
Det bruger kun heltalværdierne. 5. Effektivitet Kompleks aritmetik resulterer i mindre effektivitet.
Enklere aritmetik resulterer i mere effektivitet. 6. Hastighed Anvendelse af multiplikationer og delingsoperationer tager meget tid for sine beregningsprocesser.
Anvendelse af additions- og subtraktionsoperationer tager mindre tid end DDA. 7. Nøjagtighed Det er mindre i nøjagtighed.
Det er mere præcist. 8. Afrunding Den bruger reelle værdier og afrunder aldrig værdierne.
Det afrunder værdierne til nærmeste heltalsværdier. 9. Tegningsevne Den er i stand til at tegne linjer, cirkler og kurver, men med mindre nøjagtighed. Vi kan endda tegne trekanter og polygoner med denne algoritme.
Det er i stand til at tegne linjer, cirkler og kurver med større effektivitet. Triangler og polygoner er også mulige at tegne med denne algoritme. 10. Udgifter til beregninger Det er dyrt, da det også medfører afrunding.
Brugen af ​​Bresenhams algoritme er billigere end DDA. 11. Optimeret algoritme Det er ikke en optimeret algoritme
Det er en optimeret algoritme. Vi har behandlet enhver mulig forskel mellem DDA og Bresenhams algoritme. Det kan endda synes at være gentagne, men der er en gyldig grund til at nævne disse punkter igen, og du vil komme til at vide, når du forstår det helt. Hvis du stadig føler, at der er en tvetydighed, bedes du give os en kommentar. Lad os lære sammen ved at dele den rette viden!