ГРАФИЧЕСКИЙ ИНТЕРФЕЙС ОПЕРАТОРА. Учебное пособие для студентов специальности 220301 Москва 2011 2 Содержание
Скачать 2.77 Mb.
|
4.3.7. Преобразования в 3-мерном пространстве Обратимся теперь к трехмерному случаю (3-Dimension,или 3D) и начнем рассмотрение сразу с введения однородных координат. Поступая аналогично тому, как это было сделано для размерности два, заменим координатную тройку (х, у, z), задающую точку в пространстве, на четверку чисел (х, у, z, 1) или, в более общем виде, на четверку (h x , h y , h z , h), h≠0. Каждая точка пространства (кроме начальной точки О) может быть задана четверкой одновременно не равных нулю чисел; эта четверка чисел определена однозначно с точностью до общего множителя. Предложенный переход к новому способу задания точек дает возможность воспользоваться матричной записью и в более сложных, трехмерных задачах. Любое аффинное преобразование в трехмерном пространстве может быть представлено в виде суперпозиции вращений, растяжений, отражений и переносов. Поэтому вполне уместно сначала подробно описать матрицы именно этих преобразований. Очевидно, что в данном случае порядок матриц должен быть равен четырем, поскольку помимо трех пространственных координат еще одну единицу размерности добавляет тот факт, что мы используем однородные координаты. Вращение в пространстве На рис. 64 показан поворот на угол φ в трехмерном пространстве некоего объекта (куба) вокруг оси абсцисс. Рис. 64. Поворот куба в трехмерном пространстве вокруг оси абсцисс 72 Такой поворот описывается в однородных координатах с помощью матрицы 4-го порядка: На рис. 65 показан поворот на угол ψ в трехмерном пространстве некоего объекта (куба) вокруг оси ординат. Рис. 65. Поворот куба в трехмерном пространстве вокруг оси ординат Такой поворот описывается в однородных координатах с помощью матрицы 4-го порядка: На рис. 66 показан поворот на угол χ в трехмерном пространстве некоего объекта (куба) вокруг оси аппликат. Рис. 66. Поворот куба в трехмерном пространстве на угол χ вокруг оси аппликат 1 0 0 0 0 cos sin 0 0 sin cos 0 0 0 0 1 x R 1 0 0 0 0 cos 0 sin 0 0 1 0 0 sin 0 cos y R 73 Такой поворот описывается в однородных координатах с помощью матрицы 4-го порядка: Замечание. Полезно обратить внимание на место знака "-" в каждой из трех приведенных матриц. Растяжение (сжатие), или масштабирование в пространстве Матрица растяжения (сжатия) в трехмерном пространстве в однородных координатах имеет следующий вид: 1 0 0 0 0 0 0 0 0 0 0 0 0 D , где α>0 – коэффициент растяжения (сжатия) вдоль оси абсцисс; δ>0 – коэффициент растяжения (сжатия) вдоль оси ординат; β > 0 – коэффициент растяжения (сжатия) вдоль оси аппликат. На рис. 67 показано растяжение объекта (куба). Рис. 67. Растяжение тела в пространстве Отражение в пространстве Матрица отражения относительно плоскости YOZ имеет вид: 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 x M 1 0 0 0 0 1 0 0 0 0 cos sin 0 0 sin cos z R 74 Рис. 68. Отражение относительно плоскости YOZ (изменяет знак только проекция на ось абсцисс x 1 ) На рис. 68 отраженный чайник условно окрашен в красный цвет для того, чтобы проще было отличить отражение от исходного изображения. В действительности при отражении цвет объекта не изменяется . Матрица отражения относительно плоскости XOZ имеет вид: 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 y M Перенос в пространстве Матрица переноса на величину λ по оси абсцисс, μ по оси ординат и ν – по оси аппликат имеет следующий вид: 1 0 1 0 0 0 0 1 0 0 0 0 1 T , где (λ, μ, ν) – вектор переноса. На рис. 69 показан перенос куба. 75 Рис. 69. Перенос тела в пространстве Замечание. Как и в двумерном случае, все выписанные матрицы невырожденные. Приведем важный пример построения матрицы сложного преобразования по его геометрическому описанию. 4.3.8. Примеры преобразований Пример. Построить матрицу вращения на угол φ вокруг прямой L, проходящей через точку А(а, b, с) и имеющую направляющий вектор (l, т, п). Можно считать, что направляющий вектор прямой является единичным: 1 2 2 2 n m l На рис. 70 схематично показано, матрицу какого преобразования требуется найти. Рис. 70. Поворот вокруг произвольной прямой в пространстве Решение сформулированной задачи разбивается на несколько шагов. Опишем последовательно каждый из них. 1-й шаг. Перенос на вектор -А(-а,-b,-с) при помощи матрицы 1 0 1 0 0 0 0 1 0 0 0 0 1 c b a T В результате этого переноса мы добиваемся того, чтобы прямая L проходила через начало координат. 76 2-й шаг. Совмещение оси аппликат с прямой L двумя поворотами вокруг оси абсцисс и оси ординат. Первый поворот – вокруг оси абсцисс на угол ψ(подлежащий определению). Чтобы найти этот угол, рассмотрим ортогональную проекцию L' исходной прямой L на плоскость X=0. Направляющий вектор прямой L' определяется просто – он равен (0, m, n). Отсюда сразу же вытекает, что , sin , cos d m d n где 2 2 n m d Соответствующая матрица вращения имеет следующий вид: 1 0 0 0 0 0 0 0 0 0 0 1 d n d m d m d n R x Под действием преобразования, описываемого этой матрицей, координаты вектора (l, m, n) изменятся. Подсчитав их, в результате получим ]. 1 , , 0 , [ ] 1 , , , [ d l R n m l x 3-й шаг.Второй поворот – вокруг оси ординат на угол θ, определяемый соотношениями: sin , 1 cos d Соответствующая матрица вращения записывается в следующем виде: 1 0 0 0 0 1 0 0 0 1 0 0 0 1 d d R y 4-й шаг. Вращение вокруг прямой L на заданный угол φ. Так как теперь прямая L совпадает с осью аппликат, то соответствующая матрица имеет следующий вид: 1 0 0 0 0 1 0 0 0 0 cos sin 0 0 sin cos z R 5-й шаг. Поворот вокруг оси ординат на угол –θ (возвращение). 6-й шаг. Поворот вокруг оси абсцисс на угол –ψ (возвращение). Замечание: Вращение в пространстве некоммутативно. Это значит, что, перемножив матрицы в другом порядке, получим другой результат! Поэтому порядок, в котором проводятся вращения, является весьма существенным. 77 7-й шаг. Перенос на вектор А(а,b,с). Перемножив найденные матрицы в порядке их построения, получим следующую матрицу: ) ( ) ( ) ( 1 1 1 T R R R R R T x y z y x Выпишем окончательный результат, считая для простоты, что ось вращения L проходит через начальную точку: 1 0 0 0 0 ) 1 ( cos sin ) cos 1 ( sin ) cos 1 ( 0 sin ) cos 1 ( ) 1 ( cos sin ) cos 1 ( 0 sin ) cos 1 ( sin ) cos 1 ( ) 1 ( cos 2 2 2 2 2 2 n n l n m m n l l n m m m n m l n m l n m l l l Рассматривая другие примеры подобного рода, мы будем получать в результате невырожденные матрицы вида: 1 0 0 0 3 2 1 3 2 1 3 2 1 A При помощи таких матриц можно преобразовывать любые плоские и пространственные фигуры. Пример. Требуется подвергнуть заданному аффинному преобразованию выпуклый многогранник. Для этого сначала по геометрическому описанию отображения находим его матрицу А. Замечая далее, что произвольный выпуклый многогранник однозначно задается набором всех своих вершин , , , 1 ), , , ( n i z y x V i i i i строим матрицу 1 1 1 1 1 n n n z y x z y x V Подвергая этот набор преобразованию, описываемому найденной невырожденной матрицей четвертого порядка V·A, мы получаем набор вершин нового выпуклого многогранника – образа исходного. 4.4. Проектирование Изображение объектов па картинной плоскости связано с еще одной геометрической, операцией – проектированием при помощи пучка прямых. 78 4.4.1. Виды проектирования В компьютерной графике используется несколько различных видов проектирования (иногда называемого также проецированием). Наиболее часто используемые на практике виды проектирования – это параллельное проектирование и центральное проектирование. Для получения проекции объекта на картинную плоскость необходимо провести через каждую его точку прямую из заданного проектирующего пучка (собственного или несобственного) и затем найти координаты точки пересечения этой прямой с плоскостью изображения. В случае центрального проектирования все прямые исходят из одной точки – центра собственного пучка C (рис. 71). При параллельном проектировании центр (несобственного) пучка считается лежащим в бесконечности (рис. 72). Рис. 71. Пример центральной проекции Рис 72. Пример параллельной проекции Каждый из этих двух основных классов разбивается на несколько подклассов в зависимости от взаимного расположения картинной плоскости и координатных осей. Некоторое представление о видах проектирования могут дать приводимые ниже схемы. Важное замечание. Использование для описания преобразований проектирования однородных координат и матриц четвертого порядка позволяет упростить изложение и зримо облегчает решение задач геометрического моделирования. 79 Рис. 73. Классификация параллельных проекций Рис. 74. Классификация центральных проекций 4.4.2. Ортографические проекции При ортографической проекции картинная плоскость совпадает с одной из координатных плоскостей или параллельна ей. Матрица проектирования вдоль оси X на плоскость YZ имеет вид: Параллельные проекции Аксонометрическая проекция Ортографическая проекция Косоугольная проекция Триметрическая проекция Диметрическая проекция Изометрическая проекция Свободная проекция Кабинетная проекция Трёхточечная проекция Двухточечная проекция Одноточечная проекция Перспективные (центральные) поверхности 80 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 x P В случае если плоскость проектирования параллельна координатной плоскости (рис. 75), необходимо умножить матрицу Р х на матрицу сдвига. В результате получаем: 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 1 p p P x Рис. 75. Случай ортографической проекции, когда картинная плоскость параллельна координатной плоскости ZOY Аналогично записываются матрицы проектирования вдоль двух других координатных осей: 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 и 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 r q Замечание. Все три полученные матрицы проектирования вырожденны. 4.4.3. Аксонометрические проекции При аксонометрической проекции проектирующие прямые перпендикулярны картинной плоскости. В соответствии с взаимным расположением плоскости проектирования и координатных осей различают три вида проекций: 1) триметрию – нормальный вектор картинной плоскости (КП) образует с ортами координатных осей попарно различные углы, а следовательно 81 различные углы образуются между ортами и их проекциями на КП, что и отображено на рис. 76; 2) диметрию – два угла между нормалью картинной плоскости и координатными осями равны, а следовательно равны два угла между этими же ортами и КП (рис. 77); 3) изометрию – все три угла между нормалью, картинной плоскости и координатными осями равны (рис. 78). Рис. 76. Триметрия Рис. 77. Диметрия Рис. 78. Изометрия Каждый из трех видов указанных проекций получается комбинацией поворотов, за которой следует параллельное проектирование. При повороте на угол ψ относительно оси ординат, на угол φ вокруг оси абсцисс и последующего проектирования вдоль оси аппликат получается матрица M: 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 cos sin 0 0 sin cos 0 0 0 0 1 1 0 0 0 0 cos 0 sin 0 0 1 0 0 sin 0 cos 1 0 0 0 0 0 cos sin sin 0 0 cos 0 0 0 sin sin cos M При этом единичные орты координатных осей X, Y, Z преобразуются следующим образом: 1 0 sin sin cos 1 0 0 1 M ; 1 0 cos 0 1 0 1 0 M ; 1 0 cos sin sin 1 1 0 0 M Диметрия характеризуется тем, что длины двух проекций совпадают: 2 2 2 2 cos sin sin cos Отсюда следует, что 2 2 sin tg В случае изометрии имеем: 2 2 2 2 cos sin sin cos , 2 2 2 2 cos cos sin sin Из последних двух соотношений вытекает, что 2 1 sin , 3 1 sin 2 2 x y z x y z x y z n n n 82 При триметрии длины проекций попарно различны. 4.4.4. Косоугольные проекции Проекции, для получения которых используется пучок прямых, не перпендикулярных плоскости экрана, принято называть косоугольными. При косоугольном проектировании орта оси Z на плоскость XY (рис. 79) имеем: (0 0 1 1) → (α β 0 1). Матрица соответствующего преобразования имеет следующий вид: 1 0 0 0 0 0 0 0 1 0 0 0 0 1 P Рис. 79. К понятию косоугольной проекции Выделяют два вида косоугольных проекций: свободную проекцию (угол наклона проектирующих прямых к плоскости экрана равен половине прямого) и кабинетную проекцию (частный случай свободной проекции – масштаб по третьей оси вдвое меньше). В случае свободной проекции 4 cos , в случае кабинетной проекции: 4 cos 2 1 |