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

  • 3 ГЕОМЕТРИЧЕСКИЕ ПРЕОБРАЗОВАНИЯ В ПРОСТРАНСТВЕ 3.1 Особенности отображения пространственных объектов

  • P(x*,y*,z*)

  • 3.2 Аффинные преобразования в пространстве

  • геометрические преобразования. Геометрические преобразования в компьютерной графике


    Скачать 1.14 Mb.
    НазваниеГеометрические преобразования в компьютерной графике
    Анкоргеометрические преобразования
    Дата27.11.2019
    Размер1.14 Mb.
    Формат файлаpdf
    Имя файла208__147__208__208__190__208__188__208__159__209__128__208__208_.pdf
    ТипУчебное пособие
    #97384
    страница3 из 4
    1   2   3   4
    Пример 3. Пусть требуется описать поворот точки на угол

    вокруг произвольного центра С с координатами x
    c
    , y
    c
    и последующее двукратное масштабирование результата относительно начала координат.

    28
    Очевидно, начальные преобразования в этом случае совпадают с преобразованиями примера 1, матричная запись которых уже получена.
    Затем к ним нужно добавить масштабирование, которое в суперпозиции матриц учитывается просто: в суперпозицию справа добавляется матрица
    1 0
    0 0
    2 0
    0 0
    2

    SC
    В результате получается следующее выражение:
    2 1
    SC
    TR
    RT
    TR
    K
    K






    Если теперь после описанных преобразований потребуется выполнить еще одно преобразование, например, еще один сдвиг, то его матрица TR
    3
    также записывается в «старую» суперпозицию справа. Таким образом, последовательность запланированных для выполнения задания геометрических преобразований записываются в виде своих матриц слева направо. При этом последовательность матриц строго соответствует последовательности запланированных преобразований.
    Внимание!
    В приведенных примерах координаты точек записываются в виде матриц-строк. Возможна их запись и в виде матриц- столбцов. Она часто применяется в литературе по компьютерной графике.
    В этом случае все рассмотренные матрицы частных аффинных преобразований заменяются на транспонированные [2]. В матричной записи преобразования, по сравнению с (2.4), матрицы K и T меняются местами, иначе нельзя выполнить их перемножение. Кроме того, матрицы последовательности преобразований, запланированной для выполнения задания, записываются справа налево, то есть суперпозиция матриц
    «растет» справа налево. Например, матричное описание преобразований для примера 1 выглядит так:

    29 1
    1 0
    0 1
    0 0
    1 1
    0 0
    0
    cos sin
    0
    sin cos
    1 0
    0 1
    0 0
    1 1
    y
    x
    y
    x
    y
    x
    y
    x
    C
    C
    C
    C













    3 ГЕОМЕТРИЧЕСКИЕ ПРЕОБРАЗОВАНИЯ В ПРОСТРАНСТВЕ
    3.1 Особенности отображения пространственных объектов
    Отображение пространственных объектов происходит гораздо сложнее плоских. Система координат объекта (СКО) становится трехмерной, геометрические примитивы образуют в ней пространственную композицию, которую нужно уметь описать. Сами примитивы тоже становятся пространственными, для их описания вводится трехмерная система координат примитива – СКП. Становится трехмерной и система координат наблюдателя (СКН), в ней сценарное пространство не совпадает с экраном. При этом система координат экрана остается плоской, экран лежит в плоскости x0y СКН (уравнение плоскости экрана z=0). Следовательно, возникает необходимость перехода от пространственного представления объекта к плоскому, то есть необходимость проецирования. Кроме того, чтобы пространственные объекты выглядели объемными и правильно передавались пространственные отношения между ними, нужно выполнить еще целый ряд операций, отсутствующих в двумерной графике. Это наложение теней от источников освещения и удаление на изображении тех участков объектов, которые не должен видеть наблюдатель. Таким образом,

    30 процесс отображения пространственных сцен включает все операции, описанные в 1.2.
    К геометрическим преобразованиям пространственных объектов относятся уже названные аффинные преобразования: сдвиг, поворот, масштабирование и отражение. К ним добавляется преобразование проецирования. Однако разнообразие и сложность представления преобразований в трехмерной графике неизмеримо выше, чем в двумерной. Например, поворот объекта в двумерной графике возможен только в плоскости экрана, а поворот в пространстве может осуществляться вокруг оси, расположенной в СКН самым различным образом, к тому же возможно сочетание поворотов вокруг нескольких осей.
    Математическое описание геометрических преобразований зависит от выбора пространственной системы координат и от размещения в ней точки наблюдения и картинной плоскости. Распространены правая и левая системы координат, они показаны на рисунке 4. В правой поворот оси x к оси y, оси y к оси z, оси z к оси x идет против часовой стрелки, а в левой системе координат эти повороты направлены по часовой стрелке.
    z
    z
    y
    y
    x
    x
    а б
    Рисунок 4 – Правая (а) и левая (б) системы координат а б

    31
    В данном конспекте лекций принята левая система координат, плоскость экрана совпадает с плоскостью x

    O

    y

    , точка наблюдения V размещена на отрицательной полуоси оси z

    , как это показано на рисунке 5.
    z*
    x*
    y*
    P(x*,y*,z*)
    O*
    x*
    s
    ЭКРА
    Н
    P
    s
    y*
    s
    P
    xz
    P
    yz
    Проектор
    V
    z *
    (0,0,-
    )
    v
    Рисунок 5 – Пространственная сцена в левой системе координат
    Такой выбор геометрических параметров сцены делает координату глубины объекта положительной. Другими словами, удаление объекта от картинной плоскости получается положительным, что соответствует привычным пространственным представлениям. В литературе по компьютерной графике применяются и другие, в частности, левые системы координат, что будет учтено при дальнейшем изложении.
    3.2 Аффинные преобразования в пространстве
    Для описания динамики объекта в пространственной графике так же, как и в двумерной, используются аффинные преобразования.
    Общее описание аффинных преобразований пространства, переводящих точку из одной системы координат, например из СКО, где ее координаты

    32
    x, y, z , в другую систему координат, например, СКН, где точка получает координаты x*, y*, z*, имеет вид
    ,
    ,
    ,
    0 33 32 31 0
    23 22 21 0
    13 12 11


















    z
    z
    t
    y
    t
    x
    t
    z
    y
    z
    t
    y
    t
    x
    t
    y
    x
    z
    t
    y
    t
    x
    t
    x
    (3.1) где t
    ij
    ,



    0 0
    0
    ,
    ,
    z
    y
    x
    – коэффициенты, причем
    0 33 32 31 23 22 21 13 12 11

    t
    t
    t
    t
    t
    t
    t
    t
    t
    В пространственной графике также имеют особое значение частные случаи аффинных преобразований: сдвиг, поворот, масштабирование и отражение. По ранее упомянутым причинам к ним прибавляется проецирование. Оно не является аффинным, так как не сохраняет параллельности прямых линий, однако описывается аналогично с аффинными преобразованиями и потому рассматривается вместе с ними.
    При описании преобразований, как и ранее, удобно использовать матричное представление, для использования которого точка в пространстве должна описываться не тройкой, а четверкой координат. К этому и прибегают, вводя однородные координаты точки в пространстве:
    (x: y: z: 1), или в более общей форме – (xh: yh: zh: h), где h<>0 – скалярный множитель.
    Теперь общий вид аффинных преобразований выглядит так:
    ,
    1 1
    T
    z
    y
    x
    z
    y
    x





    (3.2) где Т – матрица преобразований.
    Для преобразования сдвига матрица Т имеет следующий вид (обозначена
    TR):

    33
    ,
    1 0
    1 0
    0 0
    0 1
    0 0
    0 0
    1 0
    0 0




    z
    y
    x
    TR
    где



    0 0
    0
    ,
    ,
    z
    y
    x
    – координаты начала СКО в СКН.
    Прежде чем привести матричное описание поворота, необходимо сделать ряд замечаний. Поворот объекта в пространстве наблюдателя представляется как поворот в СКН всей СКО, при этом вид (и описание) объекта в СКО не изменяется. В случае наклонного расположения СКО в
    СКН коэффициенты t
    ij
    в выражении (3.1) представляют собой направляющие косинусы осей СКО в СКН, то есть косинусы углов наклона каждой оси СКО относительно каждой оси СКН. На рисунке 6 показано наклонное расположение оси x СКО в СКН (x

    y

    z

    ). Направление вектора в трехмерной декартовой системе координат однозначно описывается тремя направляющими углами, на рисунке 6 они обозначены
    α, β, γ.
    z*
    y*
    x*
    x
    Поскольку СКО имеет три оси, ее положение в СКН однозначно описывают девять направляющих углов. На практике применяют не углы,
    Рисунок 6 – Задание направления вектора в декартовом пространстве

    34 а их косинусы, которые и называют направляющими косинусами. Таким образом, в выражении (3.1) t
    11
    – это косинус угла между осью x СКО и осью x* СКН, t
    12
    – косинус угла между осью x СКО и осью y* СКН и так далее в соответствии с таблицей 3.1.
    Таблица 3.1 Направляющие косинусы осей СКО в СКН
    Оси
    СКН
    Оси СКО
    x
    y
    z
    x

    t
    11
    t
    12
    t
    13
    y

    t
    21
    t
    22
    t
    23
    z

    t
    31
    t
    32
    t
    33
    Если известны направляющие косинусы желаемого наклона объекта в пространстве, то для его отображения координаты всех точек объекта умножаются на матрицу поворота
    1 0
    0 0
    0 0
    0 33 23 13 32 22 12 31 21 11
    t
    t
    t
    t
    t
    t
    t
    t
    t
    RT

    На практике наклон объекта часто задается с помощью трех углов поворота объекта вокруг собственных координатных осей: x
    (угол

    ), y
    (

    ), z
    (

    ), которые показаны на рисунке 7. Каждый угол считается положительным, если при наблюдении со стороны положительной полуоси он поворачивает объект против часовой стрелки. Определение сочетаний

    ,

    ,

    и соответствующих им значений направляющих косинусов при эволюциях объекта (или примитива) является отдельной,

    35 часто непростой задачей и относится к моделированию или расчету поведения объекта.
    Гораздо проще описывать повороты объекта в виде последовательности элементарных поворотов вокруг координатных осей. В этом случае для отработки каждого угла в (3.2) применяется своя матрица поворота – RT
    x
    ,
    RT
    y
    , RT
    z
    , а результат трех поворотов описывается суперпозицией указанных матриц. Вид матриц поворота зависит от выбора системы координат. Для правой СКН они имеют следующий вид:
    ,
    1 0
    0 0
    0
    cos sin
    0 0
    sin cos
    0 0
    0 0
    1






    x
    RT
    ,
    1 0
    0 0
    0
    cos
    0
    sin
    0 0
    1 0
    0
    sin
    0
    cos






    y
    RT
    z
    y
    x
    ψ
    φ
    θ
    Рисунок 7 – Углы поворота СКО вокруг своих координатных осей

    36
    ,
    1 0
    0 0
    0 1
    0 0
    0 0
    cos sin
    0 0
    sin cos






    z
    RT
    а для левой СКН выглядят немного по-другому:
    ,
    1 0
    0 0
    0
    cos sin
    0 0
    sin cos
    0 0
    0 0
    1






    x
    RT
    ,
    1 0
    0 0
    0
    cos
    0
    sin
    0 0
    1 0
    0
    sin
    0
    cos






    y
    RT
    1 0
    0 0
    0 1
    0 0
    0 0
    cos sin
    0 0
    sin cos






    z
    RT
    Следует отметить, что последовательность поворотов является критичной и при расстановке объектов (или примитивов) должна правильно выбираться
    Преобразование масштабирования в трехмерном пространстве относительно начала координат осуществляется диагональными элементами матрицы преобразования SC:
    ,
    1 0
    0 0
    0 0
    0 0
    0 0
    0 0
    0
    z
    y
    x
    k
    k
    k
    SC

    где k
    x
    , k
    y
    , k
    z
    - коэффициенты масштабирования по координатным осям.
    Нужно отметить, что в пространственной графике изменение размеров изображения объекта обычно является следствием удаления или

    37 приближения объекта по отношению к наблюдателю, то есть его перемещения по оси глубины. Чтобы реализовать этот эффект, нужно изображение на экранной плоскости формировать путем центрального проецирования точек объекта. При этом осуществляется перевод точки не из одной системы координат в другую, а из пространства x

    ,y

    ,z

    на экранную плоскость x

    y

    , лежащую в этом же пространстве, как это показано на рисунке 5. В результате находится экранный образ P
    S
    пространственной точки P на экране. Экранные координаты точки P
    S
    отметим нижним индексом s. Соответствующие алгебраические выражения при расположении центра проецирования в точке наблюдения
    V(0,0,


    v
    z
    ) выглядят следующим образом
    )
    1
    (
    *





    v
    s
    z
    z
    x
    x
    )
    1
    (
    *





    v
    s
    z
    z
    y
    y
    (3.3)
    0
    *

    s
    z
    Выражения легко выводятся из подобных треугольников рисунка 5, лежащих в плоскостях x

    z

    и y

    z

    . Точки P
    XZ
    , P
    YZ
    на рисунке представляют собой проекции точки Р на эти плоскости.
    Для матричного описания рассматриваемого здесь частного случая проецирования используют следующую матрицу преобразования:
    S
    S

    38 1
    0 0
    0 1
    0 0
    0 0
    0 1
    0 0
    0 0
    1
    


    




    v
    z
    PR
    Ее особенность в том, что с ее применением результат проецирования получается в однородных координатах со скалярным множителем, отличным от единицы. Действительно, умножив матрицу PR на матрицу- строку
    1



    z
    y
    x
    , получим координаты проекции точки на плоскость экрана в общей форме


    h
    h
    z
    h
    y
    h
    x
    s
    s
    s
    :
    :
    :



    :
    1
    ,
    0
    ,
    ,

    


    













    v
    s
    s
    s
    z
    z
    h
    h
    z
    y
    h
    y
    x
    h
    x
    Приводя координаты делением на h к декартовой форме





    s
    s
    s
    z
    y
    x
    ,
    ,
    , приходим к уже записанным выражениям (3.3), что говорит о правильной работе матрицы проецирования PR. При использовании этой матрицы нужно помнить, что значение

    v
    z
    в ней всегда положительно, так как представляет собой расстояние наблюдения экрана.
    Преобразование отражения
    (симметрии) в пространстве осуществляется относительно некоторой плоскости. Если это координатная плоскость, то матрица преобразований проста. Например, для симметрии относительно плоскости x

    y

    она имеет вид:
    1 0
    0 0
    0 1
    0 0
    0 0
    1 0
    0 0
    0 1


    xy
    RF
    Симметрия относительно произвольной плоскости производится путем сложных преобразований, осуществляющих

    39

    совмещение плоскости симметрии с одной из координатных плоскостей (для этого плоскость симметрии претерпевает два поворота вокруг координатных осей);

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

    возврат плоскости симметрии в исходное положение. При возврате нужно помнить, что операции поворота некоммутативны, то есть последовательность поворота вокруг координатных осей имеет решающее значение (она должна быть обратной по отношению к исходной).
    Сложные аффинные преобразования представляются в виде последовательности частных. Форма записи последовательности, как и в двумерной графике, зависит от формы представления координат точки: в виде матрицы-строки или матрицы-столбца. В случае использования матрицы-строки последовательность частных преобразований записывается слева направо.
    Пример 1. Пусть нужно найти на экране образ пространственной точки А с координатами (x
    A
    , y
    A
    , z
    A
    ) после ряда преобразований: перспективного проецирования, поворота проекции в плоскости экрана на угол β против часовой стрелки относительно центра С(x
    C
    , y
    C
    , z
    C
    ) и отражения относительно центра экрана. Координаты точки наблюдения экрана V равны (0,0,


    v
    z
    ), начало координат СКН расположено в центре экрана, координатные оси направлены вправо и вверх.
    Перечисленные в задании действия нужно описать с помощью суперпозиции матричных преобразований над однородными координатами точки А. На первом этапе выполняется перспективное проецирование точки на плоскость экрана. Оно обнуляет координату глубины точки, но от

    40 этого задача не перестает быть трехмерной, поэтому все преобразования будут описываться матрицами с размерностью 4×4. Поскольку в набор преобразований входит перспективное проецирование, результирующие координаты точки будут получены со значением скалярного множителя, отличным от 1, то есть в форме
    h
    h
    z
    h
    y
    h
    x
    sA
    sA
    sA



    Особое внимание нужно обратить на описание поворота. Судя по координатам точки V, в задании предусмотрена левая система координат наблюдателя x

    , y

    , z

    . Поворот проекции точки в плоскости экрана осуществляется вокруг оси z

    . Для правильной записи матрицы поворота его направление нужно оценивать со стороны положительной полуоси оси
    z

    , которая направлена от наблюдателя. В то же время направление поворота обычно задается наблюдателем и привязывается к экрану.
    Предположим, что в задании сделано именно так. Тогда поворот на угол β, который наблюдателем воспринимается как поворот против часовой стрелки, со стороны положительной полуоси z

    будет являться поворотом по часовой стрелке. Это означает, что в матрице поворота угол β является отрицательным и должен быть взят с отрицательным знаком.
    Известная матрица поворота RT
    z
    описывает поворот вокруг начала координат, тогда как в задании требуется иное. Как и в двумерной графике, поворот относительно произвольного центра приводится к повороту вокруг начала координат с помощью преобразования сдвига.
    После выполнения поворота этот сдвиг компенсируется обратным сдвигом повернутой точки.
    Последнее действие в задании – отражение проекции точки относительно центра экрана. В центре экрана размещено начало СКН, значит, отражение выполняется относительно начала координат.

    41
    Выполнение центральной симметрии можно представить как комбинацию трех отражений относительно трех координатных плоскостей, причем последовательность выполнения этих отражений неважна. С другой стороны, понимая сущность центральной симметрии, легко записать матрицу, выполняющую отражение как одно преобразование.
    Центральная симметрия изменяет значения всех трех координат точки на противоположные. При этом не важно, что отражение, по сути, осуществляется в плоскости экрана, а не в трехмерном пространстве – матрица все равно должна иметь общий вид.
    В результате запись геометрических преобразований, необходимых для выполнения задания, принимает вид:
     
     
     
     
    1 0
    0 0
    0 1
    0 0
    0 0
    1 0
    0 0
    0 1
    1 0
    1 0
    0 0
    0 1
    0 0
    0 0
    1 1
    0 0
    0 0
    1 0
    0 0
    0
    cos sin
    0 0
    sin cos
    1 0
    1 0
    0 0
    0 1
    0 0
    0 0
    1 1
    0 0
    0 1
    0 0
    0 0
    0 1
    0 0
    0 0
    1 1
















    


    














    C
    C
    C
    C
    C
    C
    v
    A
    A
    A
    sA
    sA
    sA
    z
    y
    x
    z
    y
    x
    z
    z
    y
    x
    h
    h
    z
    h
    y
    h
    x




    Для нахождения экранных координат точки А после преобразований ее однородные координаты, вычисленные по полученному выражению, нужно разделить на скалярный множитель.
    1   2   3   4


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