На этом шаге мы рассмотрим некоторые преобразования координат.
Сначала рассмотрим общие вопросы преобразования координат. Пусть задана n-мерная система координат в базисе (k1, k2,.... kn),
описывающая положение точки в пространстве с помощью числовых значений ki. В компьютерной
графике чаще всего используется двумерная (n=2) и трехмерная (n=3) системы координат.
Если задать другую, N-мерную, систему координат в базисе (m1, m2,..., mN) и поставить
задачу определения координат в новой системе, зная координаты в старой, то решение (если оно существует) можно записать в таком виде:
где fi - функция пересчета i-й координаты, аргументы - координаты в системе ki.
Можно поставить и обратную задачу - по известным координатам m1, m2,..., mN определить
координаты k1, k2,.... kn. Решение обратной задачи запишем так:
где Fi - функции обратного преобразования.
В случае, когда размерности систем координат не совпадают (n <> N), осуществить однозначное преобразование координат зачастую не
удается. Например, по двумерным экранным координатам нельзя без дополнительных условий однозначно определить трехмерные координаты отображаемых объектов.
Если размерности систем совпадают (n = N), то также возможны случаи, когда нельзя однозначно решить прямую или обратную задачи.
Преобразование координат классифицируют:
- по системам координат - например, преобразование из полярной системы в прямоугольную;
- по виду функций преобразования fi.
По виду функций преобразования различают линейные и нелинейные преобразования. Если при всех i = 1, 2, ... , N
функции fi - линейные относительно аргументов (k1, k2,.... kn), то есть
fi = ai1k1+ ai2k2+ ... + ainkn+ ai,n+1
где ai,j - константы, то такие преобразования называются линейными, а при n = N - аффинными.
Если хотя бы для одного i функция f - нелинейная относительно (k1, k2,.... kn), тогда преобразование координат в целом не линейно.
Например, преобразование
X = 3х + 5y, Y = 4xy + 10y
нелинейное, так как в выражении для Y присутствует xy.
Линейные преобразования наглядно записываются в матричной форме:
Здесь матрица коэффициентов (аij) умножается на матрицу-столбец (ki) и в результате получается матрица-столбец (mi).
Напомним некоторые факты из алгебры матриц. Для двух матриц А размером (m*n) и В размером (n*p):
произведением матриц является матрица С = А*В размером (m*p):
для которой элементы cij вычисляются по формуле:
Правило вычисления элементов матрицы С можно легко запомнить по названию "строка на столбец". И действительно, для вычисления
любого элемента cij необходимо умножить элементы i-й строки матрицы А на элементы j-го столбца матрицы В.
Произведение матриц определено только для случая, когда количество столбцов матрицы А равно количеству строк матрицы В.
Вернемся к преобразованиям координат. Рассмотрим более подробно некоторые отдельные типы преобразований.
На следующем шаге мы рассмотрим аффинные преобразования на плоскости.