- •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.3. Побудова графіків. Команди Plot, Plot3
Система MatLab має широкий набір засобів для побудови графіків функцій одної і двох змінних, а також відображення різних типів даних. Усі графіки виводяться в графічних вікнах зі своїми меню і панелями інструментів. Вигляд графіків визначений аргументами графічних команд, його можна бути змінити за допомогою інструментів вікна. Для побудови графіків функцій на деякій області зміни аргументів треба обчислити значення функції в точках області, часто для отримання хорошого результату доцільно використовувати достатньо багато точок.
Побудова графіків відрізками прямих. Для відображення таких функцій використовують графіки в декартовій (прямокутній) системі координат. У цьому разі, за звичай, будують дві осі – горизонтальну X і вертикальну Y, та задають координати х і у, які визначають вузлові точки функції у(х). Ці точки з’єднують одна з одною відрізками прямих, під час побудови графіка відбувається лінійна інтерполяція для проміжних точок. Оскільки MATLAB – матрична система, то сукупність точок у(х) задана векторами х і у однакового розміру.
Команда plot слугує для побудови графіків функцій у декартовій системі координат. Вона має низку параметрів, наведених нижче.
Команда plot (X, Y) будує графік функції у(х), координати точок (х, у) якої взяті з векторів однакового розміру Y і X. Якщо X або Y – матриця, то відбувається побудова сім’ї графіків за даними, які містяться в стовбцях.
Наприклад, якщо хочемо
нарисувати графік функції
в інтервалі [0 8π]
то потрібно виконати такі кроки:
function draw_sinx(pedio,shmeia) % 1
h = (pedio(2)-pedio(1))/(shmeia-1); % 2
x = pedio(1):h:pedio(2); % 3
y = sin(x); % 4
plot(x,y) % 5
axis equal % 6
Числа у правій частині тіла
функції не впливають на програму, однак,
завдяки їм можна проаналізувати, що
робить кожний рядок. У першому рядку ми
оголошуємо, що створено М-функцію, якій
дано ім'я draw_sinx. Тут
також оголошено, що вона має два вхідні
параметри. З другого рядка зрозуміло,
що перший параметр є масивом, розміром
,
а другий – числом. За допомогою масиву
додаємо інтервал, у якому відбуватиметься
побудова кривої. В другому рядку – точки
графіка. У третьому рядку визначаємо
всі х
, а в четвертому обраховується значення
функції y =
sin(x). У п’ятому
використана функція plot
для малювання графіка обчислених значень
аргументу(рис.5.8). Шостий рядок відображає
на те, що вздовж кожної осі однакове
масштабування. Введемо конкретні
параметри для отримання результату, а
саме, draw_sinx([0,4*pi],28).
Рис. 5.8. Графік функії
Щоб функція мала вигляд гладкої кривої, необхідно збільшити кількість вузлових точок, розташовання ж їх може бути довільним.
Функція plot(Y) будує графік у(і), значення у беруть з вектора Y, a i є індексом відповідного елемента. Якщо Y містить комплексні елементи, то виконується команда plot (real (Y). imag(Y)). В інших випадках уявна частина даних ігнорована
» х=2*pi:0.02*pi:2*pi;
» y=sin(x)+i*cos(3*x);
» plot(y)
Функція plot(X,Y,S) аналогічна до команди plot(X,Y), однак тип лінії графіка можна задавати за допомогою рядкової константи S.
Значеннями константи S можуть бути такі символи (табл.5.1).
Таблиця 5.1. Символи
Колір лінії |
|
||||||||||||||||||||||
Y |
М |
С |
R |
G |
В |
W |
К |
|
|||||||||||||||
Жовт. |
Фіол. |
Голуб. |
Червон. |
Зел. |
Синій |
Білий |
Чорн. |
|
|||||||||||||||
Тип точки |
|||||||||||||||||||||||
. |
0 |
+ |
* |
S |
D |
V |
A |
< |
> |
P |
H |
||||||||||||
точ- ка |
коло |
плюс |
зірка |
квад- рат |
ромб |
три- кут- ник униз |
три- кут- ник уверх |
три- кут- ник уліво |
три- кут- ник управо |
п’яти- кутник |
шести- кутник |
||||||||||||
Тип лінії |
|
||||||||||||||||||||||
- |
: |
-. |
-- |
|
|||||||||||||||||||
Суцільна |
Подвійний пунктир |
Штрих-пунктир |
Штрих |
|
|||||||||||||||||||
Отже, за допомогою рядкової константи можна змінювати колір лінії, задавати вузлові точки різними значками і змінювати тип лінії графіка.
Якщо немає посилання на колір ліній і точок, то він буде вибираний автоматично з таблиці кольорів (білий вилучений). Якщо ліній більше шести, то вибір кольорів повторюється. Для монохромних систем лінії виокремлювані стилем.
Нижче наведено приклад побудови графіків трьох функцій з різним стилем кожної з них.
» x=-2*pi:0.1*pi:2*pi;
» yl=sin(x);
» y2=sin(x).^2;
» y3=sin(x).^3:
» plot(x,yl,'-m',x,y2,'-.+r',х,у3,'--ok')
Тут графік функції y1 побудований суцільною фіолетовою лінією, графік у2 – штрих пунктирною лінією з крапками у вигляді знака «плюс» червоного кольору, а графік уЗ – штриховою лінією з кружечками чорного кольору.
Створення масивів даних для тривимірної графіки. Перш ніж описувати команди plot3, розглянемо різні команди побудови поверхонь. За допомогою Matlab можна рисувати поверхні. Для цього є достатньо команд, які можна легко використовувати, наприклад: meshgrid, surfc, meshc, peaks. Звичайно, можна застосовувати і команду patch.
Тривимірні поверхні, як звичайно описують функцією двох змінних z(x, у). Побудова тривимірних графіків потребує не просто задання векторів х і у, та визначення двовимірних масивів – матриць. Для їхнього створення слугує функція meshgrid, яку головно використовують сумісно з функціями побудови графіків тривимірних поверхонь. Функцію meshgrid записують так:
[X,Y] = meshgrid(x) – аналогічна до [X,Y] = meshgrid(x,x);
[X,Y,Z] = meshgrid(x,y,z) – повертає тривимірні масиви, які використовують для обчислення функцій трьох змінних і побудови тривимірних графіків;
[X,Y] = meshgrid(x,y) – перетворює область, задану векторами х і у, у масиви X і Y, які можуть бути використані для обчислення функції двох змінних і побудови тривимірних графіків. Рядки масиву X є копіями вектора х; а стовпці Y – копіями вектора у.
Команда meshgrid створює координати (x,y), які використовують для утворення z-координати.
[X,Y] = meshgrid(-8:.5:8);
R = sqrt(X.^2 + Y.^2) + eps;
Z = sin(R)./R;
mesh(X,Y,Z)
Унаслідок виконання описанихвище дій можна отримати поверхню.
Рис. 5.9. Поверхня, створена командою meshgrid
За допомогою сіткоподібних графіків з заданим функціональним заповненням поверхні можна зобразити найліпше. Команди, які їх викликають містять слово mesh. Ці команди такі:
mesh(X,Y,Z,C) – виводить у графічне вікно сіткову поверхню Z(X,Y) з кольорами вузлів поверхні, які задані масивом С;
mesh(X,Y,Z) – аналог попередньої команди при C=Z. У цьому випадку використовують функціональне заповнення, за якого колір заданий висотою поверхні.
Можливі також форми команди mesh(x,y,Z), mesh(x,y,Z,C), mesh(Z) і mesh(Z,C).
Система MATLAB має декілька графічних функцій, які повертають матричний образ поверхні. Наприклад, функція peaks(N) повертає матричний образ поверхні з низкою піків і западин.
Інколи графік поверхні доцільно об'єднати з контурним графіком її проекції на площину, розташовану під поверхнею. Для цього використовують команду meshc. Команда meshc(...) – аналогічна до mesh(...), однак, крім графіка поверхні, дає зображення її проекції у вигляді ліній одного рівня.
Уявлення про поверхні можна отримати з сіткових графіків, які використовують функціональне заповнення комірок. Наприклад, колір заповнення поверхні z(x, у) можна задати згідно з висотою z поверхні, вибравши для малих висот темні тони, а для великих – світлі. Для побудови таких поверхонь використовують команди класу surf (...):
surf (X, Y, Z, С) – будує кольорову параметричну поверхню за даними матриць X, Y и Z з кольором, що заданий масивом С;
surf(X,Y,Z) – аналогічна до попередньої команди, де C=Z, так що колір задається висотою тої чи іншої комірки поверхні;
surf(x,y,Z) і surf(x,y,Z,C) з двома векторними аргументами х і у – вектори х і у заміняють перші два матричні аргументи і повинні мати довжини length(x)=n і length(y)=m, де [m,n]=size(Z). Тут вершини областей поверхні задані трьома координатами (x(j), y(i), Z(i,j)). Зазначимо, що х відповідає стовпцям Z, а у – рядкам;
surf(Z) і surf(Z,C) використовують х = 1:n і у = 1:m. Тут висота Z – однозначно визначена функція, задана геометрично прямокутною сіткою;
surfc(...) – аналогічна до команди surf, однак забезпечує додаткову побудову контурного графіка проекції фігури на опорну площину.
Побудова графіків поверхонь. Команда plot3(...) є аналогом команди plot (...), однак належить до функції двох змінних z(x, у). Вона будує аксонометричне зображення тривимірних поверхонь і має різні форми.
Функція plot3(x,y,z) будує масив точок, заданих векторами х, у і z, з’єднує їх відрізками прямих.
Функція plot3(X,Y,Z), де X, Y, Z – три матриці однакового розміру, будує точки з координатами X(i.:), Y(i,:) і Z(i,:) і з’єднує їх відрізками прямих. Розглянемо побудову тривимірної поверхні, яку описує функція z(х, у)=х^2+у^2.
» [X,Y]=meshgrid(-3:0.15:3);
» Z=X.^2+Y. ^2;
» plot3(X,Y,Z)
Функція plot3 (X, Y, Z, S) – забезпечує побудови, аналогічні до наведених нижче але зі специфікацією стилю лінії і точок. Нижче в прикладі цю команду застосовано для побудови поверхні колами.
» [X.Y]-meshgrid([-3:0.15:3]):
» Z=X.^2+Y.^2;
» plot3(X,Y,Z,'o')
Функція plot3(xl, yl, zl, sl,х2,у2,z2, s2, хЗ,уЗ,z3,s3,...) будує на одному рисунку графіки декількох функцій zl(xl ,yl), z2(x2,y2) і так далі зі специфікацією ліній і маркерів кожної з них.
» [X,Y]=meshgrid([-3:0.15:3]);
» Z=X.^2+Y.^2;
» plot3(X,Y,Z,'-k',Y,X,Z,'-k')
