Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Grafika_Shpora.doc
Скачиваний:
118
Добавлен:
23.02.2016
Размер:
839.17 Кб
Скачать

26.Алгоритм зафарбовування фігур математичним описом контуру

Фігурою будемо вважати плоский геометричний об'єкт, що складається з ліній контуру і точок заповнення, що містяться усередині контуру. Графічне виведення фігур поділяється на дві задачі: виведення контуру і виведення точок заповнення. Оскільки контур являє собою лінію, то виведення контуру проводиться на основі алгоритмів виведення ліній. У залежності від складності контуру, це можуть бути відрізки прямих, кривих або довільна послідовність сусідніх пікселів.Для виведення точок заповнення відомі методи, що розділяються в залеж­ності від використання контуру на два типи:

  • алгоритми зафарбовування від внутрішньої точки до границь довіль­ного контуру;

  • алгоритми, що використовують математичний опис контуру.

Розглянемо алгоритми зафарбовування довільного контуру, який вже намальовано у растрі. Спочатку визначаються координати довільного пікселя. що знаходиться усередині обкресленого контуру фігури. Колір цього пікселя змінюємо на потрібний колір заповнення. Потім виконується аналіз кольорів усіх сусідніх пікселів. Якщо колір деякого сусіднього пікселя не дорівнює кольору границі або кольору- заповнення, то колір цього пікселя змінюється на колір заповнення. Потім аналізується колір пікселів, сусідніх з попередніми. І так далі, поки всередині контуру всі пікселі не перефарбуються в колір заповнення. Пікселі контуру утворюють границю, за яку не можна виходити в ході послідовного перебору всіх сусідніх пікселів.

  • Основна область застосування алгоритмів зафарбовування довільного контуру — растрові графічні редактори {Paint, Adobe Photoshop і ін.), де процес обробки зображення (зокрема, завдання початкової точки), контролюється людиною. Для використання в програмах, які виконують растеризацію вектор­них зображень, такі алгоритми занадто повільні і не забезпечують стовідсотко­вої гарантії правильного зафарбовування всього контуру. Алгоритми заповн­ення. застосовувані для таких цілей, використовують математичний опис контуру.

Математичним описом контуру фігури може служити рівняння y=f(x) для контуру окружності, еліпса або іншої кривої. Для багатокутника (полігона) контур задається множиною координат вершин (xi,yi). Можливі й інші форми опису контуру. Загальним для розглянутих нижче алгоритмів є те, шо для генерації точок заповнення не потрібні попередньо сформовані в растрі пікселі границі контуру фігури. Контур може взагалі не малюватися в растрі ні до, ні після заповнення.

27.Розкрийте поняття стилю лінії в двовимірній графіці та пера

28. Розкрийте суть методу виведення стилю «товстих» ліній

Для опису різних по виду зображень на основі ліній використовують терміни стиль ліній і перо. Термін перо іноді робить більш зрозумілою суть алгоритму виведення ліній для деяких стилів — особливо для товстих ліній. Наприктад, якщо для тонкої безупинної лінії перо відповідає одному пікселю. то для товстих ліній перо можна уявити собі як фігуру або відрізок лінії, що сковзає уздовж осі. залишаючи за собою слід.

Такий підхід до розробки алгоритмів виведення товстих ліній має пере­ваги і недоліки. Перевага в простоті — можна майже без змін використовувати уже відомі ефективні алгоритми для обчислення координат точок лінії осі.

Недолік— неефективність для деяких форм пера. Для пер, що відповідають фігурам із заповненням, кількість тактів роботи алгоритму пропорційна квадрату товщини лінії. При цьому робиться багато зайвої роботи — більшість пікселів багаторазово зафарбовується в тих самих точках.

Такі алгоритми більш ефективні для пер у вигляді відрізків ліній. У цьому випадку будь-який піксель малюється тільки один раз. Але тут важливий нахил зображуваної лінії. Ширина пера залежить від нахилу. Зауважимо наприклад, що горизонтальне перо не може малювати товсту горизонтальну лінію.

Для виведення товстих ліній за допомогою пера — відрізка лінії найчастіше використовуються відрізки горизонтальної або вертикальної лінії, рідше — діагональні відрізки під кутом 45 градусів. Доцільність використання такого способу визначається великою швидкістю виведення горизонтальних і вертикальних відрізків прямої. При цьому, щоб мінімізувати кількість тактів виведення, товсті лінії, які ближчі за нахилом до вертикальних, малюють горизонтальним пером, а лінії, що ближче за нахилом до горизонталі, малюють вертикальним пером.

У сучасних програмах, які здійснюють растеризацію векторних зображень, для малювання товстих ліній використовують алгоритми заповнення фігур.

Основний недолік такого підходу — гострі кути, особливо помітні, якщо ланки ламаної розташовані під малим кутом один до одного. У багатьох програ­мах векторної графіки використовують удосконалені алгоритми, що забезпе­чують згладжування гострих кутів дугами окружностей.

Незважаючи на те, що описаний спосіб побудови ліній вимагає значно більшого обсягу обчислень (необхідно обчислити координати точок полігона і виконати алгоритм його заповнення), і, отже, має меншу швидкість виведення зображення, він одержав велике поширення в сучасних графічних пакетах, оскільки значно більш гнучкий, дозволяє легко масштабувати лінії, змінювати їхню товщину, змінювати роздільну здатність растра (наприклад, при виведенні зображення на друк). При цьому якість відображення лінії, її «гладкість», якість стикування ланок лінії не зменшується.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]