Контрольная работа: Адитивна кольорова модель RGB

Як бачимо, коефіцієнти r', g' і b' можуть бути і позитивними, і від'ємними. Що це означає? Те, що деякі монохроматичні кольори не можуть бути представлені сумою компонентів R, G і B. Але як відняти те, чого немає? Для вирівнювання кольору довелося додати до монохроматичного випромінювання один з компонентів R, G чи В. Наприклад, якщо монохроматичне випромінювання для деякого значення розбавлялося червоним, те це можна виразити так:

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


Верхня частина кривої лінії відповідає чистим монохроматичним кольорам, а нижня лінія — від 380 нм до 780 нм — представляє так називані пурпурні кольори (суміш синього й червоного), які не є монохроматичними. Точки, що лежать усередині контуру кривої, відповідають реальним кольорам, а поза цим контуром — нереальним кольорам. Точки усередині трикутника відповідають позитивним значенням коефіцієнтів r', g' та b' і представляють кольори, які можна одержати змішуванням компонентів RGB.

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

Ще одним фактором, що сприяє популярності системи RGB, є її наочність — основні кольори знаходяться в трьох чітко помітних ділянках видимого спектра.

Крім того, однією з гіпотез, що пояснюють колірний зір людини, є трикомпонентна теорія, яка стверджує, що в зоровій системі людини є три типи світлочутливих елементів. Один тип елементів реагує на зелений, інший тип — на червоний, а третій тип — на синій колір. Така гіпотеза висловлювалася ще Ломоносовим [14], її обґрунтуванням займалися багато вчених, починаючи з Т. Юнга. Утім, трикомпонентна теорія не є єдиною теорією колірного зору людини.


2. Об’ємні об’єкти, Tess-, NURBS – об’єкти бібліотеки Opengl

В OpenGL передбачені деякі стандартні, найчастіше використовувані тривимірні об'єкти. Набір таких форм представлений у бібліотеці GLU (Utility Library), що реалізована у вигляді модуля glu32.dll й є невід'ємною частиною OpenGL. Вона містить у собі кілька функцій керування проекціями (одну з яких — gluPerspective — ми вже використовували), функції роботи з полігонами, кривими та поверхнями типу B-сплайнів й інші функції.

Розглянемо функції gluCylinder, gluSphere, gluDisk І gluPartialDisk .

Перераховані вище об'єкти названі "quadric objects". Параметри slices і stacks визначають кількість плоских граней, використовуваних для апроксимації поверхні. Для того щоб нарисувати подібний об'єкт, потрібно викликати функцію gluNewQuadric, а після рисування звільнити пам'ять викликом функції gluDeleteQuadric

За умовчанням кожен об'єкт рисується із суцільним заповненням. Змінити стиль показу можна викликом функції gluQuadricDrawStyle. Можна задати такі стилі показу: у вигляді точок, розташованих на вершинах багатокутника; каркасне зображення; суцільне заповнення й силует (різновид каркасного). Наприклад, виклик.



Об'єкти даного типу розташовуються у просторі в центрі координат (0, 0, 0) з врахуванням матриці gl_modelview. Тому, щоб нарисувати зображення об'єкта в необхідному місці, потрібно відповідним чином змінити цю матрицю, наприклад, за допомогою функцій glTranslate і glRotate. Нижченаведений приклад ілюструє показ об'єктів типу "quadric objects ".

Зображення, що створюється програмою Studex55, наведене на рис. 11.16.

При підготовці цього рисунка до друку був змінений колір тла на білий. Однак на екрані монітора значно краще виглядає темно-синій колір. У тексті програми:


Для текстур використовуються растри. Вони можуть бути одномірними чи двовимірними. Щоб накласти текстуру, необхідно виконати наступні операції.

1. Відкрити в пам'яті масив, у якому буде зберігатися растр текстури. Число байтів масиву розраховується, виходячи з кількості бітів на піксел текстури. Розміри растру текстури обов'язково повинні дорівнювати ступеню двійки (плюс трохи пікселів на бордюр). Ця вимога створює деякі незручності для програміста, особливо у випадку, коли текстура читається з довільного растрового файлу. Утім, це не є нерозв'язною проблемою — будь-який растр текстури можна або обрізати, або розтягнути (стиснути) до необхідних розмірів.

2. Заповнити масив текстури. Тут варто враховувати те, в якому форматі представлений растр текстури. Якщо піксели текстури представляються у форматі RGB (24 біта на піксел), то байти в масиві повинні розташовуватися у вигляді трійок (R, G, В). Зазначимо, що в масивах DIB Windows API колірні компоненти розташовуються у зворотному порядку, тобто (В, G, R).

3. Після того як масив відкритий, передати OpenGL адресу масиву й інші його параметри. Робиться це викликом функції glTexImage2D для двовимірної текстури і glTexImage1D для одномірної.

К-во Просмотров: 312
Бесплатно скачать Контрольная работа: Адитивна кольорова модель RGB