Параллельное проектирование
АФФИННЫЕ ПРЕОБРАЗОВАНИЯ НА ПЛОСКОСТИ
Аффинное отображение - такое отображение плоскости (пространства) на другую плоскость (пространство), при котором каждая прямая отображается в прямую (рис.1). Аффинное преобразование есть аффинное отображение плоскости на себя.
Математический аппарат аффинных преобразований лежит в основе построения изображений в компьютерной графике.
Преобразование, которое переводит точку М (x,y) в другую точку М*(x*,y*), (рис.2), задается формулами x* = a x + b y + l (11) y* = g x + d y + m
где a, b, l, g, d, m - произвольные числа, связанные неравенством: a b ¹ 0 G d
В аффинных преобразованиях на плоскости особую роль играют несколько важных частных случаев, имеющих четкую геометрическую интерпретацию, а именно:
а). Поворот вокруг начальной точки на угол j (рис. 3). x* = x cos j - y sin j (21) y* = x sin j + y cos j
б). Растяжение (сжатие) вдоль координатных осей (рис. 4). x* = a x (31) y* = d y Для растяжения: a > 1; d > 1; для сжатия: 1 > a > 0; 1 > d > 0.
в). Отражение относительно оси абсцисс (рис. 5).
x* = x (41) y* = - y
г). Перенос (рис. 6). x* = x + l (51) y* = y + m где l, m - координаты вектора переноса М М*.
ОДНОРОДНЫЕ КООРДИНАТЫ ТОЧКИ
Однородными координатами точки М(x,y) называется любая тройка одновременно не равных нулю чисел x 1, x 2, x 3, связанных с заданными координатами (x,y) следующими соотношениями: x 1 /x 3 = x; x 2 /x 3 =y; (61) То есть, в общем случае однородные координаты точки можно представить тройкой (hx, hy, h). При решении задач компьютерной графики обычно используется частный случай, а именно: произвольной точке М (x,y) на плоскости ставится в соответствие точка М*(x,y,1) в пространстве (рис. 7).
При помощи троек однородных координат и матриц третьего порядка можно описать любое аффинное преобразование плоскости.
АФФИННЫЕ ПРЕОБРАЗОВАНИЯ В ПРОСТРАНСТВЕ
Аналогично тому, как это было сделано для двумерного случая, заменим координатную тройку (x, у, z), задающую точку в пространстве, на четверку (x, у, z, 1) или в общем виде на (hx, hy, hz, 1), где h ¹ 0. Можно показать, что любое аффинное преобразование в трехмерном пространстве может быть представлено в виде комбинации поворотов, растяжений (сжатий), отражений и переносов. Выпишем все матрицы, определяющие эти преобразования:
А. Матрицы поворота в пространстве Матрица поворота вокруг оси абцисс на угол j: 1 0 0 0 R x = 0 cos j sin j 0 (1) 0 - sin j cos j 0 0 0 0 1
Матрица поворота вокруг оси ординат на угол y: cos y 0 - sin y 0 R y = 0 1 0 0 (2) sin y 0 cos y 0 0 0 0 1
Матрица поворота вокруг оси аппликат на угол c: cos c sin c 0 0 R z = - sin c cos c 0 0 (3) 0 0 1 0 0 0 0 1
Б. Матрица растяжения (сжатия)
a 0 0 0 D = 0 b 0 0 (4) 0 0 g 0 0 0 0 1
где a, b, g - коэффициенты растяжения (сжатия) вдоль осей абсцисс, ординат и аппликат, соответственно.
В. Матрицы отражения:
Матрица отражения относительно плоскости XY: 1 0 0 0 М z = 0 1 0 0 (5) 0 0 - 10 0 0 0 1
Матрица отражения относительно плоскости YZ:
- 1 0 0 0 М x = 0 1 0 0 (6) 0 0 10 0 0 0 1
Матрица отражения относительно плоскости ZX: 1 0 0 0 М y = 0 - 1 0 0 (7) 0 0 10 0 0 0 1
Г. Матрица переноса 1 0 0 0 T = 0 1 0 0 (8) 0 0 10 l m n 1
где (l, m, n) - вектор переноса. Матрицы (1 ¸ 8) отражают простейшие геометрические преобразования точки в пространстве. Матрица сложного аффинного преобразования получается в результате перемножения такого рода матриц и имеет в общем случае вид:
a1 a2 a3 0 P = b1 b2 b3 0 (9) g1 g2 g3 0 l m n 1
При помощи указанных матриц можно преобразовывать любые пространственные тела, заданные множеством вершин, соединенных отрезками прямых.
Пусть требуется подвергнуть заданному аффинному преобразованию выпуклый многогранник, имеющий n вершин (рис. 1). Матрица, однозначно описывающая такое тело, имеет вид:
x 1 y 1 z 1 1 x 2 y 2 z 2 1 V 0 =.... (10) .... x n y n z n 1
где x i, y i, z i - координаты i - й вершины. По геометрическому описанию преобразования находим его матрицу P. Тогда новый выпуклый многогранник описывается набором вершин:
x 1 * y 1 * z 1 * 1 x 2 *y 2 *z 2 * 1 V* = V 0 * P =.... (11) .... x n *y n * z n * 1 ВИДЫ ПРОЕКТИРОВАНИЯ
Так как экран дисплея представляет собой двумерное пространство, мы можем изобразить только проекции трехмерных объектов, а не сами объекты. Задача состоит в том, чтобы определить проекцию каждой точки объекта, расположенного в произвольном месте трехмерного пространства, на некоторую плоскость в этом пространстве, называемую картинной плоскостью. Изображение объектов на картинной плоскости связано с еще одной геометрической операцией - проектированием с помощью пучка прямых. В компьютерной графике используется несколько видов проектирования. Наиболее часто встречается проектирование центральное (перспективное) и параллельное. Для получения проекции объекта на картинную плоскость необходимо провести через каждую его точку прямую из заданного проектирующего пучка и затем найти координаты точки пересечения этой прямой с плоскостью изображения. В случае центрального проектирования все прямые исходят из одной точки - центра пучка (рис. 2). При параллельном проектировании центр пучка считается лежащим в бесконечности (рис. 3).
Каждый из этих двух основных классов разбивается на несколько подклассов в зависимости от взаимного расположения картинной плоскости и координатных осей. Классификация параллельных и центральных (перспективных) проекций приводится на рис.4 и рис.5, соответственно.
ПАРАЛЛЕЛЬНОЕ ПРОЕКТИРОВАНИЕ
Как видно из рис.4, среди параллельных проекций различают ортографическую, аксонометрическую и косоугольную. При ортографической проекции картинная плоскость совпадает с одной из координатных плоскостей (рис.6) или параллельна ей (рис.7). Проектирующие прямые перпендикулярны картинной плоскости.
Так как проектирование можно рассматривать как вид геометрических преобразований, для его описания в задачах компьютерной графики используются однородные координаты и матрицы четвертого порядка. В частности, для ортографической проекции матрица проектирования вдоль оси X на плоскость YZ имеет вид: 0 0 0 0 P x = 0 1 0 0 (12) 0 0 1 0 0 0 0 1
Если картинная плоскость параллельна координатной плоскости и перенос составляет величину l (рис.7), необходимо умножить матрицу P x на матрицу переноса (8), учитывая при этом, что m = 0 и n = 0. 1 0 0 0 0 0 0 0 P xl = P x * 0 1 0 0 = 0 1 0 0 (13) 0 0 1 0 0 0 1 0 l 0 0 1 l 0 0 1
Аналогично для матриц проектирования вдоль двух других координатных осей: 1 0 0 0 P ym = 0 0 0 0 (14) 0 0 1 0 0 m 0 1
1 0 0 0 P zn = 0 1 0 0 (15) 0 0 0 0 0 0 n 1
При аксонометрической проекции проектирующие прямые перпендикулярны картинной плоскости, а сама картинная плоскость образует с осями координат ненулевые углы. Если все три угла различны между собой - проекция триметрическая; если два угла из трех равны - проекция диметрическая; если равны все три угла - проекция изометрическая. Каждый из трех видов указанных проекций получается комбинацией поворотов, за которой следует параллельное проектирование. Так, например, при повороте на угол y относительно оси ординат (2), на угол j вокруг оси абсцисс (1) и при последующем проектировании вдоль оси аппликат (15) необходимо построить матрицу:
cos y 0 - sin y 0 1 0 0 0 1 0 0 0 М = 0 1 0 0 * 0 cos j sin j 0 * 0 1 0 0 (16) sin y 0 cos y 0 0 - sin j cos j 0 0 0 0 0
0 0 0 1 0 0 0 1 0 0 n 1
Проекции, для получения которых используется пучок прямых, не перпендикулярных картинной плоскости, называют косоугольными. Среди них различают свободную проекцию, когда угол наклона проектирующих прямых к картинной плоскости равен половине прямого, и кабинетную проекцию, когда требуется еще, чтобы масштаб по одной из осей был вдвое меньше, чем по двум остальным осям.
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|