ВІКІСТОРІНКА
Навигация:
Інформатика
Історія
Автоматизація
Адміністрування
Антропологія
Архітектура
Біологія
Будівництво
Бухгалтерія
Військова наука
Виробництво
Географія
Геологія
Господарство
Демографія
Екологія
Економіка
Електроніка
Енергетика
Журналістика
Кінематографія
Комп'ютеризація
Креслення
Кулінарія
Культура
Культура
Лінгвістика
Література
Лексикологія
Логіка
Маркетинг
Математика
Медицина
Менеджмент
Металургія
Метрологія
Мистецтво
Музика
Наукознавство
Освіта
Охорона Праці
Підприємництво
Педагогіка
Поліграфія
Право
Приладобудування
Програмування
Психологія
Радіозв'язок
Релігія
Риторика
Соціологія
Спорт
Стандартизація
Статистика
Технології
Торгівля
Транспорт
Фізіологія
Фізика
Філософія
Фінанси
Фармакологія


Напрямку «Комп’ютерні науки»,

Спеціальність 6.050101

 

 

Київ КНУТД 2007


 

Комп’ютерна графіка. Полілінійні моделі на площині: Конспект лекційі для студентів очної та заочної форми навчання напрямку “Комп’ютерні науки”, спеціальність 6.050101 „Інформаційні технології проектування”. Упорядники: Чумак О.О., Федотова Л.Л., Колиско О.З. 2007 - с.

 

В курсі лекцій розглядаються питання комп’ютерної (машинної) графіки в частині алгоритмів растрової графіки опрацьовані в системі програмування DELPHI.

 

© Київський національний університет технологій та дизайну


Вступ

1.1 Витоки i розвинення графiчного представлення iнформацiї

Комп'ютерна або машинна графіка з часом була цілком відокремлена як наука. Існує апаратне i програмне забезпечення для побудови різноманітних зображень - від нескладних креслень до реалістичних образів природних об’єктів. Декілька десятиліть тому такі засоби коштували сотні тисяч доларів, а тепер можна встановити вiдповiднi плати або програмне забезпечення на звичайний комп'ютер.

Людина має зір як один з органів відчуття (поряд зі слухом, нюхом i дотиком). З давнини людство використовувало рiзноманiтнi поверхні для створення малюнків: малюнки на поверхні каміння, на стінах печер, на дошках з глини (каменю, дерева), на стінах храмів i будинків, шкурах тварин, корi дерев, полотні i папері. Все це були поверхні, що відтворювали зображення завдяки пасивному відбиттю променів сонця, багаття, будь-якого джерела освiтлення. Надалі виникло багато різновидiв мистецтв, створено iндустрiю друкування книг, художню фотографiю, кiно i телебачення. Останнє вже базується на вiдтвореннi зображення завдяки активному випромiненню свiтла з точок поверхнi, яку називають екраном. Бiльшiсть сучасних комп'ютерних систем базується саме на такому принципi вiдтворення зображень.

 

1.2 Сфери використання

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

 

1.3 Головнi поняття i операцiї

Сучасна комп'ютерна графiка - це добре розвинута сфера діяльності. Для її вивчення потрiбно розшарувати її на певні частини, для яких можливий бiльш детальний опис.

Кiнцева мета комп'ютерної графiки це побудова зображення на деякому приладi. Тому головним поняттям комп'ютерної графꗬÁ怃Йዸ¿က؀
橢橢珋珋
Й萻ᦩᦩ꿂&Å￿￿￿¤৶৶৶৶చచచᆜ澔玸玸玸8珰؄秴ʬ脰钏[1]IJ粬෌詸"誚誚謜龽΢ꍟČꑫˆ邊[1][1]邌[1]邌[1]邌[1]邌[1]邌[1]邌[1]$闁[1]ɨ頩[1]”邰[1]Ιచꗚ齽@龽ꗚꗚ邰[1]р з анiмацiйного фiльму.

Отже, у комп'ютернiй графiцi фундаментальною зв'язуючою ланкою є зображення. Тому ми повиннi розглянути типи графiчних приладiв та графiчних систем для побудови зображень:

· Способи представлення зображень у комп'ютернiй графiцi;

· Способи пiдготовки зображень для вiзуалiзацiї;

· Способи креслення або малювання зображень, які пiдготовленi до вiзуалiзацiї;

· Способи взаємодiї з зображенням при динамiчному вiдображеннi;

· Способи побудови реалiстичних зображень.

Бiльш-менш детальний розгляд зображень залежить вiд типу приладу, на якому створюватиметься зображення. Тому розглядають растрову графiку i векторну графiку.

При розглядi растрових зображень базовим для побудови зображення є поняття точки зображення з деяким вектором властивостей цiєї точки (наприклад, колiр у певній системi кольору). Така точка має назву пiксел (pixel - чоловiчого роду, пiксели, пiкселiв) i є найпростiшим графiчнiм примiтивом.

Зауваження: Фiрма IBM запропонувала як стандарт термiн пел (pel), що утворено з picture element.

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

Звичайно зображення формується за допомогою операцiй перетворення точок на площинi або у просторi з наступним масштабуванням i проектуванням на площину екрана монiтора. Як правило цi основнi видовi перетворення здiйснюються за допомогою матричних операцiй над координатами даних, якi записанi у однорiдних координатах (див. [1] або [2], [3]). Часто цi операцiї мають апаратну реалiзацiю.

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

Якщо не потрібно малювати все зображення, тодi треба вiдокремити деяку його частину. Цей процес має назву вiдсiкання. Вiдсiкання може бути двовимiрним або тривимiрним. В окремих випадках вiкно, в якому ми здiйснюємо вiдсiкання, має нерегулярну форму (не є прямокутним). Вiдсiкання вiдносно стандартних областей часто має апаратну реалiзацiю.

Майже в усіх зображеннях наявна текстова iнформацiя. Букви можуть генеруватися або апаратно або програмно. В останньому випадку їх (лiтери) можна обробляти як будь-яку частину зображення. При апаратному формуваннi букви до моменту виведення на екран зберiгаються у виглядi деяких кодiв, якi використовує знакогенератор монiтора. При апаратному генеруванні для окремих приладів можна здійснювати масштабування або обертати цi лiтери на деякий кут. В бiльшостi випадкiв вiдсiкання лiтер, які згенеровані апаратно, не можливе: або вiдображається цiла лiтера, або вона взагалі не вiдображається.

 

1.4 Типи графiчних приладiв

Iснує багато рiзноманiтних приладiв для вiдтворення зображень, що створені за допомогою комп'ютерної графiки. Як типовi зазначимо графопобудувачі з пером, точково-матричнi, електростатичнi i лазернi прилади для друкування, прилади для створення фiльмiв, дисплеї на трубцi, що може запам'ятовувати зображення, векторнi дисплеї з регенерацiєю зображення i растровi дисплеї на електронно-променевій трубцi (ЕПТ)}. Ми обмежимо розгляд дисплеями на ЕПТ тому, що вони є найбiльш поширеними при роботі з комп'ютерною графiкою. Вони подiляються на

1. Графiчнi дисплеї на трубцi, яка може запам'ятовувати зображення. Люмiнофор цих трубок має великий (до години) час пiслясвiтiння. Для стирання зображення на всю трубку подається спецiальна напруга, яка знiмає свiчення люмiнофора. Щоб накреслити вiдрiзок або точку на екранi, iнтенсивнiсть електронного променя збiльшують до такої величини, що забезпечить запам'ятовування слiду променю на люмiнофорi. Дисплеї такого типу фактично є векторними дисплеями.

2. Векторнi графiчнi дисплеї з регенерацiєю зображення. Люмiнофор цих трубок має дуже невеликий час пiслясвiтiння. Цi дисплеї часто називають дисплеями з довiльним скануванням (див. далi). Зображення на ЕПТ за одну секунду повинно багатократно перемальовуватися або регенеруватися (40 або 50 1/с). Швидкiсть регенерування менша за 30 1/с веде до мерехтiння зображення. Для дисплея такого типу треба мати окрiм ЕПТ ще два елемента: дисплейний буфер (неперервну дiлянку пам'ятi, яка мiстить всю iнформацiю, що є необхiдною для виведення зображення на ЕПТ) i дисплейний контролер (для циклiчної обробки iнформацiї з дисплейного буфера зi швидкiстю регенерацiї).

Iснує двi схеми роботи векторних графiчних дисплеїв з регенерацiєю зображення:

§ ЕОМ Геометричний процесор Дисплейний буфер Дисплейний контролер Генератор векторiв/лiтер ЕПТ;

§ ЕОМ Дисплейний буфер Геометричний процесор Дисплейний контролер Генератор векторiв/лiтер ЕПТ.

В обох випадках геометричнi перетворення (зсув, обертання, масштабування, перспективне проектування i вiдсiкання) реалiзованi апаратно у геометричному процесорi.

3. Растровi графiчнi дисплеї з регенерацiєю зображення.Растровий прилад можна розглядати як матрицю дискретних точок (пiкселiв, з їх характеристиками кольору), кожна з яких може бути пiдсвiченою. При цьому неможливо накреслити вiдрiзок вiд однiєї точки до iншої. Вiдрiзок можна тiльки апроксимувати послiдовнiстю точок (пiкселiв), що розташованi вздовж цього вiдрiзку. Часто для графiчних приладiв з растровою ЕПТ використовують буфер кадру (неперервна зона пам'ятi комп'ютера, до якої додаються ще бiтовi площини, для задання характеристик пiкселiв, див. [4]). Кожнiй точцi вiдповiдає один або декiлька байтiв буфера кадру i по одному бiту з кожної бiтової площини.

4. Системи з телевiзiйним растром. Процес перетворення растрового малюнку, що зберiгається в буферi кадра у впорядкований набiр точок на ЕПТ, має назву растрової розгортки або растрового сканування. Для уникання ефекту мерехтiння розгортка зображення має поновлюватись не менш нiж 25 кадрiв у секунду при умовi, що мiнiмальна швидкiсть регенерацiї або вiдтворення є вдвiчi бiльшою, тобто 50 кадр/с.

 

Зауваження: Американська система телебачення використовує метод растрового сканування з черезрядковою розгорткою, чим вiдрiзняється вiд систем англiйського та європейського телебачення.

Лiтература: [1], [3], [5], [6], [7].

 

Алгоритми растрової графiки

2.1 Растрова i векторна графiка

Растр, або растровий масив (англ. bitmap - масив бiтiв), як це можна побачити з назви, - це сукупнiсть бiтiв, якi розташованi на полотнi. Такий біт позначає чарунку (комірку) пам’яті комп'ютера, що може знаходитись у включеному (за звичай позначається 1) або виключеному ( позначається 0) станi. Цi стани можна використовувати для представлення чорного i бiлого кольорiв. Сукупнiсть чорних i/або бiлих точок на цьому полотнi дозволяє створювати чорно-бiле растрове зображення. Растрове зображення можна розгдядати як аркуш паперу у клiтинку, де кожна клiтинка замальована чорним або бiлим кольором, формуючи в сукупностi малюнок. Iнше представлення - це пiксел.

Методи формування, перетворення i зберiгання растрових малюнкiв є предметом розгляду растрової графiки (англ. raster graphics або paint-type graphics). Існує досить багато програм для роботи з растровими зображеннями, наприклад Paint, Photoshop рiзних версій та ін.. Створено та використовується багато форматiв файлiв для зберiгання растрових зображень, наприклад *.bmp.

Растровi зображення можуть нести графічну iнформацiю будь-якої складності аж до кольорових фотографiй. Але вони потребують багато мiсця (розмiр файлу є пропорцiйним розмiру зображення) для зберiгання i їх не можна довільно збiльшувати без погіршення якості зображення (вони мають скiнченну бiтову глибину). Виникають труднощi також i при редагуваннi растрових файлiв. Тому з’явився iнший напрямок комп'ютерної графiки - векторна графiка. Векторна графiка передбачає представлення малюнку як сукупностi графiчних примiтивiв (що мiстять математичнi формули з параметрами опису базових графiчних об'єктiв) з послiдовнiстю комп'ютерних команд для роботи з цими графiчними примiтивами. Це дозволяє комп'ютеру i/або комп'ютерним приладам (наприклад, монiтору або принтеру), обчислювати, де треба розмiщувати точки зображення при відтворенні цих об'єктiв. При цьому розмiри векторних файлiв для зберiгання малюнкiв зменшуються у десятки разiв.

Оскільки будь-яка програма завжди може моделювати як растрову так i векторну графiку, виконуючи при цьому iнструкцiї мови програмування, то далi будемо моделювати растрову сiтку як двовимiрний масив. При цьому стан пiкселя буде вiдображатися значенням елементу цього масиву. Розмiри масиву будуть вiдповiдати розмiрам областi вiдображення.

Почнемо з малювання на полотнi растра вiдрiзкiв прямих i частин кола та елiпса.

2.1.1 Цифровий диференцiйний аналiзатор

Нехай на площинi задано двi рiзнi точки і ( ). З аналiтичної геометрiї вiдома формула рiвняння прямої , що проходить через точки i :

(1)

Якщо на прямiй вибрати послiдовнi (рiвновiддаленi) точки = , , починаючи з точки i закiнчуючи точкою , то пiсля пiдстановки в рiвняння прямої отримаємо спiввiдношення . Але , . Тому для знаходження точок маємо наступнi рекурентнi спiввiдношення

