Johdanto linjapiirrosalgoritmiin

Tässä artikkelissa nähdään linja piirustusalgoritmissa. Viivapiirros tietokoneella tarkoittaa, että tietokoneen näyttö jakautuu kahteen osaan riviin ja sarakkeeseen. Nämä rivit ja sarakkeet tunnetaan myös nimellä pikselit. Jos meidän on piirrettävä viiva tietokoneelle, ensinnäkin meidän on tiedettävä, mitkä pikselit pitäisi olla. Linja on osa suoraa linjaa, joka ulottuu vastakkaiseen suuntaan rajoittamattomasti. Rivin määrittelevät kaksi päätepistettä. Sen tiheyden tulisi olla erillään linjan pituudesta.
Kaava rinnan viivan sieppaamiseen: Y = mx + b
Tässä kaavassa m on kaltevuuden viiva ja b on y: n leikkaus viivalla. Kohdissa (x1, y1) ja (x2, y2) rivisegmentille määritetään kaksi päätepistettä.

Kaltevuuden m ja b arvo voidaan määrittää vastaavasti
• m = y2 - y1 / x2 - x1
• eli M = Δy / Δx

Esimerkki:

Rivin päätepisteet ovat (0, 0) ja (4, 12). Piirrä tulos tuloksen laskemiseksi jokainen y-arvo x-vaiheina 0–4.

Ratkaisu:

Joten meillä on kaava viivan yhtälöstä: Y = mx + b
• m = y2 - y1 / x2 - x1
• m = 12 - 0/4 - 0
• m = 3
Y-leikkauspiste b löydetään sitten yhdistämällä y1 ja x1 kaavaan y = 3 x + b, 0 = 3 (0) + b. Siksi b = 0, joten y = 3x viivakaava.
Tavoitteena on määrittää seuraava x, y-sijainti mahdollisimman nopeasti edellisen avulla.

Tyypit viivojen piirtämisalgoritmista

Alla on esitetty algoritmin tyypit:

1. Digitaalinen differentiaalialgoritmi (DDA)

Inkrementaalimuunnosmenetelmä on DDA-algoritmi, jota kutsuttiin myös digitaaliseksi differentiaalialgoritmiksi (DDA). Tälle lähestymistavalle on ominaista edellisen vaiheen tulosten käyttö kussakin laskelmassa.

Katsokaamme seuraavia esimerkkejä:

Esimerkki 1

Päätepisteviivat ovat (x1, y1) ja (x2, y2)

  • dx = x2 - x1
  • dy = y2 - y1

Joten, nyt määritetään juovan pituus, jos abs (dx)> = abs (dy) sitten pituus = abs (dx) muuten pituus = abs (dy)

  • Ax = dx / pituus
  • Ay = dy / pituus
  • X = x1
  • Y = y1

Setpixel (pyöreä (x), pyöreä (y));

  • i = 1

kun taas (i <= pituus)

  • x = x + Ax;
  • y = y + Ay;

setpikseli (pyöreä (x), pyöreä (y));
i = i + 1
lopeta kun

Esimerkki 2

Päätepisteiden (5, 4) ja (6, 9) rivi voidaan muuntaa DDA: lla.

Ratkaisu:
• dx = x2 - x1
• dx = 6 - 5 = 1
• dy = y2 - y1
• dy = 9 - 4

dy = 5
Kuten dx <dy sitten,
• pituus = y2 - y1 = 5
• dx = (x2 - x1) / pituus = 1/5 = 0, 2
• dy = (y2-y1) / pituus = 5/5 = 1
x1 y1 x2 y2 L dx dy ixy

Tulos:

X1

Y1

X2

Y2

L

dx

dy

minä

X

Y

Tulos

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

DDA-algoritmin rajoitus

  • Liukulukujen ja pyöristyspisteiden aritmeettinen käyttö on aikaa vievää.
  • Pyöristysvirhe voi johtaa mitatun pikselipaikan etäisyyteen todellisesta pitkien linjojen segmenttipolusta.

2. Bresenhamin linjan algoritmi

Skannausmuunnosalgoritmi on Bresenham-algoritmi. Tämä algoritmi tarjoaa pääedun, että käytetään vain kokonaislukulaskelmia.

1. Rivin päätepisteet ja tallenna vasen päätepiste (x1, y1)
2. Jotta päätösparametri saadaan ensimmäinen arvo Δx eli Dx, Δy eli Dy, 2 Δy ja 2 Δx.
3. Alusta käynnistäminen
4. Alusta i = 1 laskuriksi,
Muutoin seuraava kuvaajapiste on (xk + 1, yk + 1) ja toista vaihe 4 (Δx - 1) kertaa.
Säätö
Jos m> 1, voimme sanoa, jos lisäämme x: tä joka kerta kun lisäämme y: tä.
Sen jälkeen kun päätösmuuttuja pk on ratkaistu, kaava on hyvin samanlainen, vain yhtälön x ja y korvataan.

Bresenham Line -algoritmin yhteenveto

Nämä ovat seuraavat Bresenham-linja-algoritmin edut:
• Nopea inkrementaalinen algoritmi.
• Tämä käyttää vain kokonaislukulaskelmia.
DDA: lla on seuraavat ongelmat verrattuna DDA-algoritmiin:
• Pikseloitu viiva voi olla kaukana pyöristettyjen virheiden odotetusta kertymisestä.
• Pyöristysoperaatioille ja liukulukujen aritmeettille tarvitaan aikaa.

Suositellut artikkelit

Tämä on opas linjapiirrosalgoritmiin. Tässä keskustellaan siitä, mikä on viivan piirtämisalgoritmi yhdessä erilaisten esimerkkien kanssa. Saatat myös katsoa seuraavia artikkeleita saadaksesi lisätietoja -

  1. Koneoppimisen algoritmit
  2. SVM-algoritmi
  3. Yksinkertainen lineaarinen regressio
  4. Monimuuttuja regressio
  5. Paras vertailu lineaarisen regression ja logistisen regression välillä

Luokka: