Задачи графічних змін у додатках моделювання з допомогою ЭВМ
Формули (2.1) і (2.2) так можна трактувати подвійно: або зберігається точка змінюється координатна система (рис. 2) — у разі довільна точка М залишається тієї ж, змінюються лише її координати (x, у) — (x*, y*), або змінюється точка й тепло зберігається координатна система (рис. 3) — у разі формули (2.1) і (2.2) задають відображення, переводящее довільну точку М (x, у) в точку М* (x*, у… Читати ще >
Задачи графічних змін у додатках моделювання з допомогою ЭВМ (реферат, курсова, диплом, контрольна)
1. Запровадження. .. .. .. .. .. .. .. .. ... .
.. .. .. .. .. .. .. ... 3 2. Афинные перетворення на площині. .. .. .. .. .. .
.. .. .. .. .4 3. Однорідні координати точки. .. .. .. .. .. ... .
.. .. .. .. .. 9 4. Аффинные перетворення на просторі. .. .. .. ... .
.. .. ... 15 5. Укладання. .. .. .. .. .. .. .. .. ... .
.. .. .. .. .. .. .. .23 6. Список літератури. .. .. .. .. .. .. .. .. .
.. .. .. .. .. ... 24.
1.
Введение
.
Висновок зображення на екран дисплея й різноманітні дії з нею, в тому однині і візуальний аналіз, вимагає від користувача достатньої геометричній грамотності. Геометричні поняття, формули і факти, що стосуються, передусім, до плескатому і тривимірному випадків, грають у завданнях комп’ютерної графіки особливу роль. Геометричні міркування, підходи і ідеї на поєднанні з постійно дедалі ширшими можливостями обчислювальної техніки є невичерпним джерелом істотних рухів по дорозі розвитку комп’ютерної графіки, її ефективного використання їх у наукових установ та інших дослідженнях. Часом навіть найпростіші геометричні методики забезпечують помітні поступу окремих етапах рішення великий графічної задачи.
Насамперед, слід зазначити, що особливості використання геометричних понять, формул і фактів, як і добре відомих, і нових складніших, вимагають особливого погляду неї і іншого осмысления.
Тепер потрібно розглянути графічну реалізацію 3-х мірних об'єктів, т.к. вона міцно пов’язана зі властивостями об'єктів. Система координат екрана, як відомо, є двумерной, на екрані можлива эмуляция 3-х мірною системи координат, расположеной найзручніше для подальших розрахунків. Надалі всі об'єкти вважаються 3-х розміреними, а відображення здійснюється з допомогою набору функцій розробленої библиотеки.
Однією з прикладів реалізації цього підходу може такий. Кожен об'єкт, в найпростішому разі, є паралелепіпед і зберігається у пам’яті розмірами за трьома осях. Також у його структуру входить набір спеціальних точок, відповідальних за з'єднання блоків у просторі. У загальному разі, це точка прив’язки і вихідна точка. У цілому нині, виходить гнучка графічна модель, що дозволяє змінювати розміри блоків практично миттєво. Отже, з’являється можливість здійснити найпростіший графічний редактор тривимірних об'єктів. У цьому все блоки будуть змінюватися, створюючи загальну графічну модель. Маючи працювати з графічної моделлю, можна реалізувати обертання сукупності тривимірних об'єктів. Це здійснюється з допомогою набору функцій, що виробляють обертання об'єктів. Для обертання кожного об'єкта існує алгоритм, який розбиває об'єкт (в найпростішому разі паралелепіпед) на набір точок, кожна з яких обертається, використовуючи найпростіші перетворення на просторі шляхом множення матриці радиус-вектора на матриці змін у просторі. Розглянемо докладніше даний підхід з формальної стороны.
2. Афинные перетворення на плоскости.
У комп’ютерній графіці усе, що належить до двумерному випадку прийнято позначати символом (2D) (2-dimention).
Припустимо, що у площині введена прямолінійна координатна система. Тоді кожній точці М ставлять у відповідність упорядкована пара чисел (x, у) її координат (рис. 1). Вводячи на площині ще одне прямолинейную систему координат, ми ставимо за відповідність тієї ж точці М інше подружжя чисел — (x*, y*).
Рис. 1.
Перехід від однієї прямолінійною координатної системи на площині до інший описується такими соотношениями:
x* = ?x + ?y +?,.
(2.1) y* = ?x + ?y + ?,.
(2.2).
где ?, ?, ?, ?,? — довільні числа, пов’язані неравенством:
? ?
' 0.
(2.3).
? ?
Формули (2.1) і (2.2) так можна трактувати подвійно: або зберігається точка змінюється координатна система (рис. 2) — у разі довільна точка М залишається тієї ж, змінюються лише її координати (x, у) | (x*, y*), або змінюється точка й тепло зберігається координатна система (рис. 3) — у разі формули (2.1) і (2.2) задають відображення, переводящее довільну точку М (x, у) в точку М* (x*, у*), координати якої визначені у тієї ж координатної системе.
X*.
Y*.
Рис. 2.
Рис. 3.
Надалі, формули (2.1) і (2.2) розглядатимуться зазвичай, що у заданої системі прямолінійних координат перетворюються точки плоскости.
У аффинных перетвореннях площині особливу роль грають кілька вжных окремі випадки, мають добре прослеживаемыегеометрические характеристики. При дослідженні геометричного сенсу числових коэффицентов в формулах (2.1) і (2.2) тих випадків зручно вважати, що задана система координат є прямокутної декартовой.
1. Поворот навколо початковій крапки над кут? (рис. 4) описується формулами:
x* = x co? — y sin?,.
(2.3) y* = x sin? — y cos?.
(2.4).
2. Розтягнення (стиснення) вздовж координатних осей можна поставити так:
x* = ?x,.
(2.5) y* = ?y,.
(2.6).
? > 0,? > 0.
(2.7).
Растяжение (стиснення) вздовж осі абсцис забезпечується за умови, що? > 1 (? < 1). На рис. 5? '? > 1. 3. Віддзеркалення (щодо осі абсцис) (рис. 6) задається з допомогою формул:
x* = x,.
(2.8) y* = -y.
(2.9).
4. На рис. 7 вектор перенесення ММ* має координати ?, ?. Перенесення забезпечує соотношения:
x* = x + ?,.
(2.10) y* = y + ?.
(2.11).
Рис. 4.
Рис. 5.
Рис. 6.
Рис. 7.
Вибір цих чотирьох окремі випадки визначається двома обстоятельствами.
1. І з наведених вище перетворень має простий і наочний геометричний сенс (геометричних змістом наділені й постійні числа, що входять до наведені формулы).
2. Як знаємо з курсу аналітичної геометрії, будь-яке перетворення виду (2.1) можна уявити, як послідовне исполнение.
(суперпозицію) найпростіших перетворень виду 1 — 4 (або частини цих преобразований).
Отже, справедливо таке важливе властивість аффинных перетворень площині: будь-яке відображення виду (2.1) можна описати при допомоги відбиття, поставлених формулами (2.3) — (2.11).
Для ефективне використання цих відомих формул в завданнях комп’ютерної графіки зручнішою був частиною їхнього матрична запис. Матриці, відповідні випадків 1 — 3, будуються легко і мають відповідно наступний вид:
co? sin? ? 0 1 0.
— sin? co? 0? 0 -1.
3. Однорідні координати точки.
Нехай М — довільна точка площині з координатами x і в, обчисленими щодо заданої прямолінійною координатної системи. Однорідними координатами цієї точки називається будь-яка трійка одночасно не рівних нулю чисел х1, х2, х3, що з заданими числами x і в такими соотношениями:
x1 / x3 = x, x2 / x3 = y.
(3.1).
За позитивного рішення завдань комп’ютерної графіки однорідні координати зазвичай вводяться так: довільній точці М (x, у) площині ставлять у відповідність точка МЕ (x, у, 1) в пространстве.
Слід зазначити, що довільна точка на прямий, що з'єднує початок координат, точку Про (0, 0, 0), до точки МЕ (x, у, 1), может бути задана трійкою чисел виду (hx, hy, h).
Вважатимемо, що h = 0. Вектор з координатами hx, hy, h є котрі спрямовують вектором прямий, що з'єднує точки Про (0, 0, 0) і МЕ (x, у, 1). Ця пряма перетинає площину z = 1 у точці (x, у, 1), яка однозначно визначає точку (x, у) координатної площині ху.
Тим самим було між довільній точкою з координатами (x, у) і безліччю трійок чисел виду (hx, hy, h), h = 0, встановлюється взаємно однозначне відповідність, що дозволяє вважати числа hx, hy, h новими координатами цієї точки.
Широко використовувані в проективної геометрії однорідні координати дозволяють ефективно описувати звані невласні елементи (по суті, ті, якими проектна площину відрізняється від звичної евклідовій плоскости).
У проективної геометрії для однорідних координат прийнято таке обозначение:
x: у: 1.
(3.2).
или, більш общо,.
х1: х2: х3 (3.3).
(здесь неодмінно потрібно, щоб числа х1, х2, х3 одночасно у нуль не обращались).
Застосування однорідних координат виявляється зручним вже за часів рішенні найпростіших задач.
Розглянемо, наприклад, питання, пов’язані зі зміною масштабу. Якщо пристрій відображення працює тільки з цілими числами (або якщо потрібно працювати тільки з цілими числами), то тут для довільного значення h (наприклад, h = 1) точку з однорідними координатами (0.5, 0.1, 2.5) уявити неможливо. Проте за розумному виборі h можна домогтися, щоб координати цієї крапки було цілими числами. Зокрема, при h = 10 для аналізованого прикладу маємо (5, 1, 25).
Розглянемо інший випадок. Щоб результати перетворення не призводили до арифметичному переповненню для точки з координатами (80 000, 40 000, 1000) можна взяти, наприклад, h = 0.001. Через війну одержимо (80, 40, 1).
Наведені приклади показують корисність використання однорідних координат під час проведення розрахунків. Проте основна мета запровадження однорідних координат у комп’ютерній графіці був частиною їхнього безсумнівну зручність стосовно геометричних преобразованиям.
З допомогою трійок однорідних координат і матриць третього порядку можна описати будь-яке аффинное перетворення плоскости.
Вважаючи, h = 1, порівняємо дві записи:
?? 0.
(x * y * 1) = (x y 1)? ? 0 (3.4).
?? 1.
Цілком ймовірно, що відбулося після перемножения висловів, котрі стоять у правої частини останнього співвідношення, ми матимемо формули (2.1) і (2.2) й вірне числове рівність 1 = 1. Тим самим було порівнянні записи вважатимуться равносильными.
Елементи довільній матриці аффинного перетворення не несуть у собі явно вираженого геометричного сенсу. Поэтомучтобы реалізувати те чи інше відображення, тобто знайти елементи відповідної матриці по заданому геометричному опису, необхідні спеціальні прийоми. Зазвичай побудова цієї матриці відповідно до складністю поставленого завдання і з описаними вище приватними випадками рзбивают сталася на кілька этапов.
На кожному з етапів пишеться матриця, відповідна тому чи іншому з виділених вище випадків 1 — 4, які мають добре вираженими геометричними свойствами.
Выпишнм відповідні матриці третього порядка.
А. Матриця обертання (rotation).
co? sin? 0.
[ R ] = -sin? co? 0.
(3.5).
0 0 1.
Б. Матриця растяжения-сжатия (dilatation).
? 0 0.
[ D ] = 0? 0.
(3.6).
0 0 1.
У. Матриця відображення (reflection).
1 0 0.
[ M ] = 0 -1 0.
(3.7).
0 0 1.
Р. Матриця перенесення (translation).
1 0 0.
[ T ] = 0 1 0.
(3.8).
?? 1.
Розглянемо приклади аффинных перетворень плоскости.
Приклад 1. Побудувати матрицю повороту навколо точки, А (a, b) на кут? (рис. 9).
Рис. 8.
1-ї крок. Перенесення на вектор — А (-a, -b) для усунення центру повороту з початком координат;
1 0 0.
[ T-A ] = 0 1 0.
(3.9).
— ab 1.
матрица відповідного преобразования.
2-ї крок. Поворот на кут ?;
co? sin? 0.
[ R? ] = -sin? co? 0.
(3.10).
0 0 1.
матрица відповідного преобразования.
3-й крок. Перенесення на вектор, А (a, b) повернення центру повороту у давнє положение;
1 0 0.
[ TA ] = 0 1 0.
(3.11) a b 1.
матрица відповідного преобразования.
Перемножимо матриці у тому порядку, як вони выписаны:
[ T-A ] [ R? ] [ TA ].
Через війну одержимо, що дані перетворення (в матричної записи) виглядатиме наступним образом:
co? sin? 0 (x* y* 1) = (x y 1) -sin? co ?
0 (3.12).
— a co? + b sin? + aa sin? — b co? + b 1.
Елементи отриманої матриці (особливо у останньої рядку) негаразд легко запам’ятати. У той самий час кожна гілка трьох перемножаемых матриць по геометричному опису відповідного відображення легко строится.
Приклад 2. Побудувати матрицю розтяги з коэффицентами розтяги? вздовж осі абсцис і? вздовж осі ординат і з центром у точці А (a, b).
1-ї крок. Перенесення на вектор -А (-a, -b) для суміщення центру розтяги з початком координат;
1 0 0.
[ T-A ] = 0 1 0.
(3.13).
— ab 1.
матрица відповідного преобразования.
2-ї крок. Розтягнення вздовж координатних осей з коэффицентами? і? відповідно; матриця перетворення має вид.
? 0 0.
[ D ] = 0? 0.
(3.14).
0 0 1.
3-й крок. Перенесення на вектор, А (a, b) повернення центру розтяги у давнє становище; матриця відповідного преобразования:
1 0 0.
[ TA ] = 0 1 0.
(3.15) a b 1.
Премножив матриці у тому порядке.
[ T-A ] [ D ] [ TA ], одержимо окончательно.
? 0.
(x* y* 1) = (x y 1) 0 ?
0 (3.16).
(1 — ?)a (1 — ?)b.
Міркуючи таким чином, тобто розбиваючи запропоноване перетворення на етапи, підтримувані матрицями [ R ], [ D ], [ M ], [ T ], можна побудувати матрицю будь-якого аффинного перетворення з його геометричному описанию.
4. Аффинные перетворення на пространстве.
Розглянемо тривимірний випадок (3D) (3-dimension) й одразу введемо однорідні координаты.
Потупая аналогічна тій, як це було зроблено на розмірності два, замінимо координатну трійку (x, y, z), задающую крапку у просторі, на четвірку чисел.
(x y z 1) чи, більш загально, на четверку.
(hx hy hz), h = 0.
Кожна точка простору (крім початковій точки Про) то, можливо задана четвіркою одночасно не рівних нулю чисел; ця четвірка чисел визначено однозначно з точністю до загального множителя.
Запропонований перехід до нового способу завдання точок дає можливість скористатися матричної записом й більш складних тривимірних задачах.
Будь-яке аффинное перетворення на тривимірному просторі то, можливо представленно як суперпозиции обертань, розтягань, відображень і переносів. Тож цілком доречно спочатку докладно описати матриці саме цих перетворень (ясно, що в разі порядок матриць може бути дорівнює четырем).
А. Матриці обертання в пространстве.
Матриця обертання навколо осі абсцис на кут ?:
1 0 0 0.
0. co? sin? 0.
0 -sin? co? 0.
0 0 0 1.
Матриця обертання навколо осі ординат на кут ?:
co? 0 -sin? 0.
0 1 0 1 sin? 0 co? 0.
0 0 0 1.
Матриця обертання навколо осі аппикат на кут ?:
co? sin? 0 0.
— sin? co? 0 0.
0 0 1 0.
0 0 0 1.
Корисно звернути увагу до місце знака «- «у кожному із трьох наведених матриц.
Б. Матриця растяжения-сжатия:
? 0 0 0.
0? 0 0.
0 0? 0.
0 0 0 1.
где.
? > 0 — коефіцієнт розтяги (стискування) вздовж осі абсцисс;
? > 0 — коефіцієнт розтяги (стискування) вздовж осі ординат;
? > 0 — коефіцієнт розтяги (стискування) вздовж осі аппликат.
У. Матриці отражения.
Матриця відображення щодо площині ху:
1 0 0 0.
0 1 0 0.
0 0 -1 0.
0 0 0 1.
Матриця відображення щодо площині yz:
— 1 0 0 0.
0 1 0 0.
0 0 1 0.
0 0 0 1.
Матриця відображення щодо площині zx:
1 0 0 0.
0 -1 0 0.
0 0 1 0.
0 0 0 1.
Р. Матриця перенесення (тут (?, ?, ?) — вектор переноса):
1 0 0 0.
0 1 0 0.
0 0 1 0.
?? ? 1.
Як і двовимірному разі, все виписані матриці невырождены.
Наведемо важливий приклад побудови матриці складного перетворення по його геометричному описанию.
Приклад 3. Побудувати матрицю обертання на кут? навколо прямий L, що проходить через точку, А (a, b, з) і має спрямовує вектор (l, m, n). Можна вважати, що спрямовує вектор прямий є одиничним: l2 + m2 + n2 = 1.
На рис. 10 схематично показано, матрицю якого перетворення потрібно найти.
L.
X.
Рис. 10.
Рішення сформульованої завдання розбивається сталася на кілька кроків. Наведемо послідовно кожен із них.
1-ї крок. Перенесення на вектор -А (-a, -b, -з) з допомогою матрицы.
1 0 0 0.
0 1 0 0.
0 0 1 0.
— ab -з 1.
Внаслідок цього преноса ми домагаємося здобуття права пряма L проходила через початок координат.
2-ї крок. Поєднання осі аппликатс прямий L двома поворотами навколо осі абсцис і осі ординат.
1-ї поворот — навколо осі абсцис на кут? (підлягає визначенню). Щоб знайти цей кут, розглянемо ортогональную проекцію L' вихідної прямий L на площину X = 0 (рис. 11).
L' L ?
Y.
Рис. 11.
Спрямовує вектор прямий L' визначається просто — він равен.
(0, m, n).
Звідси відразу ж потрапити випливає, что.
co? ' n / d, sin? = m / d,.
(4.10).
где.
d = m2 + n2.
(4.11).
Відповідна матриця обертання має наступний вид:
1 0 0 0.
0 n/d m/d 0.
0 -m/d n/d 0.
0 0 0 1.
Під впливом перетворення, описуваного цієї матрицею, координати вектора (l, m, n) зміняться. Підрахувавши їх, внаслідок получим.
(l, m, n, 1)[ Rx ] = (l, 0, d, 1).
(4.13).
2-ї поворот навколо осі осі ординат на кут ?, визначається співвідношеннями сos? = l, sin? = -d.
(4.14).
Cоответствующая матриця обертання записується наступного виде:
l 0 d 0.
0 1 0 0.
— d 0 l 0.
0 0 0 1.
3-й крок. Обертання навколо прямий L на поставлене кут ?.
Так ка тепер пряма L збігаються з віссю аппликат, то відповідна матриця має наступний вид:
co? sin? 0 0.
— sin? co? 0 0.
0 0 1 0.
0 0 0 1.
4-й крок. Поворот навколо осі ординат на кут -?.
5-ї крок. Поворот навколо осі абсцис на кут -?.
Проте обертання у просторі некоммутативно. Тому порядок, в якому проводяться обертання, є дуже существенным.
6-ї крок. Перенесення на вектор, А (a, b, c).
Перемноживши знайдені матриці гаразд їх побудови, одержимо таку матрицу:
[ T ][ Rx ][ Ry ][ Rz ][ Ry ]-1[ Rx ]-1 [ T ]-1.
Випишемо оцінку, вважаючи для простоти, що вісь обертання ходить через початкову точку.
l2 + co ?(1 — l2) l (1 — co ?)m + n sin? l (1 — cos.
?)n — m sin? 0 l (1 — co ?)m — n sin? m2 + co ?(1 — m2) m (1 — co ?)n + lsin? 0 l (1 — co ?)n + m sin? m (1 — co ?)n — lsin? n2 + cos.
?(1 — n2) 0.
0 0.
0 1.
Розглядаючи приклади такого роду, ми отримувати внаслідок невырожденные матриці вида.
?1 ?2 ?3 0.
?1 ?2 ?3 0.
?1 ?2 ?3 0.
?? ? 1.
З допомогою таких матриць можна перетворити будь-які плоскі і просторові фигуры.
Приклад 4. Потрібна піддати заданому аффинному перетворенню опуклий многогранник.
І тому спочатку по геометричному опису відображення знаходимо його матрицю [ A ]. Помічаючи далі, що довільний опуклий багатогранник однозначно задається набором всіх своїх вершин Vi (xi, yi, zi), і = 1,…, n, Будуємо матрицу.
x1 y1 z1 1.
V =. .. .. .. ... (4.18) xn yn zn 1.
Піддаючи цей набір перетворенню, описуваному знайденою невырожденной матрицею четвертого порядку, [ V ][ A ], ми маємо набір вершин нового опуклого багатогранника — образу вихідного (рис. 12).
Z.
Y.
X.
Рис. 11.
5.
Заключение
.
З огляду на вищеописані принципи, було розроблено програму моделювання синтезу металорізальних верстатів, яка наочно демонструє залежність компонування верстата від форми оброблюваної поверхні через код компонування, і навіть можливість побудови моделі верстата зі стандартних вузлів для наступної оцінки компонування. У виду те, що ця програма розроблялася як дослідження, у ній лише наочно демонструється модель верстата в обробці довільній поверхности.
Програма побудовано основі засад объектно-ориентированного програмування (ОВП). Такий підхід визнаний оптимальним для даної завдання з огляду на те, що модель верстата будується з урахуванням компоновочного коду. При реалізації була спочатку розглянута ланцюжок вузлів, що становить верстат. Це спричинило труднощам і незручності реалізації відображення 3-х мірною моделі у эмулированном графічному просторі. Тому була реалізована концепція, розглядає верстат, як «дерево» об'єктів, з те, що одне із вузлів верстата, саме житло, є нерухомим і зафіксованим жорсткої прив’язкою до системи координат. Таким чином, отримана модель являла собою об'єкт, з яких виходили дві «галузі» объектов.
Принципи ОВП дозволили створити базовий клас, з яких були отримані дочірні класи для станини та інших вузлів. Кожен об'єкт инкапсулировал свої властивості і «бачив» лише геометричні розміри і координати, у які він може бути поміщений, у результаті модель вийшла гибкой.
6. Список використовуваної литературы.
1. Шишкін Є. У., Боресков А. У. Комп’ютерна графіка. М.: Диалог-МИФИ,.
1995. — 288 з., ил.
2. Вайсберг А. У., Гриценко М. Є. Формування структури верстата на ранніх стадіях проектування. — Точність автоматизованих виробництв (ТАП — 97). Збірник статей міжнародної науковотехнічній конференції. Пенза, 1997., з. 52 — 53.
———————————- M (x, y).
X.
Y.
Y.
X.
M 0*.
Y.
X.
M.
M*.
Y.
X.
M.
M*.
Y.
X.
M*.
M.
Y.
X.
M.
M*.
Y.
X.
M.
M*.
Y.
X.
А.
(4.2).
[ Ry ] =.
(4.1).
[ Rx ] =.
[ Rz ] =.
(4.3).
[ D ] =.
(4.4).
[ Mz ] =.
(4.5).
[ Mx ] =.
(4.6).
[ My ] =.
(4.7).
[ T ] =.
(4.8).
[ T ] =.
Z.
Y.
(4.9).
Z.
X.
[ Rx ] =.
(4.12).
[ Ry ] =.
(4.15).
[ Rz ] =.
(4.16).
[ А ] =.
(4.17).