Популярные услуги

КМ-6. Динамические массивы. Семинар - выполню любой вариант!
КМ-2. Разработка простейших консольных программ с использованием ООП + КМ-4. Более сложные элементы ООП - под ключ!
Любая задача на C/C++
Одно любое задание в mYsql
Сделаю ваше задание: Лабораторная работа на Pascal / Lazarus
Любой тест по базам данных максимально быстро на хорошую оценку - или верну деньги!
Любой реферат по объектно-ориентированному программированию (ООП)
Оба семинара по программированию под ключ! КМ-2. Разработка циклических алгоритмов + КМ-3. Функции и многофайловые программы в Си
Повышение уникальности твоей работе
Все письменные КМ под ключ за 3 суток! (КМ-6 + КМ-7 + КМ-8 + КМ-9 + КМ-10)
Главная » Лекции » Информатика и программирование » Алгоритмы компьютерной графики » Преобразования в трехмерной системе координат

Преобразования в трехмерной системе координат

2021-03-09СтудИзба

Преобразования  в  трех мерной системе координат

В трех мерной системе координат используются следующие базовые преобразования:

- перенос  точки на заданный вектор;  

- поворот на заданный угол относительно координатной оси;

- перенос системы координат на заданный вектор;

- поворот системы координат на заданный угол относительно координатной оси;

- зеркальное отображение точки относительно координатной плоскости XY;

- зеркальное отображение точки относительно плоскости XY;

- зеркальное отображение точки относительно координатной оси XZ;

Рекомендуемые материалы

- смена направление  координатной оси;

- изменение масштаба координат по оси X;

- изменение масштаба координат по оси Y.

- изменение масштаба координат по оси Z.

Перенос точки на вектор U, задаваемый параметрами ux, uy, uz, предполагает следующее преобразование координат:

xa’ = xa - ux;  

ya’ = ya – uy;

za = za – uz.

Используя однородную систему координат, данные преобразования в матричной форме можно представить в  виде:

где:

a,b,c – параметры вектора переноса.

Легко показать, что матрица обратного преобразования (или матрица переноса системы координат)  в этом случае будет иметь вид:

Поворот относительно координатной оси.

Поворот относительно оси Z.

Данный вид преобразования иллюстрируется ниже приведенным рисунком (Рис. 5.2‑1), где приводится поворот точки А на угол a.


Рис. 5.21

Из приведенного рисунка  видно, что поворот относительно оси Z не меняет координаты точки по координатной оси Z. Что же касается изменений координат по оси X и Y, то они аналогичны изменениям по осям X,Y в двумерной координатной системе, так как новая и старая точки остаются в одной плоскости, параллельной координатной плоскости X,Y. Таким образом, использую уравнения (5.1-5) и (5.1-6), будем  иметь:

xb= xb cos a - yb sin a + 0;

yb’= xb sin a + yb cos a +0;

zb= 0           +0             +z.

Данные преобразования можно представить в матричной форме как:

  (5.1-7)             

Поворот относительно оси X.

Координатные оси в трехмерной системе равнозначны, поэтому поворот относительно координатной оси X, аналогично повороту относительно оси Z, можно представить как:

yb’= yb cos a - zb sin a + 0;

zb’= yb sin a + zb cos a +0;

xb= 0           +0             +x.

Соответственно в матричной форме будем иметь:

Для того, чтобы координаты  матриц перечислялись в том же порядке, что и в выражении (5.1-7), необходимо их циклически сдвинуть в сторону элемента с большим индексом, т.е. вправо. При этом соответствующий сдвиг необходимо выполнить и в матрице начальных координат. Что же касается двумерной матрице, то ее колонки необходимо циклически сдвинуть вправо (в сторону колонки с большим индексом), а затем циклически сдвинуть строки вниз (в сторону строки с большим индексом), как это показано ниже.

   (5.1-8)

Поворот относительно оси Y.

Координатные оси  в трехмерной системе равнозначны, поэтому поворот относительно координатной оси Y, аналогично повороту относительно оси Z, можно представить как:

zb= zb cos a - xb sin a + 0;

xb= zb sin a + xb cos a +0;

yb= 0           +0             +y.

Соответственно в матричной форме будем иметь:

