Книга: Компьютерная графика, методичка №2
Описание
Характеристики книги
Список файлов
- Компьютерная графика, методичка №2
- img354 коррекция.jpg 593,43 Kb
- img355 коррекция.jpg 635,78 Kb
- img356 коррекция.jpg 608,8 Kb
- img357 коррекция.jpg 659,11 Kb
- img358 коррекция.jpg 636,7 Kb
- img359 коррекция коррекция.jpg 672,53 Kb
- img360 коррекция.jpg 692,6 Kb
- img361 коррекция.jpg 846,99 Kb
- img362 коррекция.jpg 830,15 Kb
- img363 коррекция.jpg 763,42 Kb
- img364 коррекция.jpg 727,19 Kb
Распознанный текст из изображения:
-2-
ЦЕЛЬ РАБОТЫ: Освоить работу с двумерными преобразованиями координат.
ЗАДАЧА: создать программу, формирующую заданное динамическое изображение. Преобразования координат должны выполняться
1. Преобразование координат на плоскости Из всех возможных линейных преобразований координат особую роль играют четыре
следующих частных случая, с помощью которых можно описать любое преобразование или
движение объекта на плоскости:
1. Поворот вокруг начала координат на угол <р..Если ~р > О, то поворот совершается против
часовой стрелки, если <р < О, то — по часовой.
И. Растяжение (сжатие) Вдоль координатных Осеи, Если Й„й <1, то происходит сжатие. Если
й„Ж, >1, то происходит растяжение. Если й, = й,, то происходит пропорциональное изменение
линейных размеров объекта.
(1.2)
Рис. 2. Растяжение
прямоугольника при
сов(р) яп(р) О
[А1 = — яп(р) сов(р) О
О 0 1
А„О 0
и=о ~,о
О 0 1
Рис. 1. Поворот
на угол (р вокруг
начала координат
Распознанный текст из изображения:
Ш. Отражение (может выполняться относительно начала координат и координатных осей).
+1 0 0 ~М1= О +1 О ~1.З1 О 0 1 Рнс. 3. Отражение относительно осн абсцисс 1У. Параллельный перенос
1 О О И=О 1 О ~Й йу 1 Рнс. 4. Перенос при 4Ьъ-"1ф Если А — обычная ~собственная) точка плоскости с координатами х и у, то ее однородными координатами можно назвать любую тройку чисел~,"„~,, ~,) „связанных с х и у следующими соотношениями: — =х, — =у,с~~ ФО. 41 ~2 4 4' Обычно используют нормированные однородные координаты, когда ~,", =1. При однородные координаты любой точки ~х, у~ получаются простым добавлением третьей единичной координаты: ~х, у, 1).. 2. Программирование двумерных преобразований координат Типы данных и процедуры, используемые при построении преобразований координат удобно объединить в отдельном модуле и затем использовать его во всех программах. Ниже приводится листинг такого модуля таЖсея2В.рая.
Распознанный текст из изображения:
4
+ Модуль содержит объявления типов данных и подпрограмм, *
* необходимых для построения двумерных преобразований
* координат в матричной форме
******************+**************************+************** )
цп1г тагг1сез20;
1пгеггасе
гуре
//двумерный массив для представления матриц
//преобразований координат размером ЗхЗ
ТТгапягогт = аггау(0..2, 0..2) ой'ЭоцЬ1ер
//одномерный массив для представления матрицы
//однородных координат одной вершины
ТЧеггех = аггау(0..2) ой 0оиЬ1еу
//осуществляет преобразование координат вершин фигуры, переданных в массиве ч,
//с помощью матрицы Т: (Ч1):= (Ч) *(Т):
ргосес1цге Арр1уТгапяйогш(~аг Ч1 : аггау ог ТЧег~ехр
союзам Ч -: аггау ой ТЧеггех;
сопят.Т : ТТгапягогш)р
//Вычисляет матрицу общего преобразования Т, перемножая матрицы Т1 и Т2
//составляющих его преобразований
ргосес(цге СошЬ1пеТгапягогш(чаг Т '. ТТгапяЙогт;
сопряг. Т1, Т2 : ТТгапяйогш);
з.тр1етепгаГ1оп
//осуществляет преобразование координат вершин фигуры, переданных в массиве Ч, //с помощью матрицы Т: (Ч1):=(Ч)*(Т)
ргосес(цге Арр1уТгапяйогт(чаг Ч1 : аггау ой ТЧеггех;
сопяг Ч : аггау ой ТЧег~ех;
сопяг Т : ТТгапяйогт)у
1пгедег;
Распознанный текст из изображения:
-5-
Ьес.1п
//пройдем по всем вершинам фигуры
аког 1:= 0 г.о Н1дЬ(Ч) с(о ЬесгЫ
//вычислим и поместим в Р преобразованные координаты 1-ой вершины
аког ~ := О Го 2 с(о
Р[~] := 7[1, 0] * Т[0, ~] + Ч[~., 1] * Т[1, ~] + 7[3, 2] * Т[2,
//сохраним вычисленные координаты 1-й вершины в массиве Ч
Ч1 [1-] Рг
епс(г
//Вычисляет матрицу общего преобразования Т, перемножая матрицы Т1 и Т2
//составляющих его преобразований
ргосес(цге СотЬ1петгапзйоггп(айаг Т : ТТгапзйогт;
сопя~ Т1, Т2 : ТТгапзйоггп);
//временный буфер для хранения преобразования
Тгпр: ТТгапз йоггп,"
1п1едег;
//вычйслим 'и'-"п6местгим .в.Тшр матрицу общего преобразования
аког 1 := О ~о 2 с(о //пройдем по всем строкам
аког ] := 0 ~о 2 с(о //пройдем по всем столбцам
Тгпр[1, -]] := Т1[1, 0] * Т2 [О, ]] + Т1[1, 1] * Т2[1, д] +
Т1[1, 2] * Т2[2,
Т:= Тгпр;
епс];
3. Пример программы
В данном примере изображаются восемь треугольников, расположенных по кругу и
окрашенных в разные, постоянно меняющиеся цвета (рис. 5). Для того, чтобы получить такой
Распознанный текст из изображения:
-6- рисунок, треугольник А(140,10)В(120,80)С(160,30) восемь раз поворачивается вокруг точки 1:)(140,140) на угол р = —. 4
0
Рис. 5. Случайно меняющие цвет треугольники (разноцветные треугольники) цп1~ ~3п1~1у 1п~егХасе пзез К1пс(оказ, Меззадез,. ЯузУ~11з, С1аззез, Сгарп1оз, Соп1го1з, Гогов, Ма1одз, Кх~С1г1з, п~а1г1сез20р сопз~ //координаты точки О, вокруг которой будет происходить вращение треугольника Ох = 140р Оу = 140; Е1 = Р1 /4; //угол поворота, равен Пи/4 айаг //матрица однородных координат вершин треугольника АВС АВС : ахгау(0..2) ой ТЧег~ех = ((140, 10, 1), (120, 80, 1), (1бО, 80, 1)); //матрица перехода к системе координат с центром в точке 0 Т1 : Ттгапзйопп = (( 1, О, 0), ( О, 1, 0),
-Ву, 1)) Г //матрица поворота вокруг начала координат (заполняется до конца //в обработчике события ОпСгеа1е) К : Ттгапзйопп = ((1, О, 0),
Распознанный текст из изображения:
(О, 1, О),
(О, О, 1) );
//матрица перехода к исходной системе координат
Т2 : ТТгапзйогхп = (( 1, О, 0),
( О, 1, О),
(Эх, Эу, 1)) р
//матрица преобразования для поворота треугольника
//вокруг точки О
Т : ТТгапэхогхпу
Туре
ТГогхп1 = с1азз(ТГогш)
Т1хпег1: ТТппег;
ргосес(иге РогшСгеа1е(Яепс(ег: ТОЬ~ес1);
ргосес[иге ГогшРа1пх(Яепо(ег: ТОЬ~ес~);
ргосес(цге Т1хпег1Т1шег(Яепс(ег: ТОЬ~есХ);
ргхчахе
Ргх ~аде с(ес1ага11опз
рцЬ1'.с
( РиЬ1хс с1ес1ага~1опз
епс(у
айаг
Гогхп1 ТГогхп1 у
1хпр1ехпепхаххоп
(ЯР. *.РРМ)
//Обработчик.события' ОпСгеахе..Используется для инициализации данных
ргосес(цге ТГохт1. РогхпСгеа~е (ЯЕпбег: ТОЬ~есЬ);
Ьед1п
//заполним матрицу [Р.] для поворота ну угол Й1
В[0, 0] := соя(й1)у В[0, 1] := я1п(й1)у
В[1, О] := -з1п (й1); В[1, 1] := сов(х1);
//получим матрицу [Т] преобразования для поворота треугольника вокруг
//точки 0
СотЬ1пеТгапзйогш (Т, Т1, К)у //умножение матриц: [Т] = [Т1]*[В]
СотпЬ1пеТгапвйогхп (Т, Т, Т2); //умножение матриц: [Т] = [Т]*[Т2]
епс);
//Обработчик события ОпРахпх. Вызывается, когда необходимо перерисовать
//изображение на форме
ргосес(цге ТГогхп1.РогтРа1пх(Яепс(ег: ТОЬ)ес~)у
чаг
1пгедегр
хтрАВС : агхау[0..2] ой ТЧегхеху
с : ТСо1ог;
Ьеохп
//скопируем координаты вершин треугольника во временный массив
хог х := О хо 2 с(о 1шрЬВС[х] := ЛВС[х];
//будем поворачивать треугольник вокруг точки О на угол йх
//и рисовать его 8 раз
аког х := 1 1о 8 бо Ьедхп
//повернем треугольник
Арр1уТгапайогш(хшрЛВС, ~гпрЛВС, Т);
Распознанный текст из изображения:
//выберем случайный цвет для треугольника
с := ВЯВ(гапс(огп(255), гапс(отп(255), гапс(от(255))р
//нарисуем его в новом положении
х1ЬЬ Сапная с(о Ьед1п
//установим цвет для пера и кисти
Реп.Со1ог := су ВгизЬ.Со1ог := с;
//нарисуем треугольник
Ро1удоп ( [Роз.п1 (гоипс1 (1трЛВС [О, 01 ), гоцпс1 (~тпрАВС [О, 1] ) ),
Роз.п~ (гоапс((~трЛВС [1, 01 ), гоппс1 (~трЛВС [1, 11 ) ),
Родоп~(гоипс((~хпрЛВС[2, О~ ), гоцпс((~трАВС[2, 13 ) ) 1) Р
епс(
епс(;
епс(;
//Обработчик события Оптьтег. Вызывается при поступлении сигнала
//от таймера.
ргосес(цге ТГогт1.Тппег1Тппег(Яепс[ег: ТОЬ)ест);
Ьедтп
//перерисуем изображение на форме
РейгезЬ;
епс(;
4. Задание Изучить свойства базовых преобразований координат на плоскости, изучить метод
построения преобразований координат в матричной форме, освоить построение сложных
преобразований координат (поворот с центром в точке, 'отличной от начала координат,
отражение относительно прямой, отличной от. координатной оси и т.п,).
2. Пользуясь методом преобразования координат
, создать программу,
изображающую указанные объекты. Для того моделирования равномерного движения,
используйте компоненту Т~тег (значок "-.' на вкладке Буксует панели компонентов
Ое1рЫ).
7.1. Варианты задания
1. Вид сверху на движущуюся кордовую модель катера. Сделать возможными изменение направления и скорости, остановку и продолжение его движения при помощи управляющих клавиш.
2. Вид сверху на движущуюся кордовую модель самолета. Сделать возможными изменение направления и скорости, остановку и продолжение его движения при помощи управляющих клавиш.
Распознанный текст из изображения:
3. Гоночная машина, двигающаяся по овальной трассе (поворот должен осуществляться плавно). Сделать возможными изменение направления и скорости, остановку и продолжение ее движения при помощи управляющих клавиш.
4. Механический секундомер, работающий в реальном времени. Должна быть возможность включать, выключать и сбрасывать время при помощи управляющих клавиш.
5. Плывущая, качаясь на волнах, яхта. Для имитации плавного скольжения по волнам задать траекторию ее движения гладкой функцией, например, пологой синусоидой: у(х) =аяп(ох+с). Тогда в точке х угол наклона яхты к горизонтали можно принять равным углу у наклона касательной к графику синусоиды. По свойству производной ~д(у) =у ~х) =(ахт(Ьхтс)) =аЬ сох(Ьх+с). Отсюда у=ахату(аЬсох~Ьх+с)).
б, Вид сверху на крутящуюся карусель, Сделать возможными изменение направления и скорости, остановку и продолжение ее движения при помощи управляющих клавиш.
7. Работающий зубчатый механизм из трех сцепленных шестеренок. Сделать возможными
изменение направления и скорости, остановку и продолжение их вращения при помощи управляющих клавиш.
8. «Колесо обозрения» как в Парке Кулсьтуры..Сдетлать возможнь|ми его остановку и запуск
при- помощи:упраовляЮщих:~~авиа'щ; Люлхькти всегда должны висеть вертикацьно,
9. Человечек, качающийся сидя на качелях. Сделать возможными остановку и продолжение
его движения при помощи управляющих клавиш.
10. Горизонтальные качели с двумя человечками. Сделать возможными их остановку и
продолжение движения.
11. Солнечная система с вращающимися вокруг солнца. планетами.
12. Работающий вентилятор. Сделать возможными его остановку, включение и
переключение на различные режимы работы при помощи управляющих клавиш.
13. Трактор в движении с крутящимися колесами. Сделать возможными изменение
направления и скорости, остановку и продолжение его движения при помощи
управляющих клавиш. Сделать так, чтобы колеса крутились с естественной скоростью.
Для этого угол р поворота колеса должен определяться следующим выражением:
р = — радиан, где Х вЂ” расстояние, на которое переместился трактор, а Я вЂ” радиус его
колеса.
Распознанный текст из изображения:
-10-
14. Железнодорожный шлагбаум. Должен подниматься и опускаться по команде. Когда
шлагбаум начинает опускаться и все время, пока он опущен, должен мигать красный
двойной светофор, как на переездах.
15. Движущийся по рельсам паровоз с крутящимися колесами. Колеса должны крутиться без
пробуксовки и скольжения (см. пояснение к варианту №13).
1б. Вид сверху на накрытый стол. На столе стоят тарелки для гостей, в центре на большом
блюде лежит большая рыба. Стол должен начинать медленно вращаться в ту или в
другую сторону и останавливаться по команде пользователя.
17. Машина «Руссобалт» в движении. Сделать возможными изменение направления и
скорости, остановку и продолжение ее движения при помощи управляющих клавиш. При
движении колеса должны крутиться без пробуксовки или скольжения (см. пояснение к
варианту №13);
18. Рыбка, плавающая во всех направлениях по аквариуму. Носик рыбки должен всегда
смотреть по направлению движения. Аквариум виден сверху. Щелчок мышью по какому-
либо месту в аквариуме означает, что туда брошен вкусный червячок (его также нужно
изобразить). Рыбка должна тотчас подплывать и съедать его. При желании для мышки
можно нарисовать собственный курсор в виде червячка и назначить его форме. Для этого
можно использовать редактор Владе Ей~от. Он вызывается из главного меню ТооЬ в
Ве1рЫ.
19. Вид спереди на самолет с- вращающимся пропеллером. Мотор самолета должен
запускаться и останавливаться по команде пользователя.
20. Часы с цифрами„вращающимися стрелками и качающимся маятником
21,Колесный пароходик, плывущий по спокойной глади воды. Сделать возможными
изменение скорости и направления, остановку и продолжение сто движения.
22. Движущийся самосвал. Колеса должны крутиться без пробуксовки или скольжения (см.
пояснения к варианту №13). Он должен уметь по команде пользователя останавливаться
и продолжать движение, плавно поднимать и опускать кузов.
23. Вращающаяся тарелка с красивым цветным рисунком. Сделать остановку, продолжение,
ускорение и замедление ее вращения по командам управляющих клавиш.
24. Санки, съезжающие с горки по команде. Рельеф склона горки и, соответственно,
траекторию движения санок, задать с помощью гладкой функции, например,
Распознанный текст из изображения:
-11-
Л'
у(х) = асов(Ах+ с), 0 < х < —. О вычислении угла наклона санок к горизонтали в каждой
2
точке траектории см. пояснение к варианту №5
25. Колодец в разрезе с ведром и крутящимся воротом. Ведро должно опускаться,
зачерпывать воду и подниматься по команде пользователя.
26. Луноход в движении. Сделать возможными изменение скорости и направления,
остановку и продолжение движения. Колеса должны крутиться без пробуксовки или
скольжения (см. пояснения к варианту №13).
5. Контрольные вопросы
1, Какие преобразования координат называется аффинными? Назовите свойства аффинных
преобразований координат.
2. Какие преобразования координат называется ортогональными? Каким свойством
обладают ортогональные преобразования?
3. Обычная и матричная форма базовых преобразовайий координат. Применение базовых
преобразований координат.
4. Какйе:из'базбвыМ:преобразований координат являются ортогональными? Докажите-это.
5. Построение обратных преобразований к базовым преобразованиям координат
6. Построение обратных преобразований координат к сложным преобразованиям координат
(состоящим из нескольких базовых).
7. Постройте преобразования координат для поворота отрезка А(х„у,)В(хь,уь) вокруг точки
В(хьу~) на угол у против и по часовой стрелке.
8. Постройте преобразование координат, с помощью которого можно расплющить любой
предмет: ширина должна увеличиться„а высота уменьшиться в пять раз.
9. Найдите отражение треугольника А(х,„у,)В(хь,уь)С(х„у,) относительно начала координат.
10, Найдите отражение точки А(х„у,) относительно прямой у = Ь+ О.
11. Постройте преобразование для перехода от экранной системы координат по умолчанию
(начало находится в левом верхнем углу окна, ось абсцисс направлена вправо, ось
ординат — вниз) к привычной системе координат (начало совпадает с центром окна
(обозначим эту точку как С(х„у,)), ось абсцисс направлена вправо, ось ординат — вверх).
Распознанный текст из изображения:
-12-
12. Постройте преобразование для перехода от привычной системы координат к системе, в
которой оси абсцисс и ординат поменялись местами.
13. Постройте преобразование для перехода от привычной системы координат к системе,
начало которой совпадает с точкой С(х„у,), а направление оси абсцисс совпадает с
направлением вектора Х, = ~1, т~.
14. Постройте преобразование для растяжения любого объекта в три раза с центром в точке
С(х„у,) вдоль прямой с направляющим вектором А = (1, т~.
15. Точка А была отражена относительно оси ординат и в результате получила координаты
(х„у,), Постройте преобразование, которому она была подвергнута„найдите обратное к
нему и, пользуясь последним, найдите ее исходные координаты.
16. В результате растяжения вдоль оси абсцисс в К раз вершины треугольника получили
координаты А(х„у,), В(хь,уь), С(х„у,). Вершина А при растяжении не изменила своего
положения. Постройте преобразование координат, которому был подвергнут
треугольник, найдите обратное к нему и, пользуясь последним, определите исходные
координаты вершин В и С.
17. В результате поворота на угол ~р точки В(хьуь) точка А получила координаты (х„у,).
Постройте преобразование, которому она была подвергнута, найдите обратное к нему и,
пользуясь последним, найдите.ее исходные координаты.
18. Отрезок А(х„у,)В(хь,уь) - -:был .преобразован . в отрезок 'С(ха,ус)1Э(хьу~). Постройте
преобразование, которое могло использоваться при этом.
19, Метод работы с локальной системой координат на плоскости.
20. Рекурсивная математическая модель движения колеса.
Начать зарабатывать