, , . (2)

де - крок вздовж осі , - крок уздовж осi , - початкова а - кiнцева точки вiдрiзка .

Цiй метод має назву цифрового диференцiйного аналiзатора (ЦДА) за використанням його при розробцi перших дисплеїв.

Вiдповiдний модуль:

{Метод Цифрового диференцiйного аналiзатора побудови вiдрiзку}

unit Unit1; interface

uses Windows, Messages, SysUtils, Classes, Graphics, Controls,

Forms, Dialogs, StdCtrls;

Type

TForm1 = class(TForm)

Label1, Label2, Label3, Label4: TLabel;

Button1: TButton;

Edit1, Edit2, Edit3, Edit4: TEdit;

procedure Button1Click(Sender: TObject);

private { Private declarations }

public { Public declarations }

end;

var Form1: TForm1;

implementation {$R *.DFM}

var Xs,Ys,Xf,Yf // початкова i кiнцева точки вiдрiзка

: integer;

// цiла частина

function Integ(x:real):integer;

var y:real;

begin {Integ}

y:=Round(x)-2;

while (y<=x) do y:=y+1;

result:=Round(y-1);

end; {Integ}

// Функцiя SignR дозволяє використовувати алгоритм для всiх квадрантiв}

function SignR(X:real):real;

begin {SignR}

if X>0 then result:=1;

if X=0 then result:=0;

if X<0 then result:=-1;

end; {SignR}

procedure ZDA(Xs,Ys,Xf,Yf,Color:integer);

var i: integer; x,y,Dx,Dy,H: real;

begin {ZDA}

{знаходимо найбiльшу проекцiю вiдрiзка}

if Abs(Xf-Xs)>=Abs(Yf-Ys) then H:=Abs(Xf-Xs)

else H:=Abs(Yf-Ys);

{знаходимо прирости dx i dy на одиницю растра}

Dx:=(Xf-Xs)/H; Dy:=(Yf-Ys)/H;

{заокруглення, але не вiдкидання дробовоi частини}

x:=Xs+SignR(Dx)/2; y:=Ys+SignR(Dy)/2;

i:=1; {початок головного циклу}

while (i<=H) do

begin {while}

Form1.Canvas.Pixels[Integ(x),Integ(y)]:=Color;

x:=x+Dx; y:=y+Dy; i:=i+1;

end; {while}

end; {ZDA}

procedure TForm1.Button1Click(Sender: TObject);

begin {TForm1.Button1Click}

Xs:=StrToInt(Edit1.Text); Ys:=StrToInt(Edit2.Text);

Xf:=StrToInt(Edit3.Text); Yf:=StrToInt(Edit4.Text);

ZDA(Xs,Ys,Xf,Yf,clGreen);

end; {TForm1.Button1Click}

end.

 

Лiтература. [5, стор. 50-54], [8, стор.97-100].

 

2.1.2 Алгоритм Брезенхема побудови вiдрiзкiв

Брезенхем [12] розробив алгоритм креслення вiдрiзка спочатку для цифрових графопобудувачів, але цей алгоритм можна використовувати і для побудови вiдрiзка на растрових приладах з ЕПТ. Алгоритм вибирає оптимальні растровi координати для представлення вiдрiзка. Пiд час роботи алгоритму на кожному його кроцi змiнюється лише одна з координат -- або , або (залежно вiд кутового коефiцiєнту) -- вiдповiдна координата змiнюється на одиницю. Змiна iншої координати (або на нуль, або на одиницю) залежить вiд вiдстанi мiж дiйсним розташуванням вiдрiзка i найближчими координатами сiтки з пiкселiв. Цю вiдстань будемо називати похибкою.

Алгоритм побудовано так, що потрiбно перевiряти лише знак цієї похибки. На рисунку наведено вiдрiзок у першому октантi, тобто для відрізка з кутовим коефiцiєнтом , що знаходиться в межах від нуля до одиниці ( ). З рисунка бачимо, що у випадку, коли і відрізок проходить через точку , то перетин вiдрiзка з прямою розташовано ближче до прямої , нiж до прямої . Отже, точка растра краще наближає xiд вiдрiзку нiж точка . Якщо кутовий коефiцiєнт , то все буде навпаки. Для кутового коефіцієнта алгоритм Брезенхема вибирає точку .

© 2013 wikipage.com.ua - Дякуємо за посилання на wikipage.com.ua | Контакти