Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспек лекций по дисциплине.docx
Скачиваний:
8
Добавлен:
09.02.2015
Размер:
2.34 Mб
Скачать
  1. Координаты и преобразования

Описание, конструирование, манипулирование и представление геометрических объектов являются центральными работами в графических системах. Их поддержка в требуемом объеме за счет соответствующих математических методов, алгоритмов и программ оказывают существенное влияние на возможности и эффективность графической системы. В данном разделе будут рассмотрены математические методы для описания геометрических преобразований координат в двух и трехмерном случае, будут обсуждены некоторые вопросы эффективности, рассмотрены геометрические преобразования растровых картин.

Далее большими буквами x, y, z будут обозначаться обычные декартовые координаты, а маленькие буквы X, Y, Z будут использоваться для обозначения т.н. однородных координат.

  1. Двумерные геометрические преобразования

Параллельный перенос

Параллельный перенос в плоском случае имеет вид:

x` = x + Dx

y` = y + Dy

[x’, y’] = [x, y] + [Dx, Dy]

P’ P T

или в векторной форме:

P`=P+T,

где P`= [x` y`] - вектор-строка преобразованных координат,

где x, y - исходные координаты точки, Tx, Ty - величина сдвига по осям, x`, y` - преобразованные координаты. P= [x y] - вектор-строка исходных координат,P`= [x` y`] - вектор-строка преобразованных координат,T= [Tx Ty] - вектор-строка сдвига.

Масштабирование

Преобразование масштабирования относительно начала координат имеет вид:

x` = x Sx

y` = y Sy или

Sx 0

[x`, y`] = [x, y] 

0 Sy

P` P

S

или в матричной форме:

P` = P ·S,

где Sx, Sy - коэффициенты масштабирования по осям, а

S - матрица масштабирования

Поворот

Преобразование поворота относительно начала координат имеет вид:

x`= xcos(φ) – ysin(φ)

y`= xsin(φ) + ycos(φ)

или

cos(φ) sin(φ)

[x`, y`] = [x, y] 

–sin(φ) cos(φ)

P` P

R

Где R– матрица поворота

φ – положительный угол поворота

или в матричной форме:

P` = P ·R,

Столбцы и строки матрицы поворота представляют собой взаимно ортогональные единичные векторы. В самом деле квадраты длин векторов-строк равны единице:

cos·cos+sin·sin= 1 и

(-sin) ·(-sin)+cos·cos= 1,

а скалярное произведение векторов-строк есть

cos·(-sin) + sin·cos= 0.

Так как скалярное произведение векторов A·B=A·B·cos, гдеA- длина вектораA,B- длина вектораB, а- наименьший положительный угол между ними, то из равенства скалярного произведения двух векторов-строк длины 1 следует, что угол между ними равен 90.

Аналогичное можно показать и для векторов-столбцов. Кроме того вектора-столбцы представляют собой такие единичные векторы, которые после выполнения преобразования, заданного этой матрицей, совпадут с осями. В самом деле, произведение первого столбца на матрицу есть

cos

-sin

·

cos

sin

=

1

0

,

-sin

cos

т.е. это единичный вектор вдоль оси X. Аналогично, произведение второго столбца на матрицу даст вектор [ 0 1 ]. Это позволяет сформировать матрицу, если известны результаты преобразования.

Преобразование в однородную систему координат

Как видно двумерные преобразования имеют различный вид. Сдвиг реализуется сложением, а масштабирование и поворот - умножением. Это различие затрудняет формирование суммарного преобразования и устраняется использованием двумерных однородных координат точки, имеющих вид:

[ X Y W].

Здесь W - произвольный множитель не равный 0.

Двумерные декартовые координаты точки получаются из однородных делением на множитель W:

x = X / W, y = Y / W, W 0

Однородные координаты можно представить как промасштабированные с коэффициентом W значения двумерных координат, расположенные в плоскости с Z = W.

В силу произвольности значения W в однородных координатах не существует единственного представления точки, заданной в декартовых координатах.

Преобразования параллельного переноса, масштабирования и поворота в однородных координатах относительно центра координат все имеют одинаковую форму произведения вектора исходных координат на матрицу преобразования.

Будем брать W=1.

Параллельный перенос:

1 0 0

[X`, Y`, 1]=[X, Y, 1] 0 1 0

Dx Dy 1

Перемножив, получим: [X+Dx,Y+Dy, 1].

Масштабирование:

P` = PS; где

Поворот:

Рё = РR; где