Главная страница
Навигация по странице:

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

  • Рис. Преобразования в трех мерной системе координат‑50

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

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

  • Рис. Преобразования в трех мерной системе координат‑51

  • Рис. Преобразования в трех мерной системе координат‑52

  • Рис. Преобразования в трех мерной системе координат‑53

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

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

  • Алгоритмы компьютерной графики Пешков Анатолий Тимофеевич, БГУИР. 1 отображение просранства пользователя и машинного носителя 4


    Скачать 1.86 Mb.
    Название1 отображение просранства пользователя и машинного носителя 4
    Дата24.09.2022
    Размер1.86 Mb.
    Формат файлаdoc
    Имя файлаАлгоритмы компьютерной графики Пешков Анатолий Тимофеевич, БГУИР.doc
    ТипДокументы
    #693275
    страница13 из 20
    1   ...   9   10   11   12   13   14   15   16   ...   20

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



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

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

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

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

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

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

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

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

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

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

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

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

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

    ya’ = ya – uy;

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


    где:



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


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

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

    Данный вид преобразования иллюстрируется ниже приведенным рисунком (Рис. Преобразования в трех мерной системе координат-50), где приводится поворот точки А на угол .



    Рис. Преобразования в трех мерной системе координат‑50
    Из приведенного рисунка видно, что поворот относительно оси Z не меняет координаты точки по координатной оси Z. Что же касается изменений координат по оси X и Y, то они аналогичны изменениям по осям X,Y в двумерной координатной системе, так как новая и старая точки остаются в одной плоскости, параллельной координатной плоскости X,Y. Таким образом, использую уравнения (5.1-5) и (5.1-6), будем иметь:
    xb= xb cos  - yb sin  + 0;

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

    zb= 0 +0 +z.
    Данные преобразования можно представить в матричной форме как:
    (5.1-7)

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

    Координатные оси в трехмерной системе равнозначны, поэтому поворот относительно координатной оси X, аналогично повороту относительно оси Z, можно представить как:
    yb’= yb cos  - zb sin  + 0;

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

    xb= 0 +0 +x.
    Соответственно в матричной форме будем иметь:

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

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


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

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

    yb= 0 +0 +y.
    Соответственно в матричной форме будем иметь:

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

    (5.1-8),
    Таким образом, матрицы базового поворота на угол  по отношения к координатной оси будут иметь вид:
    (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 – вводимые масштабные коэффициенты по соответствующим координатным осям.
    В матричной форме это преобразование записывается как:


    где:


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

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

    Сначала решим рассматриваемую задачу для частного случая. Предположим, что вектор U, относительно которого нужно повернуть точку А на угол , проходит через начало системы координат (Рис. Преобразования в трех мерной системе координат-52).

    Вектор, относительно которого необходимо выполнить поворот, можно задать в сферических координатах, т.е. через тройку параметров:  где:

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

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

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




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

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

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

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

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

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





    Рис. Преобразования в трех мерной системе координат‑52
    1-ый поворот исходной системы координат относительно ее оси Z на угол  формирует новую систему координат X’Y’Z’, в которой ось X’ совпадет с ’, ось Y’ будет повернута по отношению к оси Y на угол , ось Z’ совпадает с осью Z, что показано на Рис. Преобразования в трех мерной системе координат-53.


    Рис. Преобразования в трех мерной системе координат‑53
    Отметим, что в новой системе координат вектор U лежит в координатной плоскости X,Z.

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

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

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

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

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

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

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

    где:

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

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

    где:

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



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

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

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

    При задании вектора U в полярных координатах в виде тройки { как следует из Рис. Преобразования в трех мерной системе координат-52, имеет место:
    uz=cos;

    ux=sin  cos ;

    uy=sin  sin ;
    Переход от полярного к декартовому представлению вектора

    При задании вектора U в декартовых координатах в виде тройки {ux uy uz как следует из Рис. Преобразования в трех мерной системе координат-52, имеет место:



    arc cos(uz./);


    В выражении (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.

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

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

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


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



    1   ...   9   10   11   12   13   14   15   16   ...   20


    написать администратору сайта