Uvod u algoritam crtanja linija
U ovom ćemo članku vidjeti strukturu algoritma crtanja linija. Crtanje linija na računalu znači da se ekran računala dijeli na dva dijela redaka i stupaca. Ti se redovi i stupci nazivaju i pikseli. U slučaju da moramo na računalu nacrtati crtu, prvo moramo znati na kojim se pikselima trebaju nalaziti. Crta je dio ravne linije koja se proteže u suprotnom smjeru u nedogled. Linija je definirana s dvije Krajnje točke. Njegova gustoća treba biti odvojena od duljine crte.
Formula za presijecanje linija nagiba: Y = mx + b
U ovoj je formuli m linija nagiba, a b presjek y u liniji. U pozicijama (x1, y1) i (x2, y2) dvije su krajnje točke određene za linijski segment.
Vrijednost nagiba m i b može se odrediti u skladu s tim
• m = y2 - y1 / x2 - x1
• tj. M = Δy / Δx
Primjer:
Krajnje krajnje točke su (0, 0) i (4, 12). Nacrtajte rezultat za izračunavanje svake vrijednosti y kao x koraka od 0 do 4.
Riješenje:
Dakle, imamo formulu jednadžbe pravca: Y = mx + b
• m = y2 - y1 / x2 - x1
• m = 12 - 0/4 - 0
• m = 3
Y presretanje b se zatim pronalazi povezivanjem y1 i x1 s y = 3 x + b formulom, 0 = 3 (0) + b. Stoga je b = 0, pa je y = 3x linija.
Cilj je odrediti sljedeću lokaciju x, y što je brže moguće od prethodne.
Vrste algoritama crtanja linija
Ispod su navedene vrste algoritma:
1. Digitalni diferencijalni algoritam (DDA)
Metoda inkrementalne pretvorbe je algoritam DDA, a također smo je nazvali i digitalni diferencijalni algoritam (DDA). Ovaj pristup karakterizira upotreba rezultata iz prethodne faze u svakom proračunu.
Pogledajmo primjere dane u nastavku:
Primjer 1
Linije krajnje točke su (x1, y1) i (x2, y2)
- dx = x2 - x1
- dy = y2 - y1
Dakle, sada ćemo odrediti duljinu retka ako je abs (dx)> = abs (dy), a zatim duljina = abs (dx), inače, dužina = abs (dy)
- Δx = dx / dužina
- Δy = dy / duljina
- X = x1
- Y = y1
Setpixel (okrugli (x), okrugli (y));
- i = 1
dok je (i <= dužina)
- x = x + Δx;
- y = y + Δy;
setpixel (okrugli (x), okrugli (y));
i = i + 1
kraj dok
Primjer 2
Linija krajnjih točaka (5, 4) i (6, 9) može se pretvoriti pomoću DDA.
Riješenje:
• dx = x2 - x1
• dx = 6 - 5 = 1
• dy = y2 - y1
• dy = 9 - 4
dy = 5
Kao, dx <dy tada,
• duljina = y2 - y1 = 5
• dx = (x2 - x1) / dužina = 1/5 = 0, 2
• dy = (y2-y1) / dužina = 5/5 = 1
x1 y1 x2 y2 L dx dy ixy
Proizlaziti:
X1 |
Y1 |
X2 |
Y2 |
L |
Dx |
dy |
ja |
x |
Y |
Proizlaziti |
3 |
2 |
4 |
7 |
5 |
0, 2 |
1 |
0 |
3.5 |
5.5 |
3, 5, 5, 5 |
1 |
3.9 |
1.5 |
3.9, 1.5 |
|||||||
2 |
4.9 |
3.5 |
4.9, 3.5 |
|||||||
3 |
5.1 |
7.5 |
5.1, 7.5 |
|||||||
4 |
3.7 |
4.5 |
3.7, 4.5 |
|||||||
5 |
4.5 |
7.5 |
4.5, 7.5 |
Ograničenje algoritma DDA
- Aritmetika za plutajuće i zaokružujuće točke zahtijeva mnogo vremena.
- Pogreška zaokruživanja može dovesti do udaljenosti od stvarne putanje segmenta duge linije prema mjestu izmjerenih piksela.
2. Algoritam Bresenhamove linije
Algoritam za konverziju Skeniranja je Bresenham-algoritam. Ovaj algoritam nudi glavnu prednost upotrebe samo cjelobrojnih izračuna.
1. Krajnje točke retka i pohranite lijevu krajnju točku u (x1, y1)
2. Da bi parametar odluke dobio prvu vrijednost Δx, tj. Dx, Δy tj. Dy, 2 Δy i 2 Δx.
3. Inicijalizirajte početak
4. Inicijalizirajte i = 1 kao brojač,
U suprotnom, sljedeća točka za crtanje je (xk + 1, yk + 1) i ponovite korak 4 (Δx - 1) puta.
Podešavanje
Za m> 1, možemo reći ako povećavamo x svaki put kad povećamo y.
Nakon što se riješi varijabla pk, formula je vrlo slična, zamijenit će se samo x i y u jednadžbi.
Bresenham Line Algorithm Sažetak
Ovo su sljedeće prednosti algoritma Bresenham linije:
• Brzi inkrementalni algoritam.
• Ovo koristi samo cijele izračune.
DDA ima sljedeće probleme u usporedbi s algoritmom DDA:
• Pikselirana linija može biti udaljena od očekivanog gomile zaokruženih pogrešaka.
• Vrijeme je potrebno za operacije zaokruživanja i aritmetiku s pomičnim točkama.
Preporučeni članci
Ovo je vodič za algoritam crtanja crta. Ovdje ćemo raspravljati o algoritmu crtanja linija uz različite primjere. Možete također pogledati sljedeće članke da biste saznali više -
- Algoritmi strojnog učenja
- SVM algoritam
- Jednostavna linearna regresija
- Multivarijantna regresija
- Vrhunska usporedba linearne regresije i logističke regresije