Для того, чтобы координаты в матрице перечислялись в том же порядке, что и в выражении (5.1-7), необходимо их циклически сдвинуть в сторону элемента с меньшим индексом, т.е. влево. При этом соответствующий сдвиг необходимо выполнить и в матрице начальных координат. Что же касается двумерной матрице, то ее колонки необходимо циклически сдвинуть влево (в сторону колонки с меньшим индексом), а затем циклически сдвинуть строки вверх (в сторону строки с меньшим индексом), как это показано ниже.

 

(5.1-8),

Таким образом, матрицы базового поворота на угол a по отношения к координатной оси будут иметь вид:

 (5.1-9),

Легко показать, что матрицы соответствующих обратных преобразований (или матрицы поворота системы координат относительно координатных осей), будут иметь вид:

                                                                 (5.1-10)

Зеркальное отображение точки относительно координатной плоскости XY.

Преобразования этого типа предполагает следующие зависимости координат.

Для отображения относительно координатной плоскости XY:

             xa’ = xa 

             ya’ = ya ;

             za’ = -za .

В матричной форме это преобразование записывается как:

 

Для отображения относительно координатной плоскости XZ;

             xa’ = xa 

             ya’ = - ya ;

             za’ = za

В матричной форме это преобразование записывается как:

 

 Для отображения относительно координатной плоскости ZY:

              xa’ = -xa 

              ya’ = ya ;

              za’ = za .

Матричная запись будет иметь вид:

Смена направления  координатной осей

Преобразование координат при смене направленности координатных осей X,Y,Z  отображается, соответственно, следующими матрицами.

Изменение масштаба по  координатным  осям.

Преобразования этого типа предполагает следующие зависимости координат:

             xa’ = r xa

             ya’ = l ya ;

             za = f za,

где r, l, f – вводимые масштабные коэффициенты по соответствующим координатным осям.

В матричной форме это преобразование записывается как:

 

 где:

Рассмотрим сложное преобразование координат в трехмерной системе.

Предположим необходимо выполнить поворот точки относительно произвольного вектора в трех мерной системе координат, как это показано на Рис. 5.2‑2.

Сначала решим рассматриваемую задачу для  частного случая. Предположим, что вектор U, относительно которого нужно повернуть точку А на угол a, проходит через начало системы координат (Рис. 5.2‑3).

Вектор, относительно которого  необходимо выполнить поворот,  можно задать в сферических координатах, т.е. через тройку параметров: q, j, r, где:

- r- модуль вектора U;

- j   - угол между вектором U и координатной осью Z;

- q - угол между проекцией r’ вектора U на координатную плоскость XY и координатной осью X.


Рис. 5.22

При таком частном случае заданное преобразование поворота точки относительно заданного вектора можно выполнить за счет последовательности следующих базовых преобразований:

1) поворот исходной системы координат относительно координатной оси Z на угол q;

2) поворот новой системы координат относительно оси Y на угол  -j;

3) поворот точки А относительно координатной оси  Z’’на угол a;

4) поворот системы координат на угол j  относительно оси Y;

5) поворот системы координат относительно координатной оси Z на угол -q.


Рис. 5.23

1-ый поворот исходной системы координат относительно ее оси Z на угол q формирует  новую систему координат X’Y’Z’, в которой  ось X’ совпадет с r’, ось Y’ будет повернута по отношению к оси Y на угол q, ось Z’ совпадает с осью Z, что показано на Рис. 5.2‑4.


Рис. 5.24

Отметим, что в новой системе координат вектор U лежит в координатной плоскости X,Z.

Поворот осуществляется при использовании матрицы обратного преобразования типа «поворот относительно координатной оси Z».

2-ой поворот формирует систему координат  X”Y”Z”, в которой ось X” повернута относительно оси X’ на угол ( -j) (угол поворота отрицательный, так как для совмещения оси Z новой системы координат с вектором U поворот нужно выполнить в направлении по часовой стрелке), ось Y’’ совпадает с осью Y’, ось Z” совпадает с вектором U.

Рассматриваемому повороту соответствует матрица базового поворота точки  относительно оси Y.

3-ий поворот. В системе координат, полученной после выполнения двух предыдущих поворота, заданный вектор  U совпадает с осью Z”, что позволяет выполнить в этой системе заданный поворот за счет базового поворота относительно оси Z”.

