Автор работы: Пользователь скрыл имя, 12 Ноября 2014 в 10:23, реферат
Компьютерная геометрия есть математический аппарат, положенный в основу компьютерной графики. В свою очередь, основу компьютерной геометрии составляют различные преобразования точек и линий. При использовании машинной графики можно по желанию изменять масштаб изображения, вращать его, смещать и трансформировать для улучшения наглядности перспективного изображения. Все эти преобразования можно выполнить на основе математических методов, которые мы будем рассматривать далее.
Рис. 3.5. Вращение: a — вокруг оси х; б — вокруг оси y; в — вокруг оси z
Рассмотрим трехмерную декартовую систему координат, являющуюся правосторонней. Примем соглашение, в соответствии с которым будем считать положительными такие повороты, при которых (если смотреть с конца полуоси в направлении начала координат) поворот на 90° против часовой стрелки будет переводить одну полуось в другую. На основе этого соглашения строится следующая таблица, которую можно использовать как для правых, так и для левых систем координат:
Если ось вращения |
Положительным будет направление поворота |
X |
От y к z |
Y |
От z к x |
Z |
От x к y |
Рис. 3.6. Трехмерная система координат
Аналогично тому, как точка на плоскости описывается вектором (x,y), точка в трехмерном пространстве описывается вектором (x,y,z).
Как и в двухмерном случае, для возможности реализаций трехмерных преобразований с помощью матриц перейдем к однородным координатам:
[x,y,x,1] или [X,Y,Z,H]
[x*,y*,z*1] = [ ], где Н¹1, Н ¹0.
Обобщенная матрица преобразования 4´4 для трехмерных однородных координат имеет вид
Т=
Эта матрица может быть представлена в виде четырех отдельных частей:
Рассмотрим воздействие матрицы 4´4 на однородный вектор [x,y,z,1]:
1. Трехмерный перенос – является простым расширением двумерного:
T(Dx,Dy,Dz)=
т. е. [x,y,z,1]*T(Dx,Dy,Dz)=[x+Dx,y+
2. Трехмерное изменение масштаба.
Рассмотрим частичное изменение масштаба. Оно реализуется следующим образом:
S(Sx,Sy,Sz,1)=
т. е. [x,y,z,1]*S(Sx,Sy,Sz)=[Sx*x,
Общее изменение масштаба получается за счет 4-го диагонального элемента, т. е.
[x y z 1] * = [x y z S] = [x* y* z* 1] = [ ].
Такой же результат можно получить при равных коэффициентах частичных изменений масштабов. В этом случае матрица преобразования такова:
S=
3. Трехмерный сдвиг
Недиагональные элементы матрицы 3´3 осуществляют сдвиг в трех измерениях, т. е.
[x y z 1]* =[x+yd+hz, bx+y+iz, cx+fy+z, 1].
4. Трехмерное вращение
Двухмерный поворот, рассмотренный ранее, является в то же время трехмерным поворотом вокруг оси Z . В трехмерном пространстве поворот вокруг оси Z описывается матрицей
Rz(
Матрица поворота вокруг оси X имеет вид
Rx(
Матрица поворота вокруг оси Y имеет вид
Ry(
Результатом произвольной последовательности поворотов вокруг осей x, y, z является матрица
А=
Подматрицу 3´3 называют ортогональной, так как ее столбцы являются взаимно ортогональными единичными векторами.
Матрицы поворота сохраняют длину и углы, а матрицы масштабирования и сдвига нет.
В общем случае проекции преобразуют точки, заданные в системе координат размерностью n, в системы координат размерностью меньше чем n.
Будем рассматривать случай проецирования трех измерений в два. Проекция трехмерного объекта (представленного в виде совокупности точек) строится при помощи прямых проекционных лучей, которые называются проекторами и которые проходят через каждую точку объекта и, пересекая картинную плоскость, образуют проекцию.
Определенный таким образом класс проекций существует под названием плоских геометрических проекций, так как проецирование производится на плоскость, а не на искривленную поверхность и в качестве проекторов используются прямые, а не кривые линии.
Многие картографические проекции являются либо не плоскими, либо не геометрическими.
Плоские геометрические проекции в дальнейшем будем называть просто проекциями.
Проекции делятся на два основных класса (рис. 3.7):
Полная
классификация проекций
Рис. 3.8. Классификация проекций
Параллельные проекции делятся на два типа в зависимости от соотношения между направлением проецирования и нормалью к проекционной плоскости (рис. 3.9.):
Рис. 3.9. Ортографические и косоугольные проекции
Наиболее широко используемыми видами ортографических проекций является вид спереди, вид сверху(план) и вид сбоку, в которых картинная плоскость перпендикулярна главным координатным осям. Если проекционные плоскости не перпендикулярны главным координатным осям, то такие проекции называются аксонометрическими.
При аксонометрическом проецировании сохраняется параллельность прямых, а углы изменяются; расстояние можно измерить вдоль каждой из главных координатных осей (в общем случае с различными масштабными коэффициентами).
Изометрическая проекция – нормаль к проекционной плоскости, (а следовательно и направление проецирования) составляет равные углы с каждой из главных координатных осей. Если нормаль к проекционной плоскости имеет координаты (a,b,c), то потребуем, чтобы |a| = |b| = |c|, или ±a=±b=±c, т. е. имеется 8 направлений (по одному в каждом из октантов), которые удовлетворяют этому условию. Однако существует лишь 4 различных изометрических проекции (если не рассматривать удаление скрытых линий), так как векторы (a, a, a) и (-a,-a,-a) определяют нормали к одной и той же проекционной плоскости.
Изометрическая проекция (рис. 3.10.) обладает следующим свойством: все 3 главные координатные оси одинаково укорачиваются. Поэтому можно проводить измерения вдоль направления осей с одним и тем же масштабом. Кроме того, главные координатные оси проецируются так, что их проекции составляют равные углы друг с другом (120°).
Рис. 3.10. Изометрическая проекция единичного куба
Косоугольные (наклонные) проекции сочетают в себе свойства ортографических проекций (видов спереди, сверху и сбоку) со свойствами аксонометрии. В этом случае проекционная плоскость перпендикулярна главной координатной оси, поэтому сторона объекта, параллельная этой плоскости, проецируется так, что можно измерить углы и расстояния. Проецирование других сторон объекта также допускает проведение линейных измерений (но не угловых) вдоль главных осей. Отметим, что нормаль к проекционной плоскости и направление проецирования не совпадают.
Двумя важными видами косоугольных проекций являются проекции:
Рис. 3.11. Проекция Кавалье
В проекции Кавалье (рис. 3.11.) направление проецирования составляет с плоскостью угол 45°. В результате проекция отрезка, перпендикулярного проекционной плоскости, имеет ту же длину, что и сам отрезок, т. е. укорачивание отсутствует.
Рис. 3.12. Проекция Кабине
Проекция Кабине (рис. 3.12.) имеет направление проецирования, которое составляет с проекционной плоскостью угол = arctg(½) (≈26,5°). При этом отрезки, перпендикулярные проекционной плоскости, после проецирования составляют ½ их действительной длины. Проекции Кабине являются более реалистическими, чем проекции Кавалье, так как укорачивание с коэффициентом ½ больше согласуется с нашим визуальным опытом.
Центральная проекция любой совокупности параллельных прямых, которые не параллельны проекционной плоскости, будет сходиться в точке схода. Точек схода бесконечно много. Если совокупность прямых параллельна одной из главных координатных осей, то их точка схода называется главной точкой схода. Имеются только три такие точки, соответствующие пересечениям главных координатных осей с проекционной плоскостью. Центральные проекции классифицируются в зависимости от числа главных точек схода, которыми они обладают, а следовательно и от числа координатных осей, которые пересекают проекционную плоскость.
1. Одноточечная проекция (рис. 3.13).
Рис. 3.13. Одноточечная перспектива
2. Двухточечная проекция широко применяется в архитектурном, инженерном и промышленном проектировании.
3. Трехточечные центральные проекции почти совсем не используются, во-первых, потому, что их трудно конструировать, а во-вторых, из-за того, что они добавляют мало нового с точки зрения реалистичности по сравнению с двухточечной проекцией.
Каждую из проекций можно описать матрицей 4´4. Этот способ оказывается удобным, поскольку появляется возможность объединить матрицу проецирования с матрицей преобразования.
Центральная (перспективная) проекция получается путем перспективного преобразования и проецирования на некоторую двухмерную плоскость «наблюдения». Перспективная проекция на плоскость Z = 0 обеспечивается преобразованием
[X Y Z H] = [x y z 1]* = [x y 0 (rz+1)].
Рис. 3.14. Вычисление одноточечной перспективы
или x* = = ;
y* = = ;
z* = = ,
где r = .
Центр проекции находится в точке с координатами (0,0,-k) (рис.3.14.), плоскость проецирования Z = 0. Соотношения между x, y и x*, y* остаются теми же самыми. Рассматривая подобные треугольники, получим, что
аналогично y* = .
Координаты x*, y* являются преобразованными координатами. В перспективном проектировании преобразованное пространство не является евклидовым, так как ортогональность осей не сохраняется. При k = ¥ получим аксонометрическое преобразование.
Аффинное преобразование есть комбинация линейных преобразований, сопровождаемых переносом.
Последний столбец в обобщенной матрице 4´4 должен быть равен , в этом случае H = 1.
Перспективному преобразованию может предшествовать произвольная последовательность аффинных преобразований. Таким образом, чтобы получить перспективные изображения из произвольной точки наблюдения вначале используют аффинные преобразования, позволяющие сформировать систему координат с осью Z вдоль желаемой линии визирования. Затем применяется перспективное преобразование.
Аналогично перспективное преобразование, когда картинная плоскость перпендикулярна оси Z и совпадает с плоскостью Z = 1/r. Центр проекции находится в центре координат:
[X Y Z H] = [x y z 1] * = [x y z (rz+1)] — одноточечная перспектива (точка схода Z);
Двухточечная (угловая) перспектива. Для получения двухточечной перспективы в общей матрице преобразования устанавливают коэффициенты p и q:
(x', y', z', 1) = (x, y, z, 1) =[x, y, 0, (px+qu+1)];
(x', y', z', 1) = .
Такое преобразование приводит к двум точкам схода. Одна расположена на оси X в точке ( , 0, 0, 1), другая на оси Y в точке (0, , 0, 1).
Рассмотрим это преобразование на получение проекции единичного куба (рис. 3.15.).
Рис. 3.15. Единичный куб для получения двухточечной проекции
.
В результате получаем проекцию вида, представленного на рис. 3.16.
Рис. 3.16. Двухточечная проекция единичного куба
=[x y z (px+qy+rz+1)] — трехточечная (косая) перспектива.
Для того чтобы создать диметрическую проекцию, необходимо выполнить следующее условие:
sin2φ=sin2θ/(1- sin2θ).
Одним способом выбора sinθ является сокращение оси Z в фиксированное число раз. При этом единичный вектор на оси Z, равный [0 0 1 1], преобразовывается к виду
[X Y Z H] = [sinφ -cosφ×sinθ cosφ×cosθ 1]
или x* = sinφ;
y*= - cosφ sinθ.
Таким образом, для диметрической проекции получаем
φ = 20,705°:
θ = 22,208°.
Для образования изометрической проекции нужно в одинаковое число раз сократить все три оси. Для этого необходимо, чтобы выполнялось условие
sin2φ=sin2θ/(1- sin2θ) и sin2φ=(1-2sin2θ)/(1- sin2θ).
Таким образом,
φ = 35,26439°;
θ = 45°.
Рассмотрим теперь косоугольную проекцию (рис. 3.17.), матрица может быть записана исходя из значений a и l.
Проекцией точки P(0,0,1) является точка P¢(l cosa, l sina, 0), принадлежащая плоскости xy. Направление проецирования совпадает с отрезком РР¢, проходящим через две эти точки. Это направление есть Р¢-Р = (l cosa, l sina, -1). Направление проецирования составляет угол b с плоскостью xy.
Теперь рассмотрим проекцию точки x, y, z и определим ее косоугольную проекцию (xp yp) на плоскости xy:
xp = x + z(l cosa);
yp = y + z(l sina).
Таким образом, матрица 4´4, которая выполняет эти действия и, следовательно, описывает косоугольную проекцию, имеет вид
Мкос= .
Рис. 3.17. Вычисление косоугольных проекций
Применение матрицы Мкос приводит к сдвигу и последующему проецированию объекта: плоскости с постоянной координатой z = z1 переносятся в направлении x на z1 l cosa и в направлении y на z1 l sina и затем проецируется на плоскость z = 0. Сдвиг сохраняет параллельность прямых, а также углы и расстояния в плоскостях, параллельных оси z.