Forskel mellem DDA og Bresenhams algoritme Forskellen mellem
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! 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! 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. 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 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: Nøjagtighed: 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? Hvilken er en optimeret algoritme? Lad os se på forskellene i en tabelform. Forskelle i Digital Differential AlgoritmeHvad 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 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