Bevezetés a vonalas rajz algoritmusába
Ebben a cikkben vázlatot fogunk látni a vonalrajz algoritmusáról. A vonalrajz a számítógépen azt jelenti, hogy a számítógép képernyője két részre oszlik és oszlopokra oszlik. Ezeket a sorokat és oszlopokat pixelnek is nevezik. Abban az esetben, ha vonalon kell húznunk a számítógépet, mindenekelőtt tudnunk kell, hogy mely pixeleknek kell lennie. A vonal egy egyenes vonal olyan része, amely határozatlan ideig nyújt ellenkező irányba. A sort két végpont határozza meg. Sűrűségének külön kell lennie a vonal hosszától.
A meredekség egyenes vonásának képlete: Y = mx + b
Ebben a képletben m a lejtő egyenese, és b az y metszete az egyenesben. Az (x1, y1) és (x2, y2) pozíciókban két végpont van megadva a vonalszakasz számára.
Ennek megfelelően meg lehet határozni az m és b meredekség értékét
• m = y2 - y1 / x2 - x1
Azaz M = Δy / Δx
Példa:
A vonal végpontjai (0, 0) és (4, 12). Az eredményt ábrázolja, és kiszámítja az y minden értékét 0–4 x lépésként.
Megoldás:
Tehát van egy egyenes képlet: Y = mx + b
• m = y2 - y1 / x2 - x1
• m = 12 - 0/4 - 0
• m = 3
Ezután megtalálja a y y szakaszot az y1 és x1 összekapcsolásával az y = 3 x + b képlethez, 0 = 3 (0) + b. Ezért b = 0, tehát az y = 3x vonalképlet.
A cél az, hogy a következő x, y helyet a lehető leggyorsabban meghatározzuk.
A vonalhúzási algoritmus típusai
Az alábbiakban bemutatjuk az algoritmus típusait:
1. Digitális differenciál algoritmus (DDA)
Az inkrementális konverziós módszer egy DDA algoritmus, és más néven a Digital Differential Algorithm (DDA). Ezt a megközelítést az előző szakasz eredményeinek felhasználása jellemzi minden egyes számítás során.
Nézzük meg az alábbiakban bemutatott példákat:
1. példa
A végpont sor (x1, y1) és (x2, y2)
- dx = x2 - x1
- dy = y2 - y1
tehát most meghatározzuk a sor hosszát, ha abs (dx)> = abs (dy), akkor hossza = abs (dx) egyébként hossz = abs (dy)
- Δx = dx / hossz
- Δy = dy / hossz
- X = x1
- Y = y1
Setpixel (kerek (x), kerek (y));
- i = 1
míg (i <= hossz)
- x = x + Δx;
- y = y + Δy;
setpixel (kerek (x), kerek (y));
i = i + 1
miközben véget ér
2. példa
A végpontok (5, 4) és (6, 9) sorát átalakíthatjuk a DDA-val.
Megoldás:
• dx = x2 - x1
• dx = 6 - 5 = 1
• dy = y2 - y1
• dy = 9 - 4
dy = 5
As, dx <dy akkor,
• hosszúság = y2 - y1 = 5
• dx = (x2 - x1) / hossz = 1/5 = 0, 2
• dy = (y2-y1) / hossz = 5/5 = 1
x1 y1 x2 y2 L dx dy ixy
Eredmény:
X1 |
Y1 |
X2 |
Y2 |
L |
dx |
dy |
én |
x |
Y |
Eredmény |
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 |
A DDA algoritmus korlátozása
- A lebegő és a kerekítési pontok számtani alkalmazása időigényes eljárás.
- Egy lekerekítési hiba távolsághoz vezethet a hosszú vonal tényleges útjától a mért pixel helyétől.
2. A Bresenham Line algoritmus
A Scan konverziós algoritmus Bresenham algoritmus. Ez az algoritmus fő előnye, hogy csak egész számításokat használ.
1. A sor végpontjai, és a bal végpontot (x1, y1) tárolja
2. Ahhoz, hogy a döntési paraméter megkapja az első Δx értéket, azaz Dx, Δy, azaz Dy, 2 Δy és 2 Δx.
3. Inicializálja az indítást
4. Inicializálja az i = 1 számlálóként,
Ellenkező esetben a következő pontokat kell ábrázolni (xk + 1, yk + 1), és ismételjük meg a 4. lépést (Δx - 1).
Beállítás
Ha m> 1, akkor azt mondhatjuk, ha minden alkalommal növeljük az x-et.
Miután a pk döntési változó feloldódik, a képlet nagyon hasonló, csak az egyenletben szereplő x és y helyébe lép.
Bresenham Line algoritmus összefoglalása
A Bresenham vonal algoritmusának a következő előnyei vannak:
• Gyors növekményes algoritmus.
• Ez csak egész számításokat használ.
A DDA a következő problémákkal rendelkezik a DDA algoritmushoz képest:
• A pixelezett vonal távol lehet a kerekítési hibák várható halmozódásától.
• Idő szükséges a kerekítési műveletekhez és a lebegőpontos számtani adatokhoz.
Ajánlott cikkek
Ez egy útmutató a vonalrajzi algoritmushoz. Itt tárgyaljuk, mi a vonalrajzolási algoritmus, a különféle példákkal együtt. Lehet, hogy megnézi a következő cikkeket is, ha többet szeretne megtudni -
- Gépi tanulási algoritmusok
- SVM algoritmus
- Egyszerű lineáris regresszió
- Többváltozós regresszió
- A lineáris regresszió és a logisztikus regresszió összehasonlítása