Вступ до алгоритму малювання ліній

У цій статті ми побачимо контур Алгоритму малювання ліній. Накреслення ліній на комп'ютері означає, що екран комп'ютера ділиться на дві частини рядки та стовпці. Ці рядки та стовпці також відомі як Пікселі. Якщо нам доведеться намалювати лінію на комп’ютері, перш за все, нам потрібно знати, на яких пікселях має бути. Лінія - це частина прямої, яка простягається в протилежному напрямку нескінченно. Рядок визначається двома Кінцевими точками. Його щільність повинна бути окремою від довжини лінії.
Формула перехоплення ліній нахилу: Y = mx + b
У цій формулі m - лінія схилу, а b - перехоплення y у прямій. У позиціях (x1, y1) та (x2, y2) для відрізка лінії вказані дві кінцеві точки.

Значення нахилу m і b можна визначити відповідно
• m = y2 - y1 / x2 - x1
• тобто M = Δy / Δx

Приклад:

Кінцевими точками рядків є (0, 0) та (4, 12). Накресліть результат, щоб обчислити кожне значення y як х кроків від 0 до 4.

Рішення:

Отже маємо формулу рівняння прямої: Y = mx + b
• m = y2 - y1 / x2 - x1
• m = 12 - 0/4 - 0
• m = 3
Тоді y перехоплення b знаходимо, пов'язуючи y1 і x1 з формулою y = 3 x + b, 0 = 3 (0) + b. Тому b = 0, тому y = 3x пряма формула.
Мета - визначити наступне розташування x, y якомога швидше попереднього.

Типи алгоритму малювання ліній

Нижче наведені типи алгоритму:

1. Цифровий диференціальний алгоритм (DDA)

Методом поступового перетворення є алгоритм DDA, і ми також назвали цифровий диференціальний алгоритм (DDA). Цей підхід характеризується використанням результатів попереднього етапу в кожному розрахунку.

Розглянемо приклади, наведені нижче:

Приклад №1

Лінією кінцевої точки є (x1, y1) і (x2, y2)

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

тож тепер ми визначимо довжину лінії, якщо abs (dx)> = abs (dy), то довжина = abs (dx) else length = abs (dy)

  • Δx = dx / довжина
  • Δy = dy / довжина
  • X = x1
  • Y = y1

Setpixel (круглий (x), круглий (y));

  • i = 1

while (i <= довжина)

  • x = x + Δx;
  • y = y + Δy;

сетпіксель (круглий (х), круглий (у));
i = i + 1
закінчити поки

Приклад №2

Рядок кінцевих точок (5, 4) та (6, 9) можна перетворити за допомогою DDA.

Рішення:
• dx = x2 - x1
• dx = 6 - 5 = 1
• dy = y2 - y1
• dy = 9 - 4

dy = 5
Як, dx <dy тоді,
• довжина = y2 - y1 = 5
• dx = (x2 - x1) / length = 1/5 = 0.2
• dy = (y2- y1) / довжина = 5/5 = 1
x1 y1 x2 y2 L dx dy ixy

Результат:

X1

Y1

X2

Y2

L

Dx

Dy

Я

Х

Y

Результат

3

2

4

7

5

.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

  • Арифметика для плаваючих і округлих точок є трудомісткими процедурами.
  • Помилка округлення може призвести до відстані від істинного шляху відрізка довголінійки за розміреним розміром пікселя.

2. Алгоритм лінії Брезена

Алгоритм перетворення сканування - алгоритм Брезена. Цей алгоритм пропонує головну перевагу використання лише цілих чисельних обчислень.

1. Кінцеві точки рядка і збережіть ліву кінцеву точку в (x1, y1)
2. Для параметра рішення прийняти перше значення Δx, тобто Dx, Δy, тобто Dy, 2 Δy та 2 Δx.
3. Ініціалізуйте старт
4. Ініціалізуйте i = 1 як лічильник,
В іншому випадку наступною точкою для графіку є (xk + 1, yk + 1) і повторити крок 4 (Δx - 1) рази.
Регулювання
Для m> 1 ми можемо сказати, якщо збільшуємо х кожен раз, коли збільшуємо y.
Після того, як змінна рішення pk буде розв'язана, формула дуже схожа, будуть замінені лише x і y в рівнянні.

Підсумок алгоритму рядків Брезена

Це наступні переваги алгоритму лінії Брезена:
• Швидкий покроковий алгоритм.
• Для цього використовуються лише цілі обчислення.
У порівнянні з алгоритмом DDA DDA має такі проблеми:
• Пікселізована лінія може бути далекою від очікуваного накопичення помилок округлення.
• Час необхідний для операцій округлення та арифметики з плаваючими точками.

Рекомендовані статті

Це було керівництвом до алгоритму малювання ліній. Тут ми обговорюємо, що таке алгоритм малювання ліній разом з різними прикладами. Ви також можете переглянути наступні статті, щоб дізнатися більше -

  1. Алгоритми машинного навчання
  2. Алгоритм SVM
  3. Проста лінійна регресія
  4. Багатоваріантна регресія
  5. Найкраще порівняння лінійної регресії проти логістичної регресії

Категорія: