Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Коссак графіка.doc
Скачиваний:
2
Добавлен:
01.07.2025
Размер:
6 Мб
Скачать
☆

5.2.4 Примітиви

Лінія. У разі малювання ліній з використанням команди plot треба знати, чи вона є повністю в інтервалі, який хочемо зобразити в Matlab. Нехай потрібно відобразити лінію ΑΒ з точками A(3,4) і B(6, 7). Єдине, що треба зробити – надрукувати в командному вікні: plot([3 6],[4 7]). Є також інший шлях: patch([3 6],[4 7],[0 0 0]).

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

Можна також застосувати алгоритм Брезенхема. Звичайно, це може призвести до непрердбачених проблем. Унаслідок автоматичного регулювання осями Matlab не дає більш працювати з пік селями. Якщо є бажання, то можна дати користувачу ілюстрацію піксельного рисунка У цьому випадку, якщо треба працювати з пікселями, ліпше використовувати іншу мову програмування.

Коло, еліпс, багатокутник. Для того, щоб намалювати коло, немає готової функції, тому, насправді рисують багатокутник з великою кількістю вершин, які наближатимуть нас до кола. Інколи достатньо використати 40 вершин.

Передусім треба вирішити, який тип буде використано для координат точок. Ліпше працювати з параметричним рівнянням кола, яке задається рівняннями:

, тут і – центр кола з радіусом .

Розібємо інтервал [0,2π] на 40 вузлів, набравши в командному вікні рядок t = 0: 2*pi/40:2*pi; або використавши команду linspace(0,2*pi,50), що виконує ті ж дії.

Наступний крок – обчислимо координати точок еліпса попередньо задавши фіксовані значення .

x = r * sin( t ) + xo; y = r * cos( t ) + yo,

На завершення використаємо команду plot для створення відповідної форми. Після натискання на клавішу enter відкриється нове вікно, яке буде містити коло.

Як зазначено, форма залежить від осей. Для створення кола треба додати команду axis equal.

Якщо потрібно нарисувати круг і замалювати кольором, замість команди plot можна використати команду patch. Наприклад, якщо треба нарисувати круг зеленого кольору, достатньо записати patch( x,y,[0 1 0]).

Для спрощення процесу створення низки кіл, достатньо створити М-функцію, яка вхідними параметрами матиме центр кола і радіус. Вихідними параметрами будуть координати точок кола.

Створення еліпса аналогічне до створення кола. Єдина різниця полягає в параметричних рівняннях еліпса. Зразок програми для створення еліпса наведено в розділі 1.

Багатокутник створюютьнарисуванням його ліній за допомогою команди plot. Якщо багатокутник потрібно заповнити, використовують команду patch.

3D об’єкти. Для рисування 3D об’єктів застосовують команду patch. Опишимо цю команду детальніше. Щоб нарисувати одиничний куб, треба виконати такі дії. Спочатку записати вершини 3D об’єкта в формі масиву, де кожний рядок має три стовпці, які відповідають їхнім координатам. Кожна вершина має порядковий номер. Наприклад, вершина з координатами (0,0,0) має порядковий номер -1, а (0,1,1) – номер 8. Після цього створюють ще одну таблицю зв’язку, яка містить вектор порядкових номерів вершин, що належать кожній грані куба.

Нехай треба нарисувати два одиничні куби, де перший з вершиною в початку координат (0,0,0), порядковий номер якої – 1, і має спільну вершину з другим кубом у точці з координатами (1,1,1), порядковий номер якої 2, для другого куба. Для цього запишемо такий М-файл.

vertex_matrix = [ 0 0 0;1 0 0;1 1 0;0 1 0;... % 1

0 0 1;1 0 1;1 1 1;0 1 1]; % 2

faces_matrix = [1 2 6 5;2 3 7 6;3 4 8 7;... % 3

1 5 8; 1 2 3 4; 5 6 7 8]; % 4

patch('Vertices',vertex_matrix,'Faces',faces_matrix) % 5

hold on % 6

v = [ 1 1 1;2 1 1;2 2 1;1 2 1;... % 7

1 1 2;2 1 2;2 2 2;1 2 2]; % 8

patch('Vertices',v,'Faces',faces_matrix, 'FaceVertexCData'... % 9

,[1 0 0],'FaceColor','flat') % 10