- •Http://antibotan.Com/ - Всеукраїнський студентський архів розділ 1. Координатні перетворення та проекції
- •1.1. Афінна геометрія
- •1.1.1. Афінні перетворення точок у просторі
- •1.1.2. Перетворення ліній та площин у просторі
- •1.2. Перспективно-проекційна геометрія
- •1.2.1. Однорідні координати
- •1.2.2. Проектування тривимірних об’єктів
- •1.2.3. Паралельні проекції
- •1.2.4. Центральні проекції
- •1.2.5. Неозначені точки
- •1.2.6. Одноточкова перспективна проекція
- •1.2.7. Двоточкова перспективна проекція
- •1.2.8. Триточкова перспективна проекція
- •Розділ 2. Просторові криві
- •2.1. Геометрія просторових кривих
- •2.1.1. Параметричне і непараметричне зображення кривих
- •2.1.2. Дотична, головна нормаль і бінормаль до кривої
- •2.1.3. Кривина, закручування кривої та формули Френе
- •2.2. Побудова плоских кривих
- •2.2.1. Конічні переріз
- •2.2.2. Трансцендентні криві
- •2.3. Кубічні сплайни
- •2.3.1. Сплайнова функція однієї змінної
- •2.3.2. Сплайнова функція в тривимірному випадку
- •Дослідження гладкості кривої
- •2.3.4. Граничні умови
- •2.4. Кубічні сплайни Без’є
- •2.5. Базис Бернштейна-Без’є
- •2.5.1. Геометричні властивості поліномів Бернштейна
- •2.5.2. Часткові випадки
- •2.6. Апроксимація на основі b-сплайнів
- •2.6.1. Головні властивості b-сплайнів
- •2.6.2. Базисні функції
- •2.6.3. Вузловий вектор
- •2.6.4. Приклади застосування b-сплайнів
- •2.7. Раціональні криві
- •2.7.1. Головні принципи раціональних кривих
- •2.7.2. Раціональні квадратичні сегменти конічного перерізу
- •2.7.3. Раціональні криві Без’є
- •Розділ 3. Опис і побудова поверхонь
- •3.1. Геометрія поверхонь
- •3.1.1.Поняття поверхні, дотична площина до поверхні
- •3.1.2. Перша квадратична форма
- •3.1.3. Друга квадратична форма поверхні
- •3.1.4. Нормальна кривина поверхні
- •3.1.5. Перетворення параметрів поверхні
- •3.2. Утворення і зображення поверхонь
- •3.2.1. Класифікація поверхонь
- •3.2.2. Лінійчаті поверхні
- •3.3. Поверхні Без’є
- •3.3.1. Параметричне рівняння поверхні Без’є
- •3.3.2. Властивості ділянок поверхні Без’є
- •3.4.1. Параметричні рівняння ділянок в-сплайн поверхні
- •3.4.2. Властивості ділянок бікубічних в-сплайнповерхонь
- •Розділ 4. Теоретичні основи та головні алгоритми растрової графіки
- •4.1. Створення базових геометричних форм
- •4.1.1. Пікселі
- •4.1.2. Рисування ліній
- •Input (x1,y1),(x2,y2)
- •4.1.3. Побудова кола
- •Input (r)
- •4.1.4. Побудова еліпса
- •4.2. Вирізання
- •4.2.1. Алгоритм серединної точки
- •4.15. Лінії до вирізання 4.16. Лінії після обрізання
- •4.2.2. Алгоритм Коена-Сазерленда
- •4.2.3. Алгоритм Лянга - Барського
- •4.3 Вирізання областей
- •4.3.1. Базовий матеріал
- •4.3.2. Алгоритм Сазерленда - Ходгмана
- •4.3.3. Алгоритми Сазерленда-Ходгмана вирізання поверхонь
- •Розділ 5. Застосування пакетів matlab у компютерній графіці
- •5.1. Головні відомості про matlab
- •5.1.1. Інтерфейс Matlab
- •5.1.2. Програмування в Matlab
- •If умова
- •5.1.3. Створення і застосування м-файлів
- •5.1.4. Робота з матрицями
- •5.2. Графіка в Matlab
- •5.2.1. Визначення точки споглядання
- •5.2.2. Об'єкти дескрипторної графіки
- •5.2.3. Побудова графіків. Команди Plot, Plot3
- •5.2.4 Примітиви
- •View(3); % 11
- •5.2.5. Алгоритми для примітивів
- •Image(x1,y,colour) % Lighting pixel
- •Image(X,y1,colour) % Lighting pixel
- •Image(X,y,colour) % Lighting pixel
- •Image(X,y-2*I,colour) % Lighting pixel
- •Image(X,y,colour) % Lighting pixel
- •Image(X-2*I,y,colour) % Lighting pixel
- •5.3. Перетворення
- •5.3.1. Геометричні перетворення
- •View(3);
- •5.3.2. Проекції тривимірного простору в
- •View(0,90);
- •View(3)
- •5.4. Вирізання
- •5.4.1. Алгоритми вирізання
- •5.4.2. Інші підходи
- •5.5. Зображення плоских кривих
- •5.5.1. Команда spline
- •5.5.2. Команда pchip
- •Список літератури
- •Покажчик
5.2.1. Визначення точки споглядання
Спочатку з– ясуємо як відображаються об’єкти в середовищі Matlab. Графічні функції за замовчуванням розташовують поверхню так, щоб спостерігач бачив її частину під деяким кутом, а інша частина є захована від споглядання.
Рис. 5.7. Кути споглядання
На рис. 5.7 розміщення спостерігача визначене двома кутами: азимутом (Azimuth) і кутом підвищення (Elevation). Азимут відраховують від осі, яка протилежна, а кут підвищення – від площини xy. Осі зафіксовані в додатному напрямі. Тут додатні напрями підрахунку кутів позначені стрілками.
Оглянути поверхню зі всіх боків можна за допомогою функції view. Отже, точка споглядання (Viewpoint) повністю визначена кутом азимуту і кутом підвищення. Виклик функції view з двома вихідними аргументами і без вхідних дає змогу визначити положення спостерігача, для цього в командній стрічці треба набрати (кути виводяться в градусах) такі команди:
>> [AZ, EL]=view
AZ =-37.5000
EL =30
Ці значення MatLab використовує за замовчуванням у разі побудови тривимірних графіків. Для задання положення спостерігача потрібно ввести азимут і кут підвищення (у градусах) як вхідні аргументіи view, наприклад: view(0,90) відображає вигляд на графік зверху. Функція view забезпечує ще декілька варіантів виклику:
view(3) – повернення до стандартних налаштувань;
view([x,y,z]) – розташування спостерігача в точці з координатами x,y,z.
Останній варіант задає точку
споглядання з декартовими координатами
.
Якщо потрібно повернутись до вихідних
значень (вони задані за замовчуванням),
достатньо виконати такі команди:
для 2D – view(2), az = 0, el = 90;
для 3D – view(3), az = -37.5, el = 30.
5.2.2. Об'єкти дескрипторної графіки
Як відомо, графічні засоби MATLAB грунтуються на низькорівневій графіці, яку називають дескрипторною (описовою). Вона забезпечує об’єктно - орієнтоване програмування графічних команд та інтерфейсу користувача, дає нові можливості створення графічних програм MATLAB, а також допомагає зрозуміти, як реалізовані графічні засоби системи. Центральним поняттям дескрипторної графіки є графічний об’єкт. Розглянемо такі типи об'єктів:
root – первинний об’єкт, який відповідає екрану комп’ютера;
figure – об’єкт створення графічного вікна;
uicontrol – об’єкт створення елемента інтерфейсу;
axes – об’єкт, який задає область розташування графіка в вікні об’єкта figure;
uimenu – об’єкт створення меню;
uicontextmenu – об’єкт створення контекстного меню;
image– об’єкт створення растрової графіки;
line– об’єкт створення лінії;
patch – об’єкт створення заповнених фігур;
rectangle – об’єкт створення заповнених прямокутників;
surface – об’єкт створення поверхні;
text– об’єкт створення текстових підписів;
light – об’єкт створення ефектів освітленості.
Зазначимо, що об’єкти взаємопов’язані і можуть звертатись один до одного для отримання відповідного графічного ефекту.
Створення графічного вікна. Всі високорівневі команди і функції, які виводять графічні об’єкти автоматично утворюють графічний об’єкт Figure. Наведемо команди і функції, які призначені для створення графічних вікон і керування ними:
figure – відкрити чисте графічне вікно;
gcf – отримати дескриптор графічного вікна figure;
elf – очистити графічне вікно;
shg – показати попередньо звернен графічне вікно;
close – закрити графічне вікно;
refresh – обновити графічне вікно.
Сстворення координатних осей. Графічний об’єкт axis задає область розміщення графіка у вікні об’єкта figure. Всі команди і функції, які виводять графіки автоматично створюють графічний об’єкт axis. Якщо в одному графічному вікні створено декілька об’єктів axis, то один з них виокремлюється як графічний об’єкт. Розглянемо ще одну групу команд для створення координатних осей і керування ними:
axes – створити осі координат;
box – побудувати прямокутник наввколо рисунка;
сlа – вилучити побудову axes;
gса – отримати дескриптор графічного об’єкта axes;
hold – зберегти осі координат;
ishold – перевірка статусу hold (1, якщо осі збережені, і 0 в іншому випадку).
Зазначимо, що ці команди можна використовувати і в високорівневій графіці.
Побудова ліній. Для ілюстрації команди line побудуємо ламану лінію, яка проходить через три точки з координатами (0,1), (2,4) і (5,-1). Використаємо об’єкт line:
» line([0 2 5],[1 4 -1],'Color','blue')
Особливість команди line полягає в явному заданні всіх умов побудови графіка: координат конкретних точок, параметра кольору 'Color' і самого кольору 'blue' (синій). Результатом цієї команди є два відрізки прямої синього кольору, які проходять через задані точки, відрізки.
Команда Patch. Наступною командою для побудови графічних об’єктів є команда patch. Ця команда створює один або більше багатокутників, зафіксованих у вершинах. Команда особливо потрібна під час роботи з 3D графікою і може набувати таких форм:
patch(X,Y,C) – створює заповнений багатокутник, вершини якого задані векторами і біжучій системі координат, а специфікація заповнення – вектором кольорової палітри С. Можна також задавати колір за допомогою символьної змінної 'color' вигляду 'r', 'g', 'b', 'с', 'm', 'у', w, k, тут V, X і Y можуть бути матрицями;
patch(X,Y.Z,C) – створює багатокутник у тривимірній системі координат, у цьому разі матриця Z повинна мати той же розмір, що й X і Y.
Розглянемо найпростіший шлях використання команди patch. Нехай нам потрібно нарисувати трикутник, заповнений синім кольором, з вершинами: (0,0), (1,0) і (0.5,1).
patch ( [0 1 0.5] , [0 0 1] , [0 0 1] ):
тут перший вектор – х-координати вершин, другий – у-координати а третій визначає зафарбування поверхні об’єкта. Для задання кольору треба конкретно визначати відповідний коефіцієнт кольору ([rgb]) (red, green, blue).
Розглянемо ще один приклад використання команди patch:
» Х=[1 2 3 2 1];
» Y=[l 2 0 5 1];
» patch(X.Y.[l 0 0])
У цьому випадку багатокутник зафарбований червоним кольором, оскільки вектор кольорів [1 0 0] визначає наявність лише червоного кольру. Так само можна працювати і в тривимірному просторі, потрібно лише додати дані про z–координату.