4-ый поворот обеспечивает возврат к системе координат X’,Y’,Z’ и реализуется с помощью матрица обратного преобразования типа «поворот относительно координатной оси Y» на угол j.

5-ый поворот обеспечивает возврат к  начальной системе координат X,Y,Z и реализуется с помощью матрица преобразования типа «поворот относительно координатной оси Z» на угол -q.

Таким образом, формирование координат точки при рассматриваемом сложном преобразовании осуществляется  через произведение матриц элементарных преобразований следующего вида:

      (5.1-10)

где:

- xи, yи, zи – исходные кордиинаты точки;

- xпч, yпч, zпч – новые кордиинаты после поворота для рассматриваемого частного случая;

-

-

-

-

-

При решении рассматриваемой задачи для общего положения в пространстве вектора  U, используется  те же действия, что и  в рассмотренном частный случай, с добавлением в начале преобразований  перенос исходной системы координат в точку D (см Рис. 1.2‑1) и в конце - перенос начало координат из  точки D в точку начала координат исходной системы.

Таким образом, для общего положения вектора поворота, новые координаты точки А после заданного поворота определяются  через произведение матриц элементарных базовых преобразований следующим образом:

   (5.1-11)

где:

xп, yп, zп  - координаты положения точки после поворота;

Переход от одной формы задания вектора к другой.

 Вектор, который часто используется в процессе преобразований координат, иногда удобно задавать в полярных координатах (например, при поворотах), а иногда в декартовых координатах (например, при переносах). На практике вектор задается только одним из этих способов. Для перехода от одной формы задания вектора к другой используются следующие соотношения.

Переход от декартового к полярному представлению вектора

При задании вектора U в полярных координатах в виде тройки {r,j,q}, как следует из Рис. 5.2‑3, имеет место:

uz=r cosj;

 ux=r sin j cos q;

uy=r sin j  sin q;

Переход от полярного  к декартовому представлению вектора

При задании вектора U в декартовых координатах в виде тройки {ux , uy, uz}, как следует из Рис. 5.2‑3, имеет место:

j =arc cos(uz./r);

 

В выражении (5.1-11) в качестве сомножителей выступают матрицы разных размерностей (3*3 и  4*4). Для того, чтобы найти их произведение, необходимо привести матрицы к одной размерности, т.е. матрицы размерности 3*3 необходимо расширить до размерности 4*4. Однако с расширением размерности не надо спешить. Пользуясь свойством ассоциативности произведения матриц, умножение матриц следует выполнять в последовательности, определенной скобками в ниже приведенной версии выражения (5.1-11):

(5.1-12)

 

Обозначение матрицы знаком «*» означает использование расширенной матрицы.

Такой прием позволяет уменьшить затраты времени на выполнение умножений матриц.

В выражении (5.1-11) произведение первых трех матриц обеспечивает переход от исходной системы координат к системе координат, «удобной» для заданного преобразования. Что касается произведения последних трех матриц, то они обеспечивают переход от «удобной» системы координат к исходной. По этому, используя свойство ассоциативности,  выражение (5.1-11) можно представить как:

 (5.1-13)

где

- R1 – матрица перехода от исходной к «удобной» системе координат;

- R1-1 –матрица, обратная матрице R1.

В некоторых случаях, с точки зрения затрат времени, реализация выражения (5.1-12), может быть предпочтительнее, чем реализация выражения (5.1-11). В свою очередь, может оказаться удобнее формировать матрицу R1-1 не через произведение трех матриц (см. выражение(5.1-13), а получить ее, рассчитав ее элементы как элементы матрицы, обратной матрице R1.

Матрица, обратная заданной, может быть найдена следующим образом.

Ещё посмотрите лекцию "5.2 Локальные шины VLB и PCI" по этой теме.

Из определения обратной матрицы следует, что матрица В является обратной по отношению к заданной матрице А, если имеет место равенства:

А*B=E,

где Е – единичная матрица, имеющая вид:

 

Отсюда элементы обратной матрицы могут быть найдены из системы уравнений:

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Нашёл ошибку?
Или хочешь предложить что-то улучшить на этой странице? Напиши об этом и получи бонус!
Бонус рассчитывается индивидуально в каждом случае и может быть в виде баллов или бесплатной услуги от студизбы.
Предложить исправление
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5137
Авторов
на СтудИзбе
441
Средний доход
с одного платного файла
Обучение Подробнее