Основы САПР (CAD,CAM,CAE) - (Кунву Ли)(2004) (951262), страница 14
Текст из файла (страница 14)
Снаай-'':„,'.'1 ' ла нужно перевести координаты точек объекта из молельной системы в мирэ-: . Рис. 3.16. трансляция объекта Х„, У„, 2. 1 1 О О а О 1 О Ь О О 1 с О О О 1 (ЗА) 7'гапэ(а, Ь, с) :; вую., Текущее полоЖениэе,обьекта обычно задаегся через повороты и смещения отнпситегтьно псхцдиого погежения, в котором модельная система координат совпадала с мировой. Следовательно, мировые координаты точек объекта можно получить трансляцией и поворотом соответствующих точек из нх исходного подоження, в котором их модельные координаты совпадали с мировыми.
Большинство графических библиотек выполняют эти преобразования самостоятельно, . а программисту остается задать только смещение и поворот для интересуюшего его объекта. Однако проектировшику все равно нужно знать законы преобразований, чтобы рисовать объекты в нужных местах без проб и ошибок, в особенности если эти объекты перемещаются достаточно сложным образом.
В этом разделе мы рассмотрим матрицы преобразования, действуюшие на точки объекта при его перемещении и повороте. Получив мировые координаты всех точек объекта в его текущем положении, мы должны вычислить координаты этих точек в наблюдательской системе. Перевод координат из одной системы в другую называется отображением (глар)лпд). Отображение между мировой и наблюдательской системами координат обычно также осушествляется графической библиотекой самостоятельно, по заданным программистом координатам точки зрения, точки наблюдения и направлению вектора вертикали (в мировых координатах).
Матрица преобразования для операции отображения рассматривается в разделе 3.7.3. .З.У.1. Трансляция При трансляции объекта на величины а, Ь и с в направлениях х, у и г соответственно по отношению в начальному положению, в котором модельная система координат совпадала с мировой (рис. 3.16), мировые координаты точек объекта в новом положении (Х У Х„,) вычисляются следуюшим образом: Х„, =Х +а; У =У+Ь; (3.3) 2 =2„+с. В этой формуле числа Х У„, 2 являются также модельными координатами точки. Формула (3.2) может быть записана в матричной форме'.
! Коо оорлинаты могут быть также представлены в виде строки. Тогда матрица преобразования записывается после вектора координат. В этом случае матрица преобразования представляет собой транспонированную матрицу из формулы (3.4). В формуле (34) мы следуем соглашениям о записи ОрепО1 ФХ~4ФЬВТгЬЬй)йМфййй)4)Ыа"::-":.! '::::-''",-:;-'-"""::,'::;-':::::: ":!: "'~:: ''"':':,:~:",";::.""::,:,"':.":.":;""".:::: '::-'"'':: "-'. "":"":1'"":-"-': "«~: Легко убедиться, что формулы (3.4) и (3.3) эквивалентны друг другу: для этого достаточно записать (3.4) в развернутом виде. Операцию сложения в (3.3) удалось записать через умножение в (3.4) благодаря использованию однородных координат, в которых трехмерный вектор записывается через четыре скаляра вместо трех'.
' Матрица, которую мы получили, называется жатрицей од>шродлого иреобразоваг лия (Ьоглояепеоиэ сгплэ7оггпаг1оп тапгг). В данном случае преобразование являет- ся трансляцией. Если бы преобразование (в частности, трансляцию) нужно было .
применить к точке в двумерном пространстве, однородная матрица преобразова- ния редуцировалась бы до матрицы размерностью ЗхЗ удалением третьей строки .. и третьего столбца из матрицы размерностью 4х4. Новая матрица действовала бы на вектор координат размерностью Зх1, полученный из вектора 4х1 удалени- ем г-координаты. 3.7.2. Вращение Пусть объект поворачивается на угол В вокруг оси х мировой системы координат вместе со своей модельной системой, которая, как и в предыдушем случае, изначально совпадает с мировой (рис. 3.17).
Мировые координаты точки объекта в новом положении (Х У„„Х,,) могут быть получены из исходных мировых координат этой точки (Х, У,„, 2 ), совпадающих с ее текущими координатами в модельной системе. Соотношение между (Х„., У, г„,) и (Х, У, 2 ) становится очевидным после проецирования рис. 3.17 на плоскость уг. Результат проецирования показан на рис.
3.18. ' Любой вектор (х, у, г) трехмерного пространства может быть записан в соответствующих однородных координатах в виде (хю, ув, ггэ, ю)~, гле верхний индекс Т обозначает операцию транспонирования. Поскольку значение ж может быть произвольным, лля ка- ': ',,;.- жлого вектора сушестзует множество вариантов записи в однородных координатах. В формуле (3.4) используется значение ж = 1. Равенства (3.5), (3.6) и (3.7) могут быть записаны в матричной форме у,4,) Р' (Х Матрица в правой части формулы (3.8) — это однородная матрица преобразова- ' ния вращения вокруг осн х, которая кратко обозначается )то((х,О). Подобно мат- рице трансляции, для двумерного объекта однородная матрица вращения реду- цируется до размера ЗхЗ.
Однородные матрицы вращения вокруг осей у н г получаются аналоптчным об- разом и записываются так: эО О зтпО О О 1 О О Лог(у, О) = — япО О сон 0 О Рис. 3.17. Вращение вокруг осн х (З.О) О О О 1 соэ О -япО О О япО созО О О )(о((,О) = (3.1Ю) О О О 1 Мы получили матрицы преобразования, описывающие поворот вокруг мировых осей координат. Можно показать, что поворот вокруг любой произвольной оси раскладывается на повороты вокруг осей х, у и а Таким образом, матрица преобразования для произвольной осн получается перемножением матриц (3.8)-(3.10). Как уже отмечалось, матрицы преобразования, описываемые в этом разделе, обычно вычисляются соответствующилти подпрограммами графических библиотек.
Приведенный ниже код иллюстрирует нспольаованне подпрограмм РН1хх8 н ОрепС), Рис. 3.18. Проекция на плоскость уа РННБ ртгапз!асеЗ(руессогя о((зе(3. Ртпг* еггог тпб Рша(гтхЗ гезц113): /" о((зе13. вектор трансляции еггог щб. наа ошибки гезц183: вычисленная катрина преобразования' */ ртссатв Х(РПОат алт)1Е.
Ртл(я ЕГГОГ тле. Рва(ЮХЗ ГЕЗц113): РГО(аСЕ у(Р/1сат алр1Е. Ртлтн ЕГГОГ тлб. Ряютщ ХЗ ГЕЗц113). рго(ате з(Р(!оа( апг)1е. Ртпб* еггог тпб. Рша(г(хз гезц113). /* апр1е: утоп поворота еггог тпб: коа ошибки гезь1(3 вычисленная натрица преобразования */ (3.5) (3.6) Орала. г)1тгапз1а(еб(бсбсцб)е о(тзе( х. ццбоцб!е ояве( у. СббоцЫе о((зе( з): /* Уннсянзет текущую натрицу на матрицу трансляции объекта со сиещенияни от/ве( х, оу(зе( у и о((зег з по соответствуоянн сеян */ (3.7) В РН1С5 матрица преобразовании ставится после вектора-строки.
Из рнс. 3.18 можно легко получить следующие равенства Хш =Х; (сов(О+ а) = 1(стхч О соя а -япОяпа) = )соз асов Π— Уяпаяпй = У соэΠ— ?„, япО; = /яп(О+ а) = = 1(яп О сев а + соз Ояп а) = = ! соз ст яп О е 1з( тт а сов 9 = =- Уш ЯпО+ 2„, сокО. Х„ Г„ ?ш 1 1 О О О О соэΠ— 5)пО О 0 — япО соз О О О О О 1 Х„ У 2. 1 (Х, У~ Хтл) Решение 0 0 1 1 1 О 0 0 0 1 О -3 0 0 1 -2 0 0 0 1 1 0 0 0 0 соз 90" — з!и 90' 0 0 яп90" соз 90" 0 0 О 0 1 1 0 0 0 0 1 О 3 0 0 1 2 0 0 0 1 [х., у.
г. ц'= [Х гт 2, Цт=Т, ДХг Уг 2, Ц . (3.11) р!аоаа«ео«ЕГПоцЫе 'ада!ел.одопа!Е к. 6!роцще у. ОГбоц«йе а!г г'"' уннолает тенуеуе петрину на натрицу поворота оавента на угол апр!е против часовав стрелки вокруг луча. проведенного из начала координат в точку «к. у. Ы . */ Рассмотрим несколько примеров, поясняющих применение матриц преобразо- ваний. Пример 3.1 Обьект в трехмерном пространстве транслируется на 5 единиц в направлении у мировой системы координат, после чего поворачивается на 90' вокруг оси х той же системы координат.
Если координаты точки объекта в модельной системе имеют значения (О, О, 1), какими будут мировые координаты этой точки после трансляции и вратцения7 Координаты (Х„',,У„'„2,', ) после преобразования трансляции могут быть вычислены следующим образом: [Х' Г У']т =Тгапз(0 5 0)[0 0 1 Цт =[О 5 1 Цт После этого применяется преобразование вращения: [Х„, У„, Х„Цт =й)«(х 90")[О 5 1 Цт Следовательно, координаты точки после преобразований будут иметь значения (О, — 1, 5). Обратите внимание, что предыдущие выражения можно объединитьа [Х У„йн Цт =ЯоГ(х,90")Тгапз(0,5,0)[0 0 1 Цт.
Последнее выражение значительно более удобно, особенно при вычислении координат множества точек. В последнем случае матрицы трансляции и вращения пеРемножаются заранее и дают эквивалентную матрицу преобразования, которая действует на все интересующие нас точки. Процесс вычисления эквивалент««ой матрицы преобразования путем перемножения отдельных матриц преобразования в соответствующей последовательности называется копкагпепацией (сопсагепапоп). Возможность выполнения конкатенации — одно из преимуществ использования однородной системы координат, в которой трансляция записывается через матричное умножение, а не через сложение. )трииер 3.2 Объект в пространстве поворачивается на 90' вокруг оси,параллельной оси х мировой системы координат и проходящей через точку с мировыми координа- тами (О, 3, 2).
Если точка объекта имеет модельные координаты (О; О, 1), какими будут мировые координаты той же точки после поворотао згл Решение Мы изучили только повороты относительно осей, проходящих через начало ко-,':. ординат, поэтому нам придется сместить объект вместе с осью вращения.
Ось вращения должна проходить через начало координат, причем положение объекта относительно этой оси должно сохраниться. Трансляция объекта вместе с осью на '. „' вектор (О, — 3, -2) даст нам совпадение оси вращения с осью х мировых коорди-, нат. Затем мы повернем объект вокруг оси х на 90', после чего сместим его об- .; ратно на вектор (О, 3, 2), чтобы вернуться к исходному положениго. Эти операции могут быть записаны следующим образом: [Х г' Х„Ц~ =Тгапз(0,3,2)йо«(х,90")Тгппз(0 — 3 — 2)[0 0 1 Цт Обратите внимание на последовательность матриц в этой формуле. Результат легко проверить, применяя преобразования одно за другим, как в примере 3.1.
Раскрывая выражение, получим: =[О 4 -1 Ц. Результат соответствует приведенной выше иллюстрации. 3.7.3. Отображение Отпобразгение (пюрртпд) состоит в вычислении координат точки в некоторой систе- ме координат по известным координатам той же точки в другой системе координат-;, Рассмотрим две системы координат (рис. 3.19). Предположим, что координаты ':. (Хт, У„ад ) точки Р в системе координат ха па ха должны быть вычислены по коор. ','; динатам (Х„У„Хг ) той же точки в системе х, У,ап Далее, пРедположим, что вы-:.: числение производится применением матрицы преобразования Т, л к известным,: ' координатам; ц матрицу преобразования Т„„; г С! координаты точки с мировымн координатами (5, О, 1) в наблюдательском,сис'-: теме координат.
Х» Рис. 3.19. Отооранение из одной системы координат е другую Записав матрицу Т, г в явном виде, мы получим из формулы (3.11) следующее выражение: Хг у» 2 1 н, о„а. Р„ н„о„а„р„ л, о, а„Р, 0 О 0 1 (3.12) Чтобы найти неизвестные в уравнении (3,12), подставим в него конкретные значения Х, = О, г', = 0 и У, = О„в результате чего получим: Хг =Р, ° У» =Р„2» = Р ° (3.13) Можно сказать, что рн р„и р, определяют координаты начала отсчета системы х,у»г, в системе координат хгузгн Теперь подставим в уравнение (3.12) значения Х, = 1, У, = О, У, = 0 и получим: Х» =н +Р У» н»+Р» 2г сп»+Р.