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 -

  1. Gépi tanulási algoritmusok
  2. SVM algoritmus
  3. Egyszerű lineáris regresszió
  4. Többváltozós regresszió
  5. A lineáris regresszió és a logisztikus regresszió összehasonlítása

Kategória: