Контрольна робота
В«Алгоритми креслення графічних примітивівВ»
Мета роботи: Розробити алгоритми і написати програму, яка буде зображувати на поверхні форми графічні примітиви: лінії, кола, еліпси.
Виконання завдання:
Оскільки екран растрового дисплея з електронно-променевою трубкою або РК - екраном можна розглядати як матрицю дискретних елементів (пікселів), кожен з яких може бути підсвічений, не можна безпосередньо провести відрізок з однієї точки в іншу. Процес визначення пікселів, найкращим чином апроксимуючих заданий відрізок, називається розкладом в растр. p align="justify"> Розглянемо:
. Алгоритм розкладання в растр прямій лінії. br/>В
Рис. 1. Растеризация відрізка прямої лінії
графічний примітив алгоритм лінія коло
Растр називається прямокутна сітка точок, які формують зображення на екрані комп'ютера. Кожна точка растра характеризується двома параметрами: своїм становищем на екрані і своїм кольором. Растрові зображення складаються з безлічі дискретних точок, для роботи з ними необхідні спеціальні алгоритми.
Малювання відрізка прямої лінії - одна з найпростіших завдань растрової графіки. Сенс її полягає в обчисленні координат пікселів, що знаходяться поблизу безперервних відрізків, що лежать на двовимірної растрової сітці. br/>
В В
Рис. 2. Алгоритм розкладання в растр прямої лінії
У функцію алгоритму розкладання передаються початкові і кінцеві координати, а також площину малювання Canvas. Перше, що потрібно визначити це довжину по осі oX або oY, залежно від того, яка довші:
if abs (X2 - X1)> = abs (Y2 - Y1) then Length: = abs (X2 - X1) Length: = abs (Y2 - Y1);
Тепер визначимо приросту для кожної осі:
dX: = (X2 - X1)/Length;: = (Y2 - Y1)/Length;
Маючи збільшення і довжину лінії, можна побудувати пряму, але для початку треба задати початкові координати побудови лінії:
X: = X1 + 0.5 * Sign (dX);: = Y1 + 0.5 * Sign (dY);
Тут Sign - функція, яка повертає -1, якщо число негативно; 1, якщо число позитивно; і 0, якщо число дорівнює нулю.
Тепер задамо змінну i в початковий стан:
i: = 1;
І запусти цикл, в якому буде здійснюватися прирощення координат, змінної i і промальовування в отриманих координатах точки, цикл закінчиться тільки, коли i <= Length:
i: = 1; i <= Length